fabro/lib/apps/fabro-cli/src
Scott Werner 7f55dd87b5 Harden artifact capture writes
- The store checks that captured bytes match their digest in every build,
  hashing on a blocking thread, and the upload handler relies on that
  check instead of hashing a second time.
- Capture bytes travel as `Bytes` from the hooks through the client and
  the store, so uploads and retries share one buffer.
- The artifact writer takes the run ID from the hooks, so objects are
  stored under the run their records name.
- Concurrent captures of the same file and content wait on one another,
  so the file is uploaded and recorded once.
- When a record append fails, the hooks re-read the run's captures and
  treat a record that did land as done, so a lost response does not
  record the capture twice.
- An upload that finishes after its run was deleted removes itself,
  instead of leaving an object nothing references.
- Listing a run's stage artifacts skips everything under `captures/`, so
  an unexpected object there cannot fail the listing or the ZIP.
- The capture record derives its `digest` key from its source instead of
  storing it twice, still writing and checking it on the wire.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 14:30:36 -04:00
..
commands Harden artifact capture writes 2026-09-28 14:30:36 -04:00
shared Delete the checkpoint endpoint, fabro parse, and the fabro-workflow shims 2026-09-19 09:31:09 -04:00
sleep_inhibitor refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
args.rs Delete the checkpoint endpoint, fabro parse, and the fabro-workflow shims 2026-09-19 09:31:09 -04:00
command_context.rs Implement the lithos CredentialProvider trait directly 2026-09-10 09:16:39 -06:00
gh.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
landing.rs Create CLI runs from immutable workflow intents 2026-09-01 16:14:34 -04:00
local_server.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
logging.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
main.rs Build the run's display graph from Petri's admission 2026-09-19 11:41:58 -04:00
manifest_args.rs Simplify the CLI run-intent create path 2026-09-01 16:14:34 -04:00
mcp_servers.rs Move fabro-mcp's pebble mapping and test client into fabro-cli 2026-09-18 10:57:07 -04:00
server_client.rs Remove the [server.slatedb] settings and the SlateDB prefix probe 2026-09-18 16:00:24 -04:00
server_runs.rs Carry usage as lithos-llm's Usage and rename billing to usage 2026-09-14 12:31:34 -06:00
user_config.rs Use async reads during CLI intent preparation 2026-09-02 13:44:33 -04:00