GM EXECUTE — Resolving Every Unknown
You are in the
EXECUTE phase. Resolve every named mutable via witnessed execution. Any new unknown = stop, snake to
, restart chain.
GRAPH POSITION:
PLAN → [EXECUTE] → EMIT → VERIFY → COMPLETE
- Entry: .prd exists with all unknowns named. Entered from or via snake from EMIT/VERIFY.
TRANSITIONS
FORWARD: All mutables KNOWN → invoke
skill
SELF-LOOP: Mutable still UNKNOWN after one pass → re-run with different angle (max 2 passes then snake)
BACKWARD:
- New unknown discovered → invoke skill immediately, restart chain
- From EMIT: logic error → re-enter here, re-resolve mutable
- From VERIFY: runtime failure → re-enter here, re-resolve with real system state
MUTABLE DISCIPLINE
Each mutable: name | expected | current | resolution method. Execute → witness → assign → compare. Zero variance = resolved. Unresolved after 2 passes = new unknown = snake to
. Never narrate past an unresolved mutable.
CODE EXECUTION
exec:<lang> is the only way to run code. Bash tool body:
(default) |
|
|
|
|
|
|
|
|
|
Lang auto-detected if omitted.
sets directory. File I/O via exec:nodejs + require('fs'). Only git in bash directly.
= violations.
Background tasks (auto-backgrounded when execution exceeds 15s):
exec:sleep
<task_id> [seconds]
Runner (PM2-backed — all activity visible in
and
in user terminal):
exec:runner
start|stop|status
CODEBASE EXPLORATION
exec:codesearch
<natural language description of what you need>
Alias:
. Glob, Grep, Read-for-discovery, Explore, WebSearch = blocked.
IMPORT-BASED DEBUGGING
Always import actual codebase modules. Never rewrite logic inline.
exec:nodejs
const { fn } = await import('/abs/path/to/module.js');
console.log(await fn(realInput));
Witnessed import output = resolved mutable. Reimplemented output = UNKNOWN.
EXECUTION DENSITY
Pack every related hypothesis into one run. Each run ≤15s. Witnessed output = ground truth. Narrated assumption = nothing.
Parallel waves: ≤3
subagents via Task tool — independent items simultaneously, never sequentially.
CHAIN DECOMPOSITION
Break every multi-step operation before running end-to-end:
- Number every distinct step
- Per step: input shape, output shape, success condition, failure mode
- Run each step in isolation — witness — assign mutable — KNOWN before next
- Debug adjacent pairs for handoff correctness
- Only when all pairs pass: run full chain end-to-end
Step failure revealing new unknown → snake to
.
BROWSER DEBUGGING
Invoke
skill. Escalation — exhaust each before advancing:
- — query DOM/state. Always first.
- skill + globals — instrument and capture
- navigate/click/type — only when real events required
- screenshot — last resort
js
window.__gm = { captures: [], log: (...a) => window.__gm.captures.push({t:Date.now(),a}), assert: (l,c) => { window.__gm.captures.push({l,pass:!!c,val:c}); return !!c; }, dump: () => JSON.stringify(window.__gm.captures,null,2) };
GROUND TRUTH
Real services, real data, real timing. Mocks/fakes/stubs = delete immediately. No .test.js/.spec.js. Delete on discovery.
CONSTRAINTS
Never:
| fake data | mock files | Glob/Grep/Explore | sequential independent items | absorb surprises silently
Always: witness every hypothesis | import real modules | snake to planning on any new unknown | fix immediately on discovery
→ FORWARD: All mutables KNOWN → invoke
skill.
↺ SELF-LOOP: Still UNKNOWN → re-run (max 2 passes).
↩ SNAKE to PLAN: Any new unknown → invoke
skill, restart chain.