Advance a specification through the status state machine (draft → ready → in-progress → implemented). Runs validation gates at each transition.
Move a specification to its next status, validating gate conditions at each transition.
draft ──→ ready ──→ in-progress ──→ implemented
↑ │ │
│ ↓ ↓
└──────────── revision-needed ←─────────┘
Look up $ARGUMENTS in docs/specs/. Try these in order:
docs/specs/traverser.spec.md).spec.md suffix (e.g., traverser → docs/specs/traverser.spec.md)If the spec can't be found, list available specs and ask the user to pick one.
Read the spec file. Extract the current ## Status value. Show the user:
Run the appropriate gate check based on the transition:
draft → ready:
## Behaviour section exists and is non-empty## Requires table exist in docs/definitions/ (at least as draft/v0)TODO, TBD, or FIXME markers in the Behaviour section (warn if found, don't block)## Purpose section is non-emptyready → in-progress:
docs/ARCHITECTURE.md exists, confirm the spec is listed therein-progress → implemented:
bash scripts/health-check.sh — no drift for this spec's files and definitionsany → revision-needed:
## Decisions table with status "revision-needed" and today's daterevision-needed → draft:
If all gate conditions pass (or the user acknowledges warnings):
## Status line to the new statusdocs/REGISTER.md exists, update the status column for this spec in the spec index tableBased on the new status:
/promote-spec <name> again when you start work."/health-check to verify project consistency."$ARGUMENTS