Execute tracer bullet development - implement tasks with validation, code review gates, demos, and learning propagation.
Execute the build-validate-review cycle for tracer bullet development.
Before any flow, find the plan files:
docs/tracers/**/state.jsonTwo files per feature:
state.json - Machine state (task passes, commits, current tracer)PROGRESS.md - Human-readable plan and learningsAll state updates go to state.json. Learnings are appended to PROGRESS.md.
Check state.json:
ā
āā No state.json found
ā āā STOP: "Run spec-planner then /overseer-plan first to create a plan"
ā
āā Current tracer has tasks with passes: false
ā āā ā NEXT-TASK FLOW
ā
āā All tasks pass, tracer status != "complete"
ā āā ā REVIEW-TRACER FLOW
ā
āā Tracer complete, more tracers remain
ā āā Advance currentTracer ā NEXT-TASK FLOW
ā
āā All tracers status: "complete"
āā DONE: "Feature complete!"
Is lastReviewedTracer == currentTracer - 1?
āā No ā "Complete tracer review first"
āā Yes ā Continue
If feature status is planning, update it to in_progress in state.json before starting work.
Proceed immediately to Step 1 without asking for confirmation once preconditions are satisfied.
Read state.json and find first task with passes: false in the current tracer.
Also read the context block for patterns and key files to guide exploration.
Before ANY code, produce a brief plan:
## Micro-Plan: Task X.Y - <name>
**Goal**: <one sentence>
**Implementation** (minimal):
1. <step>
2. <step>
...
**Validation**:
- <how we prove this works>
**Not doing** (explicit scope):
- <what we're deferring>
Key principles:
Run ALL verification steps from the task's steps array. Also run project validation (typecheck, tests, lint).
afplay /System/Library/Sounds/Ping.aiff
Present to user:
## Code Review: Task X.Y
Files changed:
- <file> (+X, -Y)
Verification steps:
- <step 1>: PASS
- <step 2>: PASS
Project validation:
- Typecheck: PASS or SKIPPED (reason)
- Tests: PASS or SKIPPED (reason)
- Lint: PASS or SKIPPED (reason)
Request approval inline (do not open question mode): reply **"lgtm"** to approve, or provide feedback.
WAIT FOR USER RESPONSE
Loop until user says "lgtm".
After "lgtm", proceed immediately to commit, mark the task complete, and start the next task without asking for confirmation.
After approval, always commit the task. This ensures the next task's review only shows new changes.
Run the commit and state.json update using a background agent with openrouter/z-ai/glm-4.7-flash.
git add -A && git commit -m "feat(<scope>): <task description>"
Update state.json for the task (handled by the background agent):
{
"passes": true,
"commit": "<commit-hash>"
}
Continue to next task, or if all tasks in current tracer have passes: true ā REVIEW-TRACER FLOW.
All tasks in current tracer have passes: true in state.json.
Check each criterion from the tracer's proves field:
## DoD Audit: Tracer N
proves: "<what this tracer validates>"
Evidence:
- [x] <criterion>: <evidence>
- [x] <criterion>: <evidence>
- [ ] <criterion>: MISSING - <what's needed>
If any criterion unmet ā Add tasks to state.json (with passes: false), return to NEXT-TASK FLOW.
If tasks are added after a tracer was reviewed, set in state.json:
{
"lastReviewedTracer": N-1,
"currentTracer": N
}
afplay /System/Library/Sounds/Hero.aiff
Present demo instructions:
## Demo: Tracer N
Please run:
<demo command from PROGRESS.md>
Expected result:
<expected output from PROGRESS.md>
Request response inline (do not open question mode): run the demo and reply "pass" to continue, or describe what went wrong.
WAIT FOR USER RESPONSE
Use the ask question tool to ask questions:
What did we learn from this tracer?
- Decisions made?
- Surprises?
- Things to remember for future tracers?
Update both files:
state.json - Add to tracer's learnings array:
{
"learnings": ["<learning>", "<learning>"]
}
PROGRESS.md - Append under the tracer's Learnings section:
### Learnings
- <learning>
- <learning>
Review remaining tracers in light of learnings:
## Future Tracer Review
Based on learnings from Tracer N:
Tracer N+1: <name>
- Still makes sense? [yes/adjust]
- Demo still valid? [yes/adjust]
- New tasks needed? [no/add]
Update PROGRESS.md if any changes needed.
Update state.json:
{
"lastReviewedTracer": N,
"currentTracer": N+1,
"tracers": [{
"id": N,
"status": "complete",
"completed": "<ISO date>"
}]
}
If this was the final tracer, also set:
{
"status": "complete"
}
afplay /System/Library/Sounds/Funk.aiff
Tracer N complete!
Progress: N/<total> tracers done
Next: Tracer N+1 - <name>
Continuing to the next tracer.