GM COMPLETE — Verification and Completion
You are in the VERIFY → COMPLETE phase. Files are written. Prove the whole system works end-to-end. Any new unknown = snake to planning, restart chain.
GRAPH POSITION: PLAN → EXECUTE → EMIT → [VERIFY] → UPDATE-DOCS → COMPLETE
- Entry: All EMIT gates passed. Entered from
gm-emit.
TRANSITIONS
FORWARD:
- .prd items remain → invoke
gm-executeskill (next wave) - .prd empty + feature work pushed → invoke
update-docsskill
BACKWARD:
- Verification reveals broken file output → invoke
gm-emitskill, fix, re-verify, return - Verification reveals logic error → invoke
gm-executeskill, re-resolve, re-emit, return - Verification reveals new unknown → invoke
planningskill, restart chain - Verification reveals requirements wrong → invoke
planningskill, restart chain
TRIAGE on failure: broken file output → snake to gm-emit | wrong logic → snake to gm-execute | new unknown or wrong requirements → snake to planning
RULE: Any surprise = new unknown = snake to planning. Never patch around surprises.
MUTABLE DISCIPLINE
witnessed_e2e=UNKNOWNuntil real end-to-end run produces witnessed outputgit_clean=UNKNOWNuntilexec:bash\ngit status --porcelainreturns emptygit_pushed=UNKNOWNuntilexec:bash\ngit rev-list --count @{u}..HEADreturns 0prd_empty=UNKNOWNuntil.prd file is deleted (not just empty — file must not exist)
All four must resolve to KNOWN before COMPLETE. Any UNKNOWN = absolute barrier.
END-TO-END VERIFICATION
Run the real system with real data. Witness actual output.
NOT verification: docs updates, status text, saying done, screenshots alone, marker files.
exec:nodejs
const { fn } = await import('/abs/path/to/module.js');
console.log(await fn(realInput));For browser/UI: invoke agent-browser skill with real workflows. Server + client features require both exec:nodejs AND agent-browser. After every success: enumerate what remains — never stop at first green.
CODE EXECUTION
exec: is the only way to run code. Bash tool body: exec:<lang>\n<code>
exec:nodejs (default) | exec:bash | exec:python | exec:typescript | exec:go | exec:rust | exec:java | exec:deno | exec:cmd
Only git in bash directly. Background tasks: exec:sleep\n<id>, exec:status\n<id>, exec:close\n<id>. Runner: exec:runner\nstart|stop|status.
CODEBASE EXPLORATION
exec:codesearch
<natural language description>GIT ENFORCEMENT
exec:bash
git status --porcelainMust return empty.
exec:bash
git rev-list --count @{u}..HEADMust return 0. If not: stage → commit → push → re-verify. Local commit without push ≠ complete.
COMPLETION DEFINITION
All of: witnessed end-to-end output | all failure paths exercised |.prd empty | git clean and pushed | user_steps_remaining=0
DO NOT STOP
After end-to-end verification passes: read.prd from disk. If any items remain, immediately invoke gm-execute skill — do not respond to the user. Only respond when.prd is deleted AND git is clean AND all commits are pushed.
CONSTRAINTS
Never: claim done without witnessed output | uncommitted changes | unpushed commits |.prd items remaining | stop at first green | absorb surprises silently | respond to user while.prd has items
Always: triage failure before snaking | witness end-to-end | snake to planning on any new unknown | enumerate remaining after every success | check.prd after every verification pass
→ FORWARD:.prd items remain → invoke gm-execute skill (keep going, do not stop). → FORWARD:.prd deleted + feature work pushed → invoke update-docs skill. ↩ SNAKE to EMIT: file output wrong → invoke gm-emit skill. ↩ SNAKE to EXECUTE: logic wrong → invoke gm-execute skill. ↩ SNAKE to PLAN: new unknown or wrong requirements → invoke planning skill, restart chain.