Fix #458: failure-path residue #469

Merged
crueber merged 1 commit from fix/issue-458 into main 2026-09-13 16:37:36 +00:00
Owner

Child of #449 (F4+F5). (1) Crash-safe fork retry: ShareManifest adopts orphan checkpoint keys by semantic compare and adopts an orphan child manifest when it provably tracks this parent (no fork.json, Repo/Rev1/seq/packs match) — retry converges instead of 409ing permanently; rival bytes 409 untouched, empty-parent and moved-parent orphans fail closed. (2) Rollback access.json ownership: deleted only when this attempt created it (EnsureRepoAccessCreated flag threaded runFork→RollbackShare); adopted pre-existing docs survive. Tests: new fork458_test.go (retry converges ×4 incl. provenance-committed crash; fail-closed ×8; rollback spares adopted; flag propagation; semantic compare) + EnsureRepoAccessCreated test; -race clean; pulls 96.1%, identity 95.6% (≥95 gate); fork e2e green. Docs: 03 decisions appended. No new deps.

Child of #449 (F4+F5). (1) Crash-safe fork retry: ShareManifest adopts orphan checkpoint keys by semantic compare and adopts an orphan child manifest when it provably tracks this parent (no fork.json, Repo/Rev1/seq/packs match) — retry converges instead of 409ing permanently; rival bytes 409 untouched, empty-parent and moved-parent orphans fail closed. (2) Rollback access.json ownership: deleted only when this attempt created it (EnsureRepoAccessCreated flag threaded runFork→RollbackShare); adopted pre-existing docs survive. Tests: new fork458_test.go (retry converges ×4 incl. provenance-committed crash; fail-closed ×8; rollback spares adopted; flag propagation; semantic compare) + EnsureRepoAccessCreated test; -race clean; pulls 96.1%, identity 95.6% (≥95 gate); fork e2e green. Docs: 03 decisions appended. No new deps.
ShareManifest adopts a crashed attempt's orphan checkpoint pair by
semantic compare (timestamps ignored) and an orphan child manifest when
it provably tracks this parent (Repo/Rev1/seq/packs, no fork.json), so a
retry converges instead of 409ing permanently; rival bytes 409 untouched
(sweep rejected: law 4). RollbackShare deletes access.json only when this
attempt created it (EnsureRepoAccessCreated flag). Decisions appended to
docs/features/03_pull_requests.md §7.
Sign in to join this conversation.
No description provided.