mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-12 03:51:01 +00:00
- 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> |
||
|---|---|---|
| .. | ||
| fabro-automation | ||
| fabro-checkpoint | ||
| fabro-dot | ||
| fabro-dump | ||
| fabro-environment | ||
| fabro-github | ||
| fabro-graphviz | ||
| fabro-install | ||
| fabro-interview | ||
| fabro-llm | ||
| fabro-manifest | ||
| fabro-mcp-store | ||
| fabro-petri | ||
| fabro-slack | ||
| fabro-store | ||
| fabro-tool | ||
| fabro-tracker | ||
| fabro-variable | ||
| fabro-workflow | ||
| fabro-workflow-version | ||