gm-prd
gm-prd
One row, one session. Stages run in order, none a subagent; the orchestrator spawns the verifier and CI lanes after handoff. Each writes a create-only receipt .gm/receipts/<row>/NN-<STAGE>.md. A refused stage re-reads the state the refusal names, fixes it, and retries once; only a stage still refused for the same cause becomes a blocker row <row>-blocker-<session> (prd-add) naming the external fact and clearing action. No skips. Verbs: gm §1. This PRD tracker is separate from node traversal (gm-orchestrate): a row is not a node and never changes the frontier count.
Procedure
- A blocker is filed only after ELIMINATE (1b) ran a live JIT check on each open unknown and recorded its dispatch id; a missing fact, unresolved unknown or missing row file is no blocker until those checks fail.
- CI builds are not blockers: a CI-only row pushes and reads the run through
ci-status(gm, CI). Owner decisions are not blockers: the owner approved every progressing decision, so the row records it and runs it. Missing acceptance text is derived at SPECIFY. Only a world-scoped one-way door is a blocker without a check (gm §4).
The executor runs the edit stages only: SPECIFY (1), ELIMINATE (1b), EDIT then VALIDATE (1c), then publish of its own commit (Delivery), then hands off. Verification (PROVE, witness, DECIDE, COMPLETE) and the CI read (Delivery, steps 3-5) are separate lanes the orchestrator spawns per handoff, never inline (gm-orchestrate, Verification and CI lanes). Start at SPECIFY with row=<id>; session=<SESSION_ID>. Stages 2, 8, 9 belong to the verifier.