Nuke Exec
The family's one executor (map: references/family-map.md — producers spec/audit/review feed it; verify closes behind it). It runs in one of two input modes, resolved at preflight:
- spec mode — the argument is a path to a family spec (fix-spec.md from nuke-audit/nuke-review, spec.md from nuke-spec, an escalation spec from nuke-verify, or any file following references/fix-spec-template.md). Executed phase by phase until everything meets the quality bar recorded in the spec's executor context.
- task mode — the argument is task text (or a brief file that is not a family spec). Preflight distills it into a contract — 2–5 falsifiable done-criteria plus non-goals — and the contract is executed as a single phase. No spec required; the contract stands in for one.
Core principle — asymmetric verification: weak generation + strong verification + fix loop = strong output. Validators are always one tier above implementers.
Arguments
[mode] — light | full | plan. If omitted: spec mode uses the mode: recorded in the spec header, defaulting to light; task mode defaults to light. plan runs preflight, prints the plan block, and STOPS — nothing is written.
<input> — a spec path → spec mode; anything else (inline text, a notes/brief file) → task mode. The spec-mode test is countable, never judged: the file has an ## Executor context heading, at least one ### Batch heading, and Accept: lines — all three, or it is treated as a task brief and the downgrade is named in the plan block, never silent.
--ask — pause at the preflight plan for confirmation; default is no gate — the plan prints and the run starts (references/preflight.md).
Modes
Tier vocabulary (clerk/worker/session/top) and per-platform mechanics: references/model-tiers.md. Respect the fallback: platforms without per-agent overrides → every role inherits the session model.
|
light — cheap-implementer profile (default) |
full |
| Implementers |
worker; ceilings per references/fix-spec-template.md rule 8 — ≤3 tasks per batch, ≤3 files per task, one concern ≈ one file as the target |
top; batches as specced |
| Validators |
session (one tier above implementers) — one fresh validator per phase |
top (equal tier but fresh, per the ceiling rule in references/model-tiers.md) — a fresh validation wave per phase |
| Skill loading |
mandatory — each implementer loads the skills matching its batch's file types from the file-type → skill map; the nuke-lean charter is part of every implementer prompt — delegated code grows guards and wrappers fastest |
same |
| Fix-loop cap per phase |
3 cycles |
5 cycles |
| Final sweep |
session: one reviewer covering correctness + security + structure/quality, plus the completeness checklist in the same pass |
top: a correctness+security reviewer, a structure+quality reviewer, and a completeness agent — separate fresh agents |
| Cost stance |
lean waves; thoroughness comes from stronger validators, the fix loop, and the final sweep |
costs do not matter; as many subagents as needed |
Everything else is shared between input modes: the per-phase loop, the progress file, the gates discipline, and the report.
Mandates
- Respect the mode and the tier table. Never silently upgrade or downgrade a role's tier. Light never spawns a validation wave where one validator suffices; full never shrinks a wave to save tokens.
- Main context stays thin. The orchestrator reads only the spec or contract, the progress file, and agent summaries. All implementation and validation detail lives inside subagents.
- Fix everything. Every task, every severity — including low and info. Skipping anything is failure, not triage.
- Implementers never validate their own work. Validation is always fresh agents, one tier above.
- No
git add / git commit / git stash. No .bak files. The working tree is left for human review.
- Evidence before claims. No success statement without pasted gate output — verbatim, never summarized — and per-task validated acceptance criteria.
- Escalate instead of guessing. An implementer whose task's
Accept: (or done-criterion) is not mechanically checkable (grep, test run, or quoted line) stops and returns the task to the orchestrator with the ambiguity named — it never improvises an interpretation.
- Escalate instead of stretching (task mode). More than 5 done-criteria, contradictory requirements, or >~10 files → STOP and recommend nuke-spec (spec → exec). A hard design call → nuke-think before dispatch. Implementers never receive a vague ask — a cheap model amplifies vagueness into invention.
- The ledger precedes the wave. No implementation wave dispatches before the plan block has printed and
exec-plan.md (or task mode's plan.md), exec-progress.md with every phase listed as pending, and exec.md exist on disk. Any of them missing, or exec-progress.md listing fewer phases than the spec → back to Phase 0. None of this waits on the user — materialize, then move, same turn.
Phase 0 — Preflight
Read references/preflight.md and run its steps. Preflight never asks — the plan prints and the run starts (--ask is the only gate, plan the only stop) — but it always materializes before it moves: the run ledger below is written to disk first, wave 1 dispatches immediately after, in the same turn.
Spec mode:
- Read the spec fully. It is self-contained: executor context (quality bar + tier assignments), per-path-prefix Gates table, file-type → skill map, dependency-ordered phases, batches, tasks, coverage map including
U-### unverified entries.
- Re-measure every task yourself — files touched and touched-file mass (
wc -l, run now) against the tier ceilings in references/fix-spec-template.md rule 8. Never trust the spec's own sizing: an architect that wrote oversized tasks did not flag them either. Any task over the executing tier's ceiling → apply the nuke-split protocol inline now (seam rules and all), write <spec>.split.md next to the original, execute that instead, and note split: applied inline (N tasks → M) in the plan block. Oversized work is never handed to an implementer that cannot hold it — and never bounced back to the user to go run nuke-split by hand.
- If an
exec-progress.md (or a legacy fix-progress.md) exists next to the spec, resume from the first incomplete phase instead of starting over.
Task mode:
- Contract (Mandate 8): distill the task into 2–5 falsifiable done-criteria, non-goals, and constraints from the repo's instruction files — read now, not recalled. A brief file is consumed as-is when its criteria are falsifiable. No resolvable contract → ask the user.
- Shape the work: read the files the task will touch (orchestrator-level skim: exports, structure — not full contents into context); cut the file plan into batches of disjoint files at the worker ceilings of references/fix-spec-template.md rule 8 (≤3 files per task, ≤3 tasks per batch — one concern ≈ one file as the target, the same cut nuke-split makes on specs). The contract + batches form a single-phase plan executed by the shared loop below.
Both modes — baseline. Resolve the per-path-prefix gates table and the file-type → skill map (references/stack-adapters.md; spec mode reads them from the spec), run every matching row once, then act by row:
| Baseline result |
Action |
| gate passes |
record PASS — any later failure in its rows belongs to this run; never written off as "pre-existing" |
| gate runs, code or tests fail |
spec mode: adopt as the run's first task. Task mode: record in the plan block; later phases prove no NEW failures — fixing it is offered, never silently absorbed into the contract |
| gate cannot run (missing install, misdeclared command) |
unblock protocol in references/preflight.md: fix the tooling first, then take the real baseline |
| an area has no gates |
gateless-repo rule in references/stack-adapters.md: bootstrap a minimal gate as the first task, or declare gates: NONE — validation is review-only. Never silently validate against nothing |
The run ledger — materialized in order, then the wave (Mandate 9):
Print the plan block with the full round breakdown — always printed, never asked about (gate only with --ask; plan → print and stop):
## Nuke Preflight — nuke-exec (spec mode)
spec: .nuke/2026-07-02-141530-src-engine/fix-spec.md · mode: light
phases: 3 · batches: 7 · tasks: 19 · re-measured: 0 oversized (wc -l)
phase 1 (structural): 1.A [T-001..T-003] · 1.B [T-004..T-005]
phase 2 (extractions): 2.A [T-006..T-010] · 2.B [T-011..T-014] · 2.C [T-015..T-016]
phase 3 (tests + docs): 3.A [T-017..T-019]
tiers: implementers worker · validators session · final sweep session
skill map: .ts → typescript-best-practices · .tsx → react-senior-guide
baseline: tests PASS · typecheck PASS · lint FAIL (2 errors → adopted as T-000)
estimate: exec band — ~10–16 agents (7 implementers + per-phase validators + fix cycles)
Task mode: the phase lines are replaced by the contract (done-criteria + non-goals) and its batch list.
Write the preflight record: spec mode → exec-plan.md next to the spec (never plan.md, so a spec run's own plan.md survives); task mode → plan.md in a fresh run_dir = .nuke/<YYYY-MM-DD>-<HHmmss>-exec-<slug>/, on collision append -2, -3, ….
Write exec-progress.md beside it, prepopulated with EVERY phase, its batches, and its task range — all pending (format below; task mode: the contract as one phase with its batches). This is the file resume reads — a run that skipped it cannot be resumed.
Write exec.md next to that — the evidence record: per-batch results, validator verdicts per cycle, gate outputs verbatim, final verdict. The Report reads from exec.md; exec-progress.md tracks phase state.
Dispatch wave 1 — same turn, nothing to wait for.
Progress format (exec-progress.md)
Written at Phase 0 exactly in this shape — every phase listed before any of them runs, all pending. Updated after EVERY validation cycle (the Cycles column), not just at phase completion, and reprinted to the user at each phase boundary.
# Exec Progress
input: fix-spec.md (spec mode) | mode: light | started: 2026-07-02
baseline: tests PASS · typecheck PASS · lint FAIL (2 errors — adopted as task T-000)
| Phase | Batches | Tasks | Status | Cycles | Notes |
|---|---|---|---|---|---|
| 1 — structural | 1.A, 1.B | T-001..T-005 | pending | — | |
| 2 — extractions | 2.A, 2.B, 2.C | T-006..T-016 | pending | — | |
| 3 — tests + docs | 3.A | T-017..T-019 | pending | — | |
Per-phase loop
For each phase in spec order (task mode: the contract is one phase):
- Implementation wave — one subagent per batch, all batches of the phase in parallel (they touch disjoint files by construction). Each implementer receives:
- the spec's Executor context block + only its own tasks, copied verbatim — task text, file lists, and
Accept: lines exactly as the spec wrote them, never paraphrased by the orchestrator; paraphrase is where constraints die (task mode: the contract verbatim + its batch)
- write ownership of only its batch's files
- the mandatory skill list for its file types from the file-type → skill map, plus the nuke-lean charter — load before writing
- return format: per task → status, files changed with line refs, deviations from the spec or contract; a non-checkable
Accept: → escalate per Mandate 7
- Validation — fresh subagents one tier above the implementers, never the implementers (light: one
session validator for the whole phase; full: a top wave). Validators receive the spec or contract, the diff, and repo access — never the implementers' reasoning; the missing anchoring is the design:
- per task: acceptance criteria (task mode: done-criteria,
met | partial | unmet) verified mechanically with file:line evidence and a quoted line each
- re-audit of every changed file against the quality bar — hunting issues the changes introduced (new duplication, new slop, broken callers of changed contracts, regressions, convention drift) via the four charter bundles of references/lens-catalog.md over the diff and its blast radius. 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
- re-judge every
U-### entry the coverage map routes to this phase (spec mode): real → add to the fix loop as a task; not real → close with a written reason in exec-progress.md
- run the Gates-table rows matching the phase's changed path prefixes, full output captured
- Fix loop — any failed criterion, failed gate, escalated task, or new finding of any severity → dispatch fix subagents with the exact findings → re-run validation; bump the phase's Cycles column in
exec-progress.md every cycle. Repeat until clean. Cap per phase (light: 3 cycles, full: 5) — if hit, stop, record honest status in exec-progress.md, and report the remaining issues. Never proceed past a dirty phase.
- Mark the phase
done in exec-progress.md only when validation is fully clean, and reprint the progress table to the user before dispatching the next phase.
Final verification
After the last phase:
- Every Gates-table row — capture outputs verbatim.
- Final sweep over the complete changed-file set, per the mode table above.
- Completeness checklist: every T-### / done-criterion done, every coverage-map ID (F-###/REQ-###) resolved, every U-### fixed or closed-with-reason, no
.bak files, no debug leftovers, no commented-out code.
- Anything found → one more fix loop, then re-sweep.
Report
- Input mode, the final
exec-progress.md table verbatim, issue counts fixed per phase, U-### dispositions (spec mode)
- Gate outputs (verbatim — no summaries in place of evidence)
- Append the run's calibration line to
.nuke/calibration.log (format in references/preflight.md)
- Verdict: "CLEAN — every task validated, all gates pass, working tree ready for review (nothing committed)" — or the honest list of remaining blockers and exactly where the run stopped
- Task mode: recommend nuke-verify with the contract as intent when the user wants an independent second pass on the delegated build.
Orchestration notes
- Claude Code: Workflow tool (phases map to
phase(), batches to parallel(), the fix loop to a while-loop) or parallel Agent calls with run_in_background. Pass model/effort per agent from the tier table in references/model-tiers.md. With --ask: the gate via AskUserQuestion, options run / switch mode / narrow scope.
- Codex / OpenCode / Cursor / other CLIs: spawn subagents per batch, mapping tiers to their model flags. Sequential fallback: one batch at a time, each in a FRESH context, same validation protocol.
- If the environment offers isolated worktrees and two batches unexpectedly conflict, isolate them; otherwise serialize the conflicting batches — never let two agents write the same file concurrently.
1---2name: nuke-exec3description: Use when work should be executed by delegated subagents — a spec produced by nuke-audit, nuke-review, nuke-spec, or nuke-verify ("nuke exec", "execute the fix spec", "nuke fix" — its former name), or a clear task stated inline without a spec ("implement this with agents", "build this cheaply" — formerly nuke-implement). Spec in → phased execution; task in → contract first, then a single-phase execution. For the session's own hands, nuke-code applies; for judging finished work, nuke-verify.4---56# Nuke Exec78The family's one executor (map: references/family-map.md — producers `spec`/`audit`/`review` feed it; `verify` closes behind it). It runs in one of two input modes, resolved at preflight:910- **spec mode** — the argument is a path to a family spec (fix-spec.md from nuke-audit/nuke-review, spec.md from nuke-spec, an escalation spec from nuke-verify, or any file following references/fix-spec-template.md). Executed phase by phase until everything meets the quality bar recorded in the spec's executor context.11- **task mode** — the argument is task text (or a brief file that is not a family spec). Preflight distills it into a contract — 2–5 falsifiable done-criteria plus non-goals — and the contract is executed as a single phase. No spec required; the contract stands in for one.1213Core principle — asymmetric verification: weak generation + strong verification + fix loop = strong output. Validators are always one tier above implementers.1415## Arguments1617`[mode]` — `light` | `full` | `plan`. If omitted: spec mode uses the `mode:` recorded in the spec header, defaulting to `light`; task mode defaults to `light`. `plan` runs preflight, prints the plan block, and STOPS — nothing is written.18`<input>` — a spec path → spec mode; anything else (inline text, a notes/brief file) → task mode. The spec-mode test is countable, never judged: the file has an `## Executor context` heading, at least one `### Batch` heading, and `Accept:` lines — all three, or it is treated as a task brief and the downgrade is named in the plan block, never silent.19`--ask` — pause at the preflight plan for confirmation; default is no gate — the plan prints and the run starts (references/preflight.md).2021## Modes2223Tier vocabulary (`clerk`/`worker`/`session`/`top`) and per-platform mechanics: references/model-tiers.md. Respect the fallback: platforms without per-agent overrides → every role inherits the session model.2425| | **light** — cheap-implementer profile (default) | **full** |26|---|---|---|27| Implementers | `worker`; ceilings per references/fix-spec-template.md rule 8 — ≤3 tasks per batch, ≤3 files per task, one concern ≈ one file as the target | `top`; batches as specced |28| Validators | `session` (one tier above implementers) — one fresh validator per phase | `top` (equal tier but fresh, per the ceiling rule in references/model-tiers.md) — a fresh validation wave per phase |29| Skill loading | mandatory — each implementer loads the skills matching its batch's file types from the file-type → skill map; the nuke-lean charter is part of every implementer prompt — delegated code grows guards and wrappers fastest | same |30| Fix-loop cap per phase | 3 cycles | 5 cycles |31| Final sweep | `session`: one reviewer covering correctness + security + structure/quality, plus the completeness checklist in the same pass | `top`: a correctness+security reviewer, a structure+quality reviewer, and a completeness agent — separate fresh agents |32| Cost stance | lean waves; thoroughness comes from stronger validators, the fix loop, and the final sweep | costs do not matter; as many subagents as needed |3334Everything else is shared between input modes: the per-phase loop, the progress file, the gates discipline, and the report.3536## Mandates37381. **Respect the mode and the tier table.** Never silently upgrade or downgrade a role's tier. Light never spawns a validation wave where one validator suffices; full never shrinks a wave to save tokens.392. **Main context stays thin.** The orchestrator reads only the spec or contract, the progress file, and agent summaries. All implementation and validation detail lives inside subagents.403. **Fix everything.** Every task, every severity — including low and info. Skipping anything is failure, not triage.414. **Implementers never validate their own work.** Validation is always fresh agents, one tier above.425. **No `git add` / `git commit` / `git stash`. No `.bak` files.** The working tree is left for human review.436. **Evidence before claims.** No success statement without pasted gate output — verbatim, never summarized — and per-task validated acceptance criteria.447. **Escalate instead of guessing.** An implementer whose task's `Accept:` (or done-criterion) is not mechanically checkable (grep, test run, or quoted line) stops and returns the task to the orchestrator with the ambiguity named — it never improvises an interpretation.458. **Escalate instead of stretching (task mode).** More than 5 done-criteria, contradictory requirements, or >~10 files → STOP and recommend nuke-spec (spec → exec). A hard design call → nuke-think before dispatch. Implementers never receive a vague ask — a cheap model amplifies vagueness into invention.469. **The ledger precedes the wave.** No implementation wave dispatches before the plan block has printed and `exec-plan.md` (or task mode's `plan.md`), `exec-progress.md` with every phase listed as `pending`, and `exec.md` exist on disk. Any of them missing, or exec-progress.md listing fewer phases than the spec → back to Phase 0. None of this waits on the user — materialize, then move, same turn.4748## Phase 0 — Preflight4950Read references/preflight.md and run its steps. Preflight never asks — the plan prints and the run starts (`--ask` is the only gate, `plan` the only stop) — but it always **materializes before it moves**: the run ledger below is written to disk first, wave 1 dispatches immediately after, in the same turn.5152**Spec mode:**53541. Read the spec fully. It is self-contained: executor context (quality bar + tier assignments), per-path-prefix Gates table, file-type → skill map, dependency-ordered phases, batches, tasks, coverage map including `U-###` unverified entries.552. **Re-measure every task yourself** — files touched and touched-file mass (`wc -l`, run now) against the tier ceilings in references/fix-spec-template.md rule 8. Never trust the spec's own sizing: an architect that wrote oversized tasks did not flag them either. Any task over the executing tier's ceiling → apply the nuke-split protocol inline now (seam rules and all), write `<spec>.split.md` next to the original, execute that instead, and note `split: applied inline (N tasks → M)` in the plan block. Oversized work is never handed to an implementer that cannot hold it — and never bounced back to the user to go run nuke-split by hand.563. If an `exec-progress.md` (or a legacy `fix-progress.md`) exists next to the spec, resume from the first incomplete phase instead of starting over.5758**Task mode:**59601. **Contract** (Mandate 8): distill the task into 2–5 falsifiable done-criteria, non-goals, and constraints from the repo's instruction files — read now, not recalled. A brief file is consumed as-is when its criteria are falsifiable. No resolvable contract → ask the user.612. **Shape the work**: read the files the task will touch (orchestrator-level skim: exports, structure — not full contents into context); cut the file plan into batches of disjoint files at the worker ceilings of references/fix-spec-template.md rule 8 (≤3 files per task, ≤3 tasks per batch — one concern ≈ one file as the target, the same cut nuke-split makes on specs). The contract + batches form a single-phase plan executed by the shared loop below.6263**Both modes — baseline.** Resolve the per-path-prefix gates table and the file-type → skill map (references/stack-adapters.md; spec mode reads them from the spec), run every matching row once, then act by row:6465| Baseline result | Action |66|---|---|67| gate passes | record PASS — any later failure in its rows belongs to this run; never written off as "pre-existing" |68| gate runs, code or tests fail | spec mode: adopt as the run's first task. Task mode: record in the plan block; later phases prove no NEW failures — fixing it is offered, never silently absorbed into the contract |69| gate cannot run (missing install, misdeclared command) | unblock protocol in references/preflight.md: fix the tooling first, then take the real baseline |70| an area has no gates | gateless-repo rule in references/stack-adapters.md: bootstrap a minimal gate as the first task, or declare `gates: NONE — validation is review-only`. Never silently validate against nothing |7172**The run ledger — materialized in order, then the wave (Mandate 9):**73741. Print the plan block with the full round breakdown — always printed, never asked about (gate only with `--ask`; `plan` → print and stop):7576 ```77 ## Nuke Preflight — nuke-exec (spec mode)78 spec: .nuke/2026-07-02-141530-src-engine/fix-spec.md · mode: light79 phases: 3 · batches: 7 · tasks: 19 · re-measured: 0 oversized (wc -l)80 phase 1 (structural): 1.A [T-001..T-003] · 1.B [T-004..T-005]81 phase 2 (extractions): 2.A [T-006..T-010] · 2.B [T-011..T-014] · 2.C [T-015..T-016]82 phase 3 (tests + docs): 3.A [T-017..T-019]83 tiers: implementers worker · validators session · final sweep session84 skill map: .ts → typescript-best-practices · .tsx → react-senior-guide85 baseline: tests PASS · typecheck PASS · lint FAIL (2 errors → adopted as T-000)86 estimate: exec band — ~10–16 agents (7 implementers + per-phase validators + fix cycles)87 ```8889 Task mode: the phase lines are replaced by the contract (done-criteria + non-goals) and its batch list.902. Write the preflight record: spec mode → `exec-plan.md` next to the spec (never `plan.md`, so a spec run's own plan.md survives); task mode → `plan.md` in a fresh `run_dir = .nuke/<YYYY-MM-DD>-<HHmmss>-exec-<slug>/`, on collision append `-2`, `-3`, ….913. Write `exec-progress.md` beside it, prepopulated with EVERY phase, its batches, and its task range — all `pending` (format below; task mode: the contract as one phase with its batches). This is the file resume reads — a run that skipped it cannot be resumed.924. Write `exec.md` next to that — the evidence record: per-batch results, validator verdicts per cycle, gate outputs verbatim, final verdict. The Report reads from exec.md; exec-progress.md tracks phase state.935. Dispatch wave 1 — same turn, nothing to wait for.9495### Progress format (`exec-progress.md`)9697Written at Phase 0 exactly in this shape — every phase listed before any of them runs, all `pending`. Updated after EVERY validation cycle (the Cycles column), not just at phase completion, and reprinted to the user at each phase boundary.9899```markdown100# Exec Progress101input: fix-spec.md (spec mode) | mode: light | started: 2026-07-02102baseline: tests PASS · typecheck PASS · lint FAIL (2 errors — adopted as task T-000)103104| Phase | Batches | Tasks | Status | Cycles | Notes |105|---|---|---|---|---|---|106| 1 — structural | 1.A, 1.B | T-001..T-005 | pending | — | |107| 2 — extractions | 2.A, 2.B, 2.C | T-006..T-016 | pending | — | |108| 3 — tests + docs | 3.A | T-017..T-019 | pending | — | |109```110111## Per-phase loop112113For each phase in spec order (task mode: the contract is one phase):1141151. **Implementation wave** — one subagent per batch, all batches of the phase in parallel (they touch disjoint files by construction). Each implementer receives:116 - the spec's Executor context block + only its own tasks, copied **verbatim** — task text, file lists, and `Accept:` lines exactly as the spec wrote them, never paraphrased by the orchestrator; paraphrase is where constraints die (task mode: the contract verbatim + its batch)117 - write ownership of only its batch's files118 - the mandatory skill list for its file types from the file-type → skill map, plus the nuke-lean charter — load before writing119 - return format: per task → status, files changed with line refs, deviations from the spec or contract; a non-checkable `Accept:` → escalate per Mandate 71202. **Validation** — fresh subagents one tier above the implementers, never the implementers (light: one `session` validator for the whole phase; full: a `top` wave). Validators receive the spec or contract, the diff, and repo access — never the implementers' reasoning; the missing anchoring is the design:121 - per task: acceptance criteria (task mode: done-criteria, `met | partial | unmet`) verified mechanically with file:line evidence and a quoted line each122 - re-audit of every changed file against the quality bar — hunting issues the changes *introduced* (new duplication, new slop, broken callers of changed contracts, regressions, convention drift) via the four charter bundles of references/lens-catalog.md over the diff and its blast radius. 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 reported123 - **re-judge every `U-###` entry** the coverage map routes to this phase (spec mode): real → add to the fix loop as a task; not real → close with a written reason in `exec-progress.md`124 - run the Gates-table rows matching the phase's changed path prefixes, full output captured1253. **Fix loop** — any failed criterion, failed gate, escalated task, or new finding of **any** severity → dispatch fix subagents with the exact findings → re-run validation; bump the phase's Cycles column in `exec-progress.md` every cycle. Repeat until clean. Cap per phase (light: 3 cycles, full: 5) — if hit, stop, record honest status in `exec-progress.md`, and report the remaining issues. Never proceed past a dirty phase.1264. Mark the phase `done` in `exec-progress.md` only when validation is fully clean, and reprint the progress table to the user before dispatching the next phase.127128## Final verification129130After the last phase:1311321. Every Gates-table row — capture outputs verbatim.1332. Final sweep over the complete changed-file set, per the mode table above.134 - Completeness checklist: every T-### / done-criterion done, every coverage-map ID (F-###/REQ-###) resolved, every U-### fixed or closed-with-reason, no `.bak` files, no debug leftovers, no commented-out code.1353. Anything found → one more fix loop, then re-sweep.136137## Report138139- Input mode, the final `exec-progress.md` table verbatim, issue counts fixed per phase, U-### dispositions (spec mode)140- Gate outputs (verbatim — no summaries in place of evidence)141- Append the run's calibration line to `.nuke/calibration.log` (format in references/preflight.md)142- Verdict: **"CLEAN — every task validated, all gates pass, working tree ready for review (nothing committed)"** — or the honest list of remaining blockers and exactly where the run stopped143- Task mode: recommend **nuke-verify** with the contract as intent when the user wants an independent second pass on the delegated build.144145## Orchestration notes146147- **Claude Code:** Workflow tool (phases map to `phase()`, batches to `parallel()`, the fix loop to a while-loop) or parallel Agent calls with `run_in_background`. Pass `model`/`effort` per agent from the tier table in references/model-tiers.md. With `--ask`: the gate via AskUserQuestion, options run / switch mode / narrow scope.148- **Codex / OpenCode / Cursor / other CLIs:** spawn subagents per batch, mapping tiers to their model flags. Sequential fallback: one batch at a time, each in a FRESH context, same validation protocol.149- If the environment offers isolated worktrees and two batches unexpectedly conflict, isolate them; otherwise serialize the conflicting batches — never let two agents write the same file concurrently.