docs/architecture/phase-registry.json, schema v4): 15 phases — intent, scout, triage, spec-verify, architecture-design, plan-review, tdd, build-planner, build, doc-sync, tester, audit, ship, retrospective, memo. Spine order: intent → scout → triage → tdd → build-planner → build → audit → ship. Goal recipes insert conditional phases (coverage-gate, adversarial-review, scans…) per goal type; the single-word phase vocabulary is CLOSED (micro-phase-catalog.md).go/internal/core/orchestrator.go:659-865): plan → select → dispatch → review → record, with a chokepoint-escape guard (ADR-0044) so no cycle can exit unrecorded.statemachine.go:170-203): explicit graph — audit→{ship,retro}, retro→{ship,tdd,end}, etc. Verdict branches resolve from each phase spec’s on_pass/on_fail.SpineSatisfiedUpTo, statemachine.go:368-386): a mandatory anchor runs only if every earlier mandatory anchor left a real on-disk handoff artifact. Currently fail-open (76 warnings in one batch — queued: spine-failopen-telemetry).router.DefaultShipFloor() = {tdd, build, audit} (floor.go:55) — ship implies those ran, policy can relax only build/tdd (trivial class), never audit.Clamp{Rule,Proposed,Forced}), never silent.skills/loop/SKILL.md still describes a "6 lean phases" CALIBRATE/RESEARCH/LEARN/META architecture that matches no registry phase; runtime-reference documents insertion default 4 vs registry-effective 6.ADR-0058/0060 made verdict branches, spine, legality and gates config-driven with a one-time ValidateSafetyInvariants trust anchor; ADR-0052 added goal recipes and post-scout replanning; ADR-0024 set the proposes/disposes doctrine (first live advisory cycle-108, default flipped to advisory after soak — config.go:508).