mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
## Summary Stacked cleanup of the `canonicalize blocked run status` work (local commit `d13cdf374`) plus reconciliation with origin's `canonicalize paginated run list responses` (origin commit `8ab689da7`). Both efforts ran in parallel and diverged on the column name (`blocked` vs `waiting`) and on how the board response is shaped — this PR converges them, keeping `blocked` as the canonical column id while adopting origin's `column` field on `RunListItem` and `StoreRunSummary` shape. Also fixes a production-worker regression introduced by the canonicalization: the worker's start-precondition only accepted `Submitted | Starting`, so once runs started transitioning through `Queued` on the way to `Starting`, every subprocess-worker run failed with `Precondition failed: cannot start run: status is Queued`. That cascaded into ~90 failing CLI/server integration tests locally. ## Commits 1. `f65843168` refactor(runs): simplify blocked status follow-ups 2. `1492d956c` chore: resolve clippy warnings 3. `676fd9f44` first merge of origin/main 4. `23fc92a2f` **fix(runs): allow Queued status in start precondition** ← the cascade-fix 5. `36b507a83` refactor: simplify pause/unpause + dedupe web status tables 6. `8d8d27748` refactor(workflow): encapsulate BlockedStateTracker inside HumanHandler 7. `1c17fda35` second merge of origin/main — resolves waiting vs blocked 8. `4cd3ef7b1` refactor(workflow): Mutex<usize> → AtomicUsize 9. `2e5a58e8a` fix(demo): align run-4 lifecycle status with Blocked board column ## Test plan - [x] fmt, clippy, build, doctests all clean - [x] `cargo nextest run --workspace` — **4092/4092 pass** - [x] `bun test` — **26/26 pass**, typecheck + production build clean - [x] Manual CLI repro of the Queued-precondition fix - [x] Browser smoke test: all 5 columns render with correct labels/colors, demo run-4 appears in Blocked lane with question text intact ## Known follow-up (not blocking) A "paused-while-blocked" run (status `Paused` + `blocked_reason: Some`) lands in the `running` column because the visible status chooses `Paused` over `Blocked`. The pending question is not prominent on the board. Addressing it would require `board_column()` to branch on `(status, blocked_reason)` rather than just `status` — worth a separate ticket. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| administration | ||
| agents | ||
| api-reference | ||
| brainstorms | ||
| changelog | ||
| core-concepts | ||
| examples | ||
| execution | ||
| getting-started | ||
| human-tools | ||
| ideation | ||
| images | ||
| integrations | ||
| languages | ||
| logo | ||
| plans | ||
| reference | ||
| superpowers/specs | ||
| tutorials | ||
| workflows | ||
| .mintignore | ||
| docs.json | ||
| dot-highlight.js | ||
| favicon.svg | ||