mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-24 00:51:19 +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> |
||
|---|---|---|
| .. | ||
| artifact_cp.rs | ||
| artifact_list.rs | ||
| attach.rs | ||
| config.rs | ||
| create.rs | ||
| diff.rs | ||
| discord.rs | ||
| docs.rs | ||
| doctor.rs | ||
| exec.rs | ||
| fabro.rs | ||
| fork.rs | ||
| graph.rs | ||
| inspect.rs | ||
| install.rs | ||
| json_global.rs | ||
| logs.rs | ||
| mod.rs | ||
| model.rs | ||
| model_list.rs | ||
| model_test.rs | ||
| parse.rs | ||
| pr.rs | ||
| pr_close.rs | ||
| pr_create.rs | ||
| pr_list.rs | ||
| pr_merge.rs | ||
| pr_view.rs | ||
| preflight.rs | ||
| provider.rs | ||
| provider_login.rs | ||
| ps.rs | ||
| render_graph.rs | ||
| repo.rs | ||
| repo_deinit.rs | ||
| repo_init.rs | ||
| resume.rs | ||
| rewind.rs | ||
| rm.rs | ||
| run.rs | ||
| runner.rs | ||
| sandbox_cp.rs | ||
| sandbox_preview.rs | ||
| sandbox_ssh.rs | ||
| secret.rs | ||
| secret_list.rs | ||
| secret_rm.rs | ||
| secret_set.rs | ||
| send_analytics.rs | ||
| send_panic.rs | ||
| server_start.rs | ||
| server_status.rs | ||
| server_stop.rs | ||
| start.rs | ||
| store.rs | ||
| store_dump.rs | ||
| support.rs | ||
| system.rs | ||
| system_df.rs | ||
| system_events.rs | ||
| system_info.rs | ||
| system_prune.rs | ||
| test_panic.rs | ||
| top_level.rs | ||
| uninstall.rs | ||
| upgrade.rs | ||
| validate.rs | ||
| version.rs | ||
| wait.rs | ||
| workflow.rs | ||
| workflow_create.rs | ||
| workflow_list.rs | ||