mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-14 23:22:51 +00:00
Four fixes from post-merge review: - Freeze archived runs on the remaining write surfaces the Unit 4 audit missed: `put_stage_artifact`, `put_sandbox_file`, and `write_run_blob` now all call `reject_if_archived` so a client cannot mutate artifacts, sandbox files, or blobs on an archived run. - Widen the `append_run_event` lifecycle denylist to cover every event with a dedicated operation endpoint: archive, unarchive, and the three control-request events (cancel/pause/unpause). Worker-emitted lifecycle transitions and rewind's `RunRewound` / `RunSubmitted` replay still flow through the endpoint as before. - Map `fabro_store::Error::RunNotFound` to a distinct `Error::RunNotFound` at the operations layer so the archive and unarchive HTTP handlers return a 404 on unknown run ids instead of collapsing into a generic 500. - Centralize the archived-run guard in `operations::rewind` by threading `current_status` through `RewindInput` and calling the new `ensure_not_archived` helper alongside a shared canonical error message. The CLI caller drops its ad-hoc string comparison in favor of the typed status it already loads from the server. |
||
|---|---|---|
| .. | ||
| crates | ||
| packages/fabro-api-client | ||