The migration lifecycle — eight gated stages

Every migration unit moves through eight gated stages, in order. A unit can't skip a gate, and each advance is recorded in the signed ledger.

1. Inventoried — source is ingested, hashed, and parsed; complexity metrics are computed.
2. Documented — a plain-English behavioral spec is generated (by AI) and you mark it reviewed.
3. Characterized — golden-master tests capture the program's real inputs and outputs at ≥80% coverage. This is the safety net — it must exist before any code changes.
4. Translated — the target artifact is produced (transpiled to your target language, or an in-place COBOL refactor). Only allowed after Characterized.
5. Verified — the translated artifact passes 100% of the characterization corpus in isolation.
6. Parallel-run — a strangler-fig run executes new beside old and holds ≥99% equivalence across multiple sessions.
7. Cutover — traffic flips to the new implementation; the legacy stays warm; the cutover is signed into the ledger.
8. Retired — the legacy is decommissioned after a soak period.

Off-track states: a unit can be Blocked or Rolled-back at any point. Rollback is reversible and itself recorded in the ledger.

The Risk tab flags "danger" units — anything that reached Translated without an 80% characterization safety net — so you can characterize or roll them back before they bite.

To advance a unit, open it on the Programs board and use the stage action, or ask Wally to "advance the interest-accrual program" — gates are checked on both the client and the server.