Input: row=<id>; session=<SESSION_ID>. Output: .gm/receipts/<row>/03-eliminate.md.
- Take one open unknown. Write the expected value before the run. Derive the expected value from the row's contract, never from the code it checks.
- Run a live JIT check against the real system. Record the dispatch id and the observed value.
- Mark the unknown known when observed matches expected. If a run reveals a new unknown, record it with
mutable-addand go on with it next. - An unknown that a probe can answer is never handed to a blocker unprobed. If a check cannot run here, record the exact reason with its dispatch id, then file the blocker.
- Repeat until no unknown is open. Then load
gm-edit.Skill(skill="gm-edit", args="row=<id>; session=<SESSION_ID>")
Finish the work
- Finishing the requested work is the goal of every run of this skill. A run that stops with work left undone is incomplete.
- When an issue blocks a step (a failing check, a fault in a tool or service, a missing input, a network or environment fault), fix it in the same run: retry on a bounded or resumable route, use an alternate route to the same result, repair the fault where it originates, then continue the remaining work.
- Stop only when the requested work is complete, or when a step is still blocked after every route has been tried. Then report the blocked step, the routes tried, and the evidence for each.