fabro/lib
Bryan Helmkamp 2f8ee2ff36
Name the fold's repeated shapes once: completion, model usage, pause, conclusion
Four small duplications in the projection fold: a StageCompletion
literal built three times from an attempt's status, a StageModelUsage
literal built three times with no request controls, the pause and
unpause status arithmetic written four times across the coordinator and
lifecycle folds, and a bare Conclusion built beside the full one. Each is
now one function: completion() in the engine fold, StageModelUsage::new,
RunStatus::paused and RunStatus::unpaused beside blocked_reason (with
settle_control for the pending control they clear), and
Conclusion::outcome_only.

One case reads differently: a coordinator RunPaused that lands on a run
already paused behind a block now keeps that block for the unpause, as
the lifecycle Paused already did, instead of dropping it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-20 15:01:14 -04:00
..
apps Share one poison-tolerant lock helper from fabro-util 2026-09-20 14:47:46 -04:00
components Name the fold's repeated shapes once: completion, model usage, pause, conclusion 2026-09-20 15:01:14 -04:00
foundation Name the fold's repeated shapes once: completion, model usage, pause, conclusion 2026-09-20 15:01:14 -04:00
packages/fabro-api-client Forward every configured sandbox plugin to the Petri worker 2026-09-19 14:45:42 -04:00