fix(review): live-crew findings — defer slice capture, judge fencing, allowlist, fanout fallback
Commit

A full-crew dogfood review of this branch (request changes, 4 mediums + 1 low, all verified) on the integrated stack:
-
capScopeListsToBudget's 'defer slices.Reverse(sc.Commits)' captured the pre-trim slice header, so byte-trimmed commit lists reversed the FULL backing array and the trimmed view held the OLDEST commits — inverting keep-newest exactly when truncation matters. Now a closure re-reading sc.Commits at return; pinned by a test that reproduces the inversion.
-
writeSynthesisScopeGate wrote branch-controlled file paths raw into the judge prompt ahead of the discard rule — the same injection class fixed for worker prompts, but feeding the FINAL verdict gate. The list now renders inside a dynamic fence introduced as untrusted data, instructions outside.
-
The allowlist granted only 'entire checkpoint explain' while the injected checkpoint context tells reviewers to run 'entire explain <id>' — headless -p denied the prompt's own guidance. Added Bash(entire explain:*).
-
Unconditional explodeSkillWorkers regressed single multi-skill agents without a review-runner adapter (previously served by RunMarkerFallback; explosion forced them into the multi-agent branch which hard-fails, with a circular --agent workaround). Explosion now skips adapter-less agents.
-
picker.go task-persistence comment referenced a nonexistent workerTask function; aligned with the actual runtime contract.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com Entire-Checkpoint: 01KX14MDBGM3BNQK1JKDH030FY