concepts

Phases

Every run and program advances through a sequence of phases. Each phase has an input artifact, an output artifact, and a gate that decides whether to advance. The dashboard shows the current phase live; commits in the resulting branch are organised one phase at a time.

Per-story phases

Walked once per run. Gates skip phases that don't apply (e.g. no end-to-end tests on a docs-only change). The pipeline enforces order — a phase cannot start before the previous one's artifact is frozen.

PhaseWrites / freezesAdvance gate
analyzespec.mdspec satisfies the brief; acceptance criteria are testable
plantest-plan.mdevery acceptance criterion has ≥1 test row
contractscontracts/*.tsevery cross-domain call has a frozen type
test-redfailing teststests fail for the right reason (not import / setup)
implproduction codered tests now green; typecheck + lint clean
reviewreview pass + retry loopno unresolved comments above severity threshold
e2ee2e flowsall flows pass headless
securityaudit reportsno critical findings; allowlist diffs accounted for
verifyverify-report.mdaggregate of every prior gate; one failure stops the phase
prcommits + PRbranch pushed; PR opened with summary

Program-level phases

Walked once per program; each one wraps the per-story machine. Which run depends on the mode.

PhaseModesWrites / freezes
auditbrownfield-*AUDIT.md
program_planallROADMAP.md
migration_planbrownfield-upgradeMIGRATIONS.md
design_systemgreenfield-*DESIGN-SYSTEM.md
iteratealldispatches stories in DAG order
program_verifyallverify-report.md

Why phases freeze

Once a phase's artifact is frozen, no downstream work may rewrite it. This is what makes re-runs cheap and reviewers tractable — one frozen artifact per decision. Escalations are the only way to amend a frozen artifact, and they always go through you.

Phases · Pipemason Docs