Commit graph

1735 commits

Author SHA1 Message Date
Bryan Helmkamp
936ebfade1
Align event tests and snapshots with stage responses
Update CLI progress test fixtures and log snapshots for the new
stage.completed response field, and add a narrow clippy allow/type alias
cleanup needed to keep the workspace warning-free.
2026-04-02 09:02:06 -07:00
Bryan Helmkamp
e79f337077
Make workflow state fully derivable from events
Complete the remaining event coverage from the events-as-source-of-truth plan.
Add response and failure-signature snapshots to stage.completed,
enrich retro.started and retro.completed with prompt/response data,
and remove the stale script field from stage.started.

Also update the internal event and run-directory docs so they match
current event payloads and derivation rules.
2026-04-02 08:33:42 -07:00
Bryan Helmkamp
28a1fc72f4
Rename FabroSettings to Settings, eliminate FabroSettingsExt
Move storage_dir() from FabroSettingsExt trait in fabro-config into an
inherent method on Settings in fabro-types. Remove the re-export from
fabro-config so callers import directly from fabro_types. Drop the
redundant Fabro prefix since the type already lives in the fabro_types
crate.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 07:36:44 -07:00
Bryan Helmkamp
5f1f47a966
Increase polling budgets for server tests that fail under concurrent load
Unit tests used 100×10ms=1s polling, insufficient when 82 tests run
concurrently. Integration tests already used 500×10ms=5s. SSE test
frame timeout was 500ms, too short for stage events to arrive under
CPU contention.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 07:13:51 -07:00
Bryan Helmkamp
3f1c71b541
Merge remote-tracking branch 'origin/main'
# Conflicts:
#	lib/crates/fabro-server/src/server.rs
#	lib/crates/fabro-server/src/web_auth.rs
2026-04-02 06:48:22 -07:00
Bryan Helmkamp
b5f5162c3a
Rename SessionConfig to SessionOptions and McpServerConfig to McpServerSettings
Aligns naming with the convention that "Config" is for file-level configuration
while "Options" and "Settings" describe runtime parameters. Also applies
rustfmt formatting fixes in web_auth.rs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 06:47:42 -07:00
Bryan Helmkamp
9d468a6667
test timing tweaks 2026-04-02 06:46:14 -07:00
Bryan Helmkamp
f2910c557e
Reduce slatedb timers 2026-04-02 06:43:58 -07:00
Bryan Helmkamp
75b0e0879a
Stabilize workspace tests and clean warnings
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.
2026-04-02 06:33:22 -07:00
Bryan Helmkamp
93eab71892
Remove legacy run file projection layer 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
ebe7db8e62
Load pull request diffs from the run store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
81d838f600
Use store-only metadata for PR body generation 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
426eee85ed
Require store-backed state for run diffs 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
8c23e93a2a
Restore rewound run metadata from the store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
a831f3675b
Infer attach store context without run records 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
7906ecad15
Recover launcher state without run records 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
083c3c5e89
Stop reloading run ids after detached execution 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
3879387adc
Reuse store-backed run cleanup in system prune 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
82a243b0cd
Stop reloading run ids during detached failures 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
f39255594c
Pass run IDs directly into detached start services 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
92dc29a897
Load sandbox cleanup metadata from the run store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
1b7da29c6b
Stop requiring progress files for attach fallback 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
dff33d4f17
Project run creation events through the store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
0cb5495ce9
Require store-backed metadata branch bootstrap 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
a169ba068d
Require store-backed conclusion data for PR bodies 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
601676b737
Stop writing rewind status files 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
0399d1daf8
Restore start metadata when rehydrating rewound runs 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
c41594d3a1
Stop writing legacy run status and conclusion files 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
15389780f3
Stop writing legacy pull request files 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
c681e65fdb
Cut operational run readers over to store-only state 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
fc5b910691
Normalize attach JSON snapshot ordering 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
9826001305
Use store-backed run summaries and attach replay 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
abffd09f41
Rebuild metadata branches from store-backed node state 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
eb1933954a
Export checkpoint metadata from the run store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
0ac4e2851b
Use store-backed run discovery for asset commands 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
00c8564055
Persist provider metadata from LLM handlers 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
cfdb6248bb
Persist command and diff artifacts in the run store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
9bf9db6fa0
Require store persistence for pull request records 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
664aa1d6d6
Use store-backed status for attach and run lookup 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
0945b6b9ba
Remove run hydration from production paths 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
da93d9b501
Persist run creation directly into the store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
7f59d14245
Cut more CLI control-plane reads over to the store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
f73b28129c
Rehydrate rewound runs before resume 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
9bf4046a6b
Move attach and logs to store-backed event history 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
991c5eb956
Cut PR and diff readers over to the run store 2026-04-01 22:57:27 -07:00
Bryan Helmkamp
d71a5c5d23
Expand store-backed run metadata and detached startup
Add the missing run-store records for node metadata, final patches, and pull
request state, and extend the store snapshots/backends to round-trip them.

Also cut the detached startup path over to explicit run IDs and store-backed
status loading so start and detached execution no longer require run.json for
bootstrap.
2026-04-01 22:57:26 -07:00
Bryan Helmkamp
e8a7bd757e
Fix login route collision after SPA cutover
Move the browser sign-in page off the backend /auth namespace so direct
navigation works, update Rust and frontend redirects to /login, and add
tests that lock the split between SPA login UI and backend OAuth endpoints.
2026-04-01 21:55:30 -07:00
Bryan Helmkamp
eb91f2bcab
Cut over Fabro web app to a server-backed SPA
Replace the old React Router SSR setup with a static SPA build served by
fabro-server, move setup and GitHub auth handling into Rust, and update the
default local web URL and stale Arc-era references to match the Fabro name.
2026-04-01 21:36:01 -07:00
Bryan Helmkamp
e849441833
Simplify: fix buggy JSON sorting, deduplicate event filtering, clean up wait loop
- Replace no-op sort_json_value (IndexMap→IndexMap) in create.rs with
  normalize_json_value (IndexMap→BTreeMap→Map) from event.rs, fixing
  RunCreated events having non-deterministic key order
- Add AgentEvent::is_streaming_noise() to centralize the 6-variant
  streaming filter used in api.rs, retro.rs, and subagent.rs
- Extract load_file_status closure and merge Ok(None)|Err(_) arms in
  wait.rs to remove triple-repeated RunStatusRecord::load expression

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:13:15 -04:00
Bryan Helmkamp
d8ee06276e
Persist run.created events in the run store
Hydrate the durable run store immediately after create-time event emission so
store-backed readers see the initial run.created event instead of only the
on-disk progress log. Add a regression test covering create-time store
visibility and wire in the object_store dependency needed by that test.
2026-04-01 20:13:14 -04:00