Nuke Sprint
The pipeline miniaturized to one session (map: references/family-map.md). Producers research and plan, exec builds, verify reviews — sprint runs all four stations itself, at everyday scale, for one small deliverable. Where nuke-code is the loop the constitution engages for un-invoked work and nuke-blitz is the fast lane that prints its plan and goes, sprint is the deliberate lane: it is only ever invoked, it stops at its plan by default, and its hand-back is invalid without the reuse, review, and fit lines.
Core principle — small never means unreviewed: the cycle stays complete at every size. Savings come from scale — one session, solo build, one validator — never from the stations: research, gate, review, and the fix loop run even when the diff is twenty lines.
Arguments
plan — run CALL + RESEARCH + PLAN, print the sprint-plan block, STOP — nothing built, nothing written.
<task> — inline text or a path to a brief file.
--go — skip the default gate: the block prints and the build starts immediately. The inverse of blitz's --ask.
The lane — countable, checked at CALL
| Situation |
Move |
In lane: one deliverable AND ≤5 touched files AND ≤300 estimated changed lines |
sprint executes — no lower bound; a 10-line change still gets the full cycle |
| Oversized but single-deliverable and clear |
STOP → recommend nuke-blitz (to ~10 files / ~600 lines) or nuke-exec (task mode) beyond |
| Multiple independent deliverables, or still ambiguous after one clarification round |
STOP → recommend nuke-spec → exec |
Mid-run escalations: hard design call (expensive to reverse, or two shapes with no nameable winner) → nuke-think before code · unproven bug cause after 2 fix attempts → nuke-debug discipline · ask names look/design or a new UI surface → nuke-creative light charter + nuke-design build charter during BUILD · diff outgrows the lane → checkpoint honestly with the numbers that tripped and recommend blitz or exec.
Mandates
- The gate is the point. The sprint-plan block prints and the run STOPS for the user's word by default;
--go is the explicit exception. Blitz trades the gate for speed; sprint exists because the user wanted to see the plan.
- Reuse before writing. No new helper, component, or utility is written before the reuse sweep has searched for an existing one; the plan carries the
reuse: line, and a shape that reimplements a found symbol names why reuse loses.
- The roster is printed and binding. The review roster resolved at CALL is printed in the plan and embedded in the validator's prompt as MANDATORY loads; the validator's report names what it loaded. A hand-back whose validator skipped a printed roster skill is invalid.
- Speed never eats verification. Gates with a baseline, one fresh validator, the family finding schema, the fix loop — non-negotiable at every size.
- One clarification round, max. Up to 3 targeted questions, batched, asked once — only for ambiguity that changes what gets built. Everything else becomes a named assumption in the plan and the hand-back. Never invent a requirement; never ask what a file read answers.
- No artifacts, no git. No run_dir — the hand-back carries the evidence. Writes touch only the task's own files; never
git add / git commit / git stash; no .bak files.
- Never claim success past a dirty state. A failing gate, an unmet criterion, or an open finding leads the hand-back.
CALL
- Contract. Restate the ask as 2–5 falsifiable done-criteria + non-goals + constraints from the project instruction files, read now — not recalled. A brief file with falsifiable criteria is consumed as-is. Genuine ambiguity → Mandate 5's single round.
- Recon-lite. Consume
.nuke/repo-map.md when present and fresh; otherwise skim only what the task touches — manifests, the target area's structure and exports. Resolve the gate rows for the touched path prefixes, and the file-type → skill map plus the review roster from ONE listing of the local skill library (references/stack-adapters.md).
- Lane check. Apply the lane table. Out of lane → STOP with the named recommendation and the tripping numbers.
RESEARCH — before any shape
- Reuse sweep. Grep/glob the repo for existing implementations of what the task needs — helpers, components, hooks, utilities matching the task's nouns and verbs — plus the canonical spots the repo map names. The result is a mandatory plan line:
reuse: <file:symbol — how it serves the task> | none — searched: <terms>. A plan without the reuse line is invalid.
- Quality-bar flash. The roster's skills carry the bar by default. When the task adds a dependency, or uses a library/API absent from the touched files and their neighbors → ONE docs-lookup or current-year best-practice search for that territory, distilled into ≤5 quality-bar bullets in the plan. No search tooling →
research: local-only in the plan, never silence.
PLAN — gated by default
- Shapes. ≥2 genuinely different shapes, one-line trade-off each, winner named in a ≤5-line decision note that ships in the hand-back. A purely mechanical change may collapse to one shape with a stated reason; the done-criteria are never skipped.
- Print the sprint-plan block — then STOP for the user's word (AskUserQuestion where available: run / adjust / escalate to blitz or a ceremony).
--go → build immediately; plan → print and stop entirely.
## Nuke Sprint — <task one-liner>
contract: 3 done-criteria · 1 non-goal · assumptions: 1 (named)
reuse: src/lib/retry.ts:withRetry — wraps the new call | none — searched: retry, backoff
shape: <winner one-liner> (rejected: <strongest alternative>)
quality bar: <≤5 bullets | roster carries the bar>
review: <roster — validator MUST load, e.g. react-senior-guide*, anti-slop, code-quality>
build: session solo · validator: session (fresh) | top (risk flag: <flag>) · fix-loop cap: 2
gates: <rows for touched prefixes> · baseline: <pass | pre-existing listed>
waiting — run / adjust / escalate (--go skips this gate)
BUILD
- Baseline. Run the resolved gate rows once BEFORE editing. Broken tooling → fix it (max 2 attempts) and note it in the hand-back; a real pre-existing failure → recorded in the plan, the run proves no NEW failures — fixing it is offered, never silently adopted. A gateless area →
gates: NONE — validation is review-only per references/stack-adapters.md; never validate silently against nothing.
- Build solo under the nuke-code BUILD charter plus the nuke-lean charter — read before editing, neighbors are the style guide, the mapped skills loaded for every touched file type before writing, minimal diff, no defensive noise, a behavior test in the same diff where behavior changed, boring beats clever. No worker delegation: at ≤~5 files batch overhead outweighs parallelism — sprint saves on scale, never on verification.
REVIEW — before the word "done"
- Gates. Re-run the resolved rows, narrowest first, output captured verbatim.
- One fresh validator.
session, fresh context — the everyday equal-but-fresh floor; any risk flag — public API, auth/security, concurrency, data migration, new dependency — → top (references/model-tiers.md). It receives the task text, the contract, the diff, the printed review roster, and repo access — never the author's reasoning; the missing anchoring is the design. Charter: load every roster skill and name them in the report; verdict every done-criterion (met | partial | unmet, file:line + one verbatim quoted line each); hunt what the change introduced via the four charter bundles of references/lens-catalog.md over the diff and its blast radius; close with the fit verdict — fit: simplest sound shape | better shape exists: <one-liner> — the chosen shape judged against the nuke-lean design rules and the current stack idiom. Findings use the family schema (lens + severity + justification, file:line, quoted source, numbered trace, proposed fix, refutation attempt); a finding missing a field is invalid and must not be reported.
- Fix loop. Every confirmed finding of any severity is fixed. A
better shape exists verdict that is cheap to adopt becomes a finding and is fixed; an expensive one is named in the hand-back as an option, never silently absorbed. Fresh revalidation each cycle; cap 2. Cap hit or unfixable → honest hand-back, open list first.
- Hand-back, verdict first:
SPRINT: clean — validator: 0 findings · gates: pass
done-criteria: 3/3 met (validator-verified)
gates: <verbatim tail>
reuse: <the plan line, as executed>
shape: <decision note>
review: <roster skills the validator actually loaded>
fit: simplest sound shape | better shape exists: <one-liner> (left as option)
assumptions: <the Mandate-5 list, or none>
cycles: 1
or the honest open list: findings by severity, failing gates with output, exactly where it stopped.
Degradations
- No AskUserQuestion-style tool → print the sprint-plan block and wait for a plain reply; the gate is never skipped for tooling reasons.
- No subagents → validate inline: explicit role switch, diff re-read from disk (
git diff, never memory), same charter, roster, and schema; hand-back marked validator: inline (degraded).
- No per-agent model overrides → every role inherits the session model; risk flags still apply the platform's maximum effort/thinking dial where one exists (references/model-tiers.md).
- No search/docs tooling for the quality-bar flash → the roster and neighbor files carry the bar; the plan says
research: local-only.
1---2name: nuke-sprint3description: Use when a small task should run the whole pipeline in miniature, in one session — research (reuse first) → plan, gated by default → build → fresh review → fix — "nuke sprint", "small, but do it properly", "plan first, show me, then build", "quick task, full review". Single deliverable up to ~5 files / ~300 lines; no lower bound — invoking sprint IS the opt-in, even for a tiny change. The deliberate inverse of nuke-blitz: blitz's default is GO, sprint's default is STOP at the plan. Not for un-invoked everyday work (the constitution routes that to nuke-code) or multi-deliverable asks (nuke-spec → nuke-exec).4---56# Nuke Sprint78The pipeline miniaturized to one session (map: references/family-map.md). Producers research and plan, exec builds, verify reviews — sprint runs all four stations itself, at everyday scale, for one small deliverable. Where nuke-code is the loop the constitution engages for un-invoked work and nuke-blitz is the fast lane that prints its plan and goes, sprint is the deliberate lane: it is only ever invoked, it stops at its plan by default, and its hand-back is invalid without the reuse, review, and fit lines.910Core principle — small never means unreviewed: the cycle stays complete at every size. Savings come from scale — one session, solo build, one validator — never from the stations: research, gate, review, and the fix loop run even when the diff is twenty lines.1112## Arguments1314`plan` — run CALL + RESEARCH + PLAN, print the sprint-plan block, STOP — nothing built, nothing written.15`<task>` — inline text or a path to a brief file.16`--go` — skip the default gate: the block prints and the build starts immediately. The inverse of blitz's `--ask`.1718## The lane — countable, checked at CALL1920| Situation | Move |21|---|---|22| In lane: one deliverable AND ≤~5 touched files AND ≤~300 estimated changed lines | sprint executes — no lower bound; a 10-line change still gets the full cycle |23| Oversized but single-deliverable and clear | STOP → recommend nuke-blitz (to ~10 files / ~600 lines) or nuke-exec (task mode) beyond |24| Multiple independent deliverables, or still ambiguous after one clarification round | STOP → recommend nuke-spec → exec |2526Mid-run escalations: hard design call (expensive to reverse, or two shapes with no nameable winner) → nuke-think before code · unproven bug cause after 2 fix attempts → nuke-debug discipline · ask names look/design or a new UI surface → nuke-creative light charter + nuke-design build charter during BUILD · diff outgrows the lane → checkpoint honestly with the numbers that tripped and recommend blitz or exec.2728## Mandates29301. **The gate is the point.** The sprint-plan block prints and the run STOPS for the user's word by default; `--go` is the explicit exception. Blitz trades the gate for speed; sprint exists because the user wanted to see the plan.312. **Reuse before writing.** No new helper, component, or utility is written before the reuse sweep has searched for an existing one; the plan carries the `reuse:` line, and a shape that reimplements a found symbol names why reuse loses.323. **The roster is printed and binding.** The review roster resolved at CALL is printed in the plan and embedded in the validator's prompt as MANDATORY loads; the validator's report names what it loaded. A hand-back whose validator skipped a printed roster skill is invalid.334. **Speed never eats verification.** Gates with a baseline, one fresh validator, the family finding schema, the fix loop — non-negotiable at every size.345. **One clarification round, max.** Up to 3 targeted questions, batched, asked once — only for ambiguity that changes what gets built. Everything else becomes a named assumption in the plan and the hand-back. Never invent a requirement; never ask what a file read answers.356. **No artifacts, no git.** No run_dir — the hand-back carries the evidence. Writes touch only the task's own files; never `git add` / `git commit` / `git stash`; no `.bak` files.367. **Never claim success past a dirty state.** A failing gate, an unmet criterion, or an open finding leads the hand-back.3738## CALL39401. **Contract.** Restate the ask as 2–5 falsifiable done-criteria + non-goals + constraints from the project instruction files, read now — not recalled. A brief file with falsifiable criteria is consumed as-is. Genuine ambiguity → Mandate 5's single round.412. **Recon-lite.** Consume `.nuke/repo-map.md` when present and fresh; otherwise skim only what the task touches — manifests, the target area's structure and exports. Resolve the gate rows for the touched path prefixes, and the file-type → skill map plus the review roster from ONE listing of the local skill library (references/stack-adapters.md).423. **Lane check.** Apply the lane table. Out of lane → STOP with the named recommendation and the tripping numbers.4344## RESEARCH — before any shape45464. **Reuse sweep.** Grep/glob the repo for existing implementations of what the task needs — helpers, components, hooks, utilities matching the task's nouns and verbs — plus the canonical spots the repo map names. The result is a mandatory plan line: `reuse: <file:symbol — how it serves the task> | none — searched: <terms>`. A plan without the reuse line is invalid.475. **Quality-bar flash.** The roster's skills carry the bar by default. When the task adds a dependency, or uses a library/API absent from the touched files and their neighbors → ONE docs-lookup or current-year best-practice search for that territory, distilled into ≤5 quality-bar bullets in the plan. No search tooling → `research: local-only` in the plan, never silence.4849## PLAN — gated by default50516. **Shapes.** ≥2 genuinely different shapes, one-line trade-off each, winner named in a ≤5-line decision note that ships in the hand-back. A purely mechanical change may collapse to one shape with a stated reason; the done-criteria are never skipped.527. **Print the sprint-plan block — then STOP for the user's word** (AskUserQuestion where available: run / adjust / escalate to blitz or a ceremony). `--go` → build immediately; `plan` → print and stop entirely.5354```55## Nuke Sprint — <task one-liner>56contract: 3 done-criteria · 1 non-goal · assumptions: 1 (named)57reuse: src/lib/retry.ts:withRetry — wraps the new call | none — searched: retry, backoff58shape: <winner one-liner> (rejected: <strongest alternative>)59quality bar: <≤5 bullets | roster carries the bar>60review: <roster — validator MUST load, e.g. react-senior-guide*, anti-slop, code-quality>61build: session solo · validator: session (fresh) | top (risk flag: <flag>) · fix-loop cap: 262gates: <rows for touched prefixes> · baseline: <pass | pre-existing listed>63waiting — run / adjust / escalate (--go skips this gate)64```6566## BUILD67688. **Baseline.** Run the resolved gate rows once BEFORE editing. Broken tooling → fix it (max 2 attempts) and note it in the hand-back; a real pre-existing failure → recorded in the plan, the run proves no NEW failures — fixing it is offered, never silently adopted. A gateless area → `gates: NONE — validation is review-only` per references/stack-adapters.md; never validate silently against nothing.699. **Build solo under the nuke-code BUILD charter plus the nuke-lean charter** — read before editing, neighbors are the style guide, the mapped skills loaded for every touched file type before writing, minimal diff, no defensive noise, a behavior test in the same diff where behavior changed, boring beats clever. No worker delegation: at ≤~5 files batch overhead outweighs parallelism — sprint saves on scale, never on verification.7071## REVIEW — before the word "done"727310. **Gates.** Re-run the resolved rows, narrowest first, output captured verbatim.7411. **One fresh validator.** `session`, fresh context — the everyday equal-but-fresh floor; any risk flag — public API, auth/security, concurrency, data migration, new dependency — → `top` (references/model-tiers.md). It receives the task text, the contract, the diff, the printed review roster, and repo access — never the author's reasoning; the missing anchoring is the design. Charter: load every roster skill and name them in the report; verdict every done-criterion (`met | partial | unmet`, file:line + one verbatim quoted line each); hunt what the change introduced via the four charter bundles of references/lens-catalog.md over the diff and its blast radius; close with the fit verdict — `fit: simplest sound shape | better shape exists: <one-liner>` — the chosen shape judged against the nuke-lean design rules and the current stack idiom. Findings use the family schema (lens + severity + justification, file:line, quoted source, numbered trace, proposed fix, refutation attempt); a finding missing a field is invalid and must not be reported.7512. **Fix loop.** Every confirmed finding of any severity is fixed. A `better shape exists` verdict that is cheap to adopt becomes a finding and is fixed; an expensive one is named in the hand-back as an option, never silently absorbed. Fresh revalidation each cycle; cap 2. Cap hit or unfixable → honest hand-back, open list first.7613. **Hand-back**, verdict first:7778```79SPRINT: clean — validator: 0 findings · gates: pass80done-criteria: 3/3 met (validator-verified)81gates: <verbatim tail>82reuse: <the plan line, as executed>83shape: <decision note>84review: <roster skills the validator actually loaded>85fit: simplest sound shape | better shape exists: <one-liner> (left as option)86assumptions: <the Mandate-5 list, or none>87cycles: 188```8990or the honest open list: findings by severity, failing gates with output, exactly where it stopped.9192## Degradations9394- No AskUserQuestion-style tool → print the sprint-plan block and wait for a plain reply; the gate is never skipped for tooling reasons.95- No subagents → validate inline: explicit role switch, diff re-read from disk (`git diff`, never memory), same charter, roster, and schema; hand-back marked `validator: inline (degraded)`.96- No per-agent model overrides → every role inherits the session model; risk flags still apply the platform's maximum effort/thinking dial where one exists (references/model-tiers.md).97- No search/docs tooling for the quality-bar flash → the roster and neighbor files carry the bar; the plan says `research: local-only`.