mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-06 02:48:25 +00:00
## Summary Implemented ACP support as a first-class Fabro backend alongside `api` and `cli`. This adds a new `fabro-acp` crate using the official ACP Rust crates, routes `backend=\"acp\"` for agent and prompt nodes, adds sandbox stdio support for local/Docker/test-support paths, emits ACP workflow events/projections, updates server steerability handling, validation, documentation, and black-box CLI coverage. ## Test Plan Passed strict non-live verification: - `ulimit -n 4096 && cargo nextest run -p fabro-workflow --run-ignored all --no-fail-fast` — 1162 passed, 0 skipped. - `ulimit -n 4096 && cargo nextest run -p fabro-acp -p fabro-sandbox -p fabro-workflow -p fabro-validate -p fabro-store -p fabro-server -p fabro-cli --run-ignored all --no-fail-fast -E 'not test(daytona_streaming_live_smoke)'` — 3125 passed. - `cargo build --workspace` — passed. - `ulimit -n 4096 && cargo nextest run --workspace --run-ignored all --no-fail-fast -E 'not test(daytona_streaming_live_smoke)'` — 5666 passed. - `cargo +nightly-2026-04-14 fmt --check --all` — passed. - `cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D warnings` — passed. Live-environment tests skipped/excluded under explicit user override: - `daytona_streaming_live_smoke` was excluded from final nextest runs because it requires live Daytona infrastructure and `DAYTONA_API_KEY`. - Confirmed with `env -u DAYTONA_API_KEY cargo test -p fabro-sandbox --features daytona --test daytona_streaming_live daytona_streaming_live::daytona_streaming_live_smoke -- --ignored --exact --nocapture`: failed fast with `DAYTONA_API_KEY must be set to run this live smoke test`.
61 lines
2.3 KiB
TOML
61 lines
2.3 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-devcontainer) & test(resolve_features_integration)"
|
|
slow-timeout = { period = "10s", terminate-after = 3 }
|
|
|
|
[[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 }
|