Give fabro-workflow tests a package-specific timeout budget so the
parallel git branching integration test does not hit the default
3-second hard kill under full-suite load.
Remove redundant config_change_after_submission test (1.67s avg) from
fabro-server — already covered by start_run_persists_full_settings_snapshot
and architectural guarantees. Defer reqwest::Client init past validation
in web_search tool so missing-key/missing-query tests skip macOS proxy
discovery (1.56s → 9ms). Move telemetry panic event tests to a CLI IT
via a new cfg(debug_assertions) __test_panic subcommand. Lower default
nextest SLOW threshold from 3s to 1.5s with 2x headroom over the new
worst-case (0.84s).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Make the full workspace nextest run reliable after the run-store migration,
restore legacy test-harness projections needed by workflow integration tests,
and clear the remaining fmt/clippy issues in the touched paths.
These tests invoke the CLI binary and take longer than unit tests,
so flag SLOW at 5s and hard-kill at 20s.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- retro_agent::upload_data_files reads from RunStore first with filesystem
fallback for progress.jsonl, checkpoint, run record, and start record
- write_finalize_commit reads retro.json from store before falling back to disk
- persist_terminal_engine_failure uses build_conclusion_from_store instead of
disk-only build_conclusion
- open_or_hydrate_run tolerates malformed checkpoint/conclusion/retro/sandbox
JSON files during hydration (warns and skips instead of failing)
- Box<DbReader> in SlateRunDb fixes clippy large_enum_variant warning
- Fix tests that called open_or_hydrate_run on dirs without run.json
- Nextest test-groups replace global thread cap for better parallelism
- opt-level=1 for dev dependencies shrinks test binary sizes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The workspace has ~33 test binaries (30-84 MB each). At full num-cpus
concurrency the I/O from loading those binaries saturates the system
and pushes trivial tests past the 4s kill timeout.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
## Summary
- **Unify foreground and detach code paths**: Both `fabro run` modes now
go through the same `create_run() + start_run()` pipeline, with
foreground adding `attach_run()`. Only `--preflight` remains as a
special case.
- **Fix three bugs in create→start→attach path**: (1) `_run_engine`
crashed for `.fabro` workflows by hardcoding `run.toml` — now falls back
to `graph.fabro`; (2) `attach_run` couldn't detect crashed engines due
to zombie processes — `start_run` now returns the `Child` handle; (3)
`create_run` ignored `--run-id`.
- **Configure nextest slow-timeout profiles**: Tighten unit test timeout
to 2s slow / 4s kill, add `e2e` profile with 10s/30s. Switch CI and docs
to `cargo nextest run`.
## Test plan
- [ ] `cargo nextest run --workspace` passes with new timeout profiles
- [ ] `fabro run <workflow>` works in foreground mode (create + start +
attach)
- [ ] `fabro run --detach <workflow>` prints run ID and exits
- [ ] `fabro attach <run>` works standalone (without child handle)
- [ ] `fabro resume <run>` works for both `.toml` and `.fabro` workflows
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Fabro <noreply@fabro.sh>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Pass GitHub App credentials in create_env() and daytona_snapshot_sandbox
so private repo clones succeed
- Install git in sandbox before running git CLI in clone_private_repo test
- Use brynary/arc (where app is installed) instead of rust-lang/rust for
clone_public_repo_gets_credentials test
- Fix git_checkpoint_remote_emits_events assertion: expect 1 event (work
node only) since start is skipped and exit breaks before checkpoint
- Install Node 20 via nodesource and bash/curl in CLI test prerequisites
- Use bash instead of sh for Claude CLI install script
- Shorten toolbox_idle_diagnostic sleep durations to finish in ~12s
- Add nextest config with 120s per-test timeout
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>