mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-06 08:18:58 +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>
57 lines
2.1 KiB
TOML
57 lines
2.1 KiB
TOML
[profile.default]
|
|
# Default-profile tests: flag SLOW after 1s, hard-kill after 3s
|
|
slow-timeout = { period = "1s", terminate-after = 3 }
|
|
leak-timeout = "500ms"
|
|
|
|
[[profile.default.overrides]]
|
|
filter = "package(fabro-cli)"
|
|
slow-timeout = { period = "6s", terminate-after = 4 }
|
|
|
|
[[profile.default.overrides]]
|
|
filter = "package(fabro-server)"
|
|
slow-timeout = { period = "5s", terminate-after = 4 }
|
|
|
|
[[profile.default.overrides]]
|
|
filter = "package(fabro-server) & test(all_spec_routes_are_routable)"
|
|
slow-timeout = { period = "15s", terminate-after = 4 }
|
|
|
|
[[profile.default.overrides]]
|
|
filter = "package(fabro-workflow)"
|
|
slow-timeout = { period = "2s", terminate-after = 3 }
|
|
|
|
[[profile.default.overrides]]
|
|
filter = "package(twin-openai) & test(debug_page_renders_in_headless_chrome)"
|
|
slow-timeout = { period = "30s", terminate-after = 1 }
|
|
|
|
[profile.e2e]
|
|
# E2E (ignored) tests: flag SLOW after 10s, hard-kill after 30s
|
|
slow-timeout = { period = "10s", terminate-after = 3 }
|
|
leak-timeout = "500ms"
|
|
|
|
[profile.ci]
|
|
# CI runners are slower and more variable than dev machines; give tests room
|
|
# before flagging them as hung. CI uses one uniform timeout for every test.
|
|
#
|
|
# Nextest falls back to `[[profile.default.overrides]]` when the active
|
|
# profile has no matching override for a given setting, so the per-package
|
|
# overrides below re-assert the CI timeout for packages narrowed down in
|
|
# profile.default. See
|
|
# https://nexte.st/docs/configuration/per-test-overrides/#override-precedence
|
|
slow-timeout = { period = "30s", terminate-after = 4 }
|
|
leak-timeout = "2s"
|
|
|
|
[[profile.ci.overrides]]
|
|
filter = "package(fabro-cli)"
|
|
slow-timeout = { period = "30s", terminate-after = 4 }
|
|
|
|
[[profile.ci.overrides]]
|
|
filter = "package(fabro-server)"
|
|
slow-timeout = { period = "30s", terminate-after = 4 }
|
|
|
|
[[profile.ci.overrides]]
|
|
filter = "package(fabro-workflow)"
|
|
slow-timeout = { period = "30s", terminate-after = 4 }
|
|
|
|
[[profile.ci.overrides]]
|
|
filter = "package(twin-openai) & test(debug_page_renders_in_headless_chrome)"
|
|
slow-timeout = { period = "60s", terminate-after = 2 }
|