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> |
||
|---|---|---|
| .. | ||
| build-support | ||
| fabro-api | ||
| fabro-auth | ||
| fabro-client | ||
| fabro-config | ||
| fabro-db | ||
| fabro-dev | ||
| fabro-http | ||
| fabro-macros | ||
| fabro-oauth | ||
| fabro-options-metadata | ||
| fabro-proc | ||
| fabro-redact | ||
| fabro-static | ||
| fabro-telemetry | ||
| fabro-template | ||
| fabro-test | ||
| fabro-types | ||
| fabro-util | ||
| fabro-vault | ||