Files
ConformalLabpp/doc/roadmap/phase-orchestration.md
Tarik Moussa fc77afc55f
All checks were successful
C++ Tests / test-fast (pull_request) Successful in 2m28s
C++ Tests / quality-gates (pull_request) Has been skipped
C++ Tests / test-cgal (pull_request) Has been skipped
docs(roadmap): add phase orchestration system mirroring the reviewer audit workflow
Brings doc/roadmap/ to the same operational level as doc/reviewer/ by adding
the two missing structural files and updating existing docs to close the gap
identified in the system review.

New files:
- doc/roadmap/phase-orchestration.md  — master phase table (model assignments,
  session IDs, status, review-gate checklist); mirrors finding-orchestration.md
- doc/roadmap/session-prompts.md      — copy-paste-ready prompts for P1–P4
  (Haiku/Sonnet/Opus) + universal Opus review gate; mirrors reviewer/session-prompts.md

Updated files:
- CLAUDE.md: roadmap section now lists porting-status.md, phase-orchestration.md,
  session-prompts.md; reviewer section adds finding-orchestration.md and
  session-prompts.md; agentic-workflow section has direct "S3 is next / P1 is next"
  entry points so agents don't need to derive the next action from scratch
- doc/roadmap/phases.md: Current-focus table at the top (7 tracks, next session
  per track, gating); cross-links to geometry-central-comparison.md,
  software-landscape.md, complexity.md added in GC and 9b-analytic sections
- doc/roadmap/porting-status.md: snapshot date updated to 2026-05-31 (post S1+S2);
  test count replaced by reference to doc/api/tests.md; §4 gains four new solver
  rows (newton_core refactor, NewtonStatus enum, diagnostics, selectable clamp mode);
  §7 gains four new research-extension rows from S1/S2
- doc/roadmap/research-track.md: header companion-docs section links to
  novelty-statement.md, software-landscape.md, and phase-orchestration.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 00:52:02 +02:00

9.2 KiB
Raw Permalink Blame History

Phase Orchestration — Sessions × Models × Review Gates

Updated: 2026-06-01 Purpose: structured plan to work through roadmap phases across multiple short sessions, each run by the model best suited to the work, with an external Opus reviewer session after every implementation session. Mirrors the audit workflow in doc/reviewer/finding-orchestration.md.

Ready-to-paste prompts for every pending session (P1P4 + review gate) live in session-prompts.md — copy one block, set the named model, go.


How to use this

  1. Pick the next pending session from the sequence.
  2. Start a session with the assigned model, point it at the phase details in phases.md and (for research items) research-track.md. Each phase entry has a Java reference, a mathematical source, and acceptance criteria.
  3. When it finishes, start the paired 🔍 Opus review session — it validates the diff (correctness, gradient checks, no parity regression) and only then is the batch "done".
  4. Mark the session here and move on.

Rationale: same as the audit system — Haiku/Sonnet for well-specified work, Opus reserved for math/architecture work and the review gate.


Model-assignment heuristic

Model Take phases that are… Examples
Haiku mechanical Java ports, local CLI additions, doc-only, no new math 9g.1 (quality measures), 9h.1/9h.2 (CLI), 9d.3 (Stereographic port)
Sonnet medium Java ports or research with explicit acceptance criteria 9e (CirclePatternLayout), Phase 12 (Decorated DCE)
Opus math derivations, architecture decisions, all 🔍 review gates 9b-analytic (Schläfli Hessian), 9c (genus > 1), all reviews

Decision rule isn't "how large" but "how much must be understood to get it right." A mechanical 600-line Java port can be Haiku; a 200-line numerical reformulation needs Opus.


Master phase table

Status: done · open (actionable) · ⏸ deferred/gated · blocked · 👤 needs reviewer input

Phase Focus Effort Sev Status Model Session
9h.1 Newton CLI params (--tol, --max-iter) 30 min 🔵 Haiku→🔍Opus P1
9h.2 Phase 9a models in CLI (-g cp_euclidean, -g inversive_distance) 24 h 🔵 Haiku→🔍Opus P1
9g.1 Conformal quality measures (conformal_quality.hpp) ~3 days 🟡 Haiku→🔍Opus P1
9d.3 StereographicUnwrapper port ~3 days 🟡 Haiku→🔍Opus P1
12 Decorated DCE & geometric transition medium 🔴 Sonnet→🔍Opus P2
9e CirclePatternLayout + CirclePatternUtility medium 🟡 Sonnet→🔍Opus P3
9d.4 MobiusCenteringFunctional (variational Möbius centring) medium 🟡 Sonnet→🔍Opus P3
9g.2 Period-matrix convergence study (experiment test) ~3 days 🔵 Sonnet→🔍Opus P3
GC-1 geometry-central cross-validation small 🔵 Sonnet→🔍Opus (after reviewer Q5)
9d.1 ConesUtility port (Euclidean cone singularities) medium 🟡 Sonnet→🔍Opus (after reviewer Q1)
9d.2 Non-Euclidean cone extensions (RESEARCH) large 🟡 Opus (after reviewer Q1)
9f Polygon Laplacian (RESEARCH, no Java parent) medium 🟡 Sonnet/Opus (after reviewer Q1)
9b-analytic Analytic HyperIdeal Hessian via Schläfli 1014 days 🔴 Opus P4 (after reviewer Q3)
9c 4g-polygon fundamental domain (genus g > 1) ~5 weeks 🔴 Opus P5 (after reviewer Q4 + G0)
10a Holomorphic/harmonic 1-forms + DEC layer ~6 weeks 🔴 Opus P6 (after 9c)
10b Siegel period matrix Ω ∈ H_g ~1 week 🟡 Opus P6 (after 10a)
10c Full genus-g≥2 uniformization large 🔴 Opus P7 (after 10b)
13 Canonical tessellations + polyhedral realisation (Chain B capstone) very large 🔴 Opus P8 (after 10c)
A4, A5 (public naming) CGAL entry-point renames + Circle_packing_result unification 🟡 Opus S6 in audit system (after G0)

Session sequence

P1 — Quick wins (Haiku → 🔍 Opus)

Four independent items, all with well-specified acceptance criteria and no new math. Can run in one batch or as two sub-sessions (9h.1+9h.2 first as a ~half-day warmup, then 9g.1+9d.3 as a ~1-week batch).

  • 9h.1--tol and --max-iter CLI options in conformallab_cli.cpp; thread through the three run_*() helpers; update doc/getting-started.md.
  • 9h.2-g cp_euclidean and -g inversive_distance routes in the CLI; add both to the CLI::IsMember validator; update README + getting-started.
  • 9g.1code/include/conformal_quality.hpp with IsothermicityMeasure, DiscreteConformalEquivalenceMeasure, FlippedTriangles, LengthCrossRatio, ConvergenceUtility measures; one test each in code/tests/cgal/.
  • 9d.3code/include/stereographic_layout.hpp porting StereographicUnwrapper.java (266 LoC); round-trip test required.
  • 🔍 Opus review: gradient-check test for quality measures, CLI smoke test on a real mesh, no count regression.

P2 — Decorated DCE transition (Sonnet → 🔍 Opus)

  • Phase 12 — Penner-coordinate decoration layer + geometric transition driver
    • validation harness. Mathematical reference: BobenkoLutz 2025 §3. Acceptance criteria (all four must pass — from phases.md):
    • Decoration round-trip I_ij ↔ (r_i, r_j, ) at machine precision.
    • At κ=0: bit-for-bit match with existing euclidean/inversive path.
    • GaussBonnet holds per geometry; invariant constant across κ-transition.
  • 🔍 Opus review: validate the three acceptance criteria numerically; verify the cross-geometry invariant test; confirm no parity regression.

P3 — Circle pattern embedding + Möbius centring + convergence study (Sonnet → 🔍 Opus)

  • 9ecode/include/circle_pattern_layout.hpp porting CirclePatternLayout + CirclePatternUtility (Phase 9a.1 prerequisite ). Test: given ρ values from a solved CP-Euclidean system, embedded vertex positions are self-consistent (intersection angles match the input).
  • 9d.4 — upgrade normalise_hyperbolic() in layout.hpp via MobiusCenteringFunctional (Lorentz energy; Java: 289 LoC). Retain Fréchet mean as fallback. Test: compare old vs new centering on brezel.obj.
  • 9g.2code/tests/cgal/test_period_matrix_convergence.cpp (experiment): genus-1 mesh with known analytic τ, igl::loop subdivision, noise, assert |τ_computed τ_expected| decreases with refinement.
  • 🔍 Opus review: cross-validate circle pattern positions against solver output; verify convergence-study direction; confirm no count regression.

⏸ P4 — Analytic HyperIdeal Hessian (Opus) — awaiting reviewer Q3

Precondition: reviewer Q3 answer must confirm the ~6× speedup over block-FD is worth ~2 weeks at their typical mesh sizes. If Q3 is "no" or "later", phase stays ⏸. If "yes" or "above V > X", proceed.

  • Phase 9b-analytic — full analytic Hessian via Schläfli identity. Derivation: doc/math/hyperideal-hessian-derivation.md. Chain: (bᵢ, aₑ) → ℓᵢⱼ → ζ₁₃/ζ₁₄/ζ₁₅ → αᵢⱼ/βᵢ → ∂²E/∂u². Block-FD path must be retained as a compile-time cross-check. Acceptance: analytic and block-FD agree to 1e-6; golden-value tests pass bit-for-bit; benchmark: analytic faster on V > 500.
  • No separate review gate (Opus implements + self-reviews; block-FD is the independent cross-check).

⏸ P5 — Genus > 1 fundamental domain (Opus) — awaiting reviewer Q4 + G0

Preconditions: (a) reviewer Q4 answer (port-literal vs. re-derive from Springborn 2020 §5); (b) G0 porting rights confirmed in writing.

  • Phase 9c — 4g-polygon boundary walk; high-precision substrate (boost::multiprecision::cpp_dec_float_50, local to uniformization module). See phases.md §9c for the full Java source list and the precision prerequisite note.

⏸ P6P8 — Higher-genus research chain (Opus, sequential)

Phases 10a → 10b → 10c → 13. Each gates the next. Start only after P5 (9c) is complete. Full scope in phases.md and research-track.md.


Review-gate checklist (every 🔍 Opus session checks)

  • Builds clean; full CGAL suite green; count matches doc/api/tests.md.
  • Any new functional has a gradient-check test (see CLAUDE.md §Test design patterns).
  • No Java golden-vector / parity test perturbed (HardJava clamp defaults intact).
  • Numeric changes are value-identical where claimed, or justified + covered by a test.
  • New public surface (result types, enums, CGAL headers) is intentional; documented in doc/api/headers.md and doc/api/contracts.md.
  • Commit message attributes the implementing model (Co-Authored-By: Claude <Model> <noreply@anthropic.com>).
  • Phase marked in the master table above with the commit ref.
  • porting-status.md §7 updated if the phase adds a C++-only capability.