Repository navigation
Conversation
Publish captured replacement closures for new refs and cross-ref bases. Preserve same-ref additive evidence. Remove deleted closures in every reader and prove both deletion orderings against native Git.
forhappy
force-pushed
the
codex/deleted-ref-visibility
branch
from
October 15, 2026 22:06
cc1ce52 to
5fb004e
Compare
forhappy
changed the base branch from
codex/catalog-order-contract
to
codex/indexed-staging-qualification-combined
October 15, 2026 22:06
Remove the source checkout before comparing all cold Git object bodies with native Git and verifying full native payload hashes at origin. Run both publication orderings through full, control and paged readers against RustFS.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RustFS qualification: Both deletion orderings now pass after deleting the entire source checkout. Full/control/paged views use fresh Git runtimes, compare every Git object body with the native Git oracle, and verify the original native file hash directly from origin shards/xorbs. The live run executed the exact opt-in test (1 passed), made 528 S3 requests and reported no proxy errors; all source guards stayed unchanged. This is a small-fixture correctness gate, not 10 GiB or GC acceptance.
Shared receive could acknowledge a new branch that borrowed another ref's visibility closure, then acknowledge deletion of that source. If the deletion sorted before the borrower during canonical replay, a full reader could no longer open the acknowledged state.
New refs and explicit cross-ref bases now carry complete replacement evidence copied from their captured proof. The graph fast path remains; same-ref additive updates remain additive. This matches the CLI's new-ref policy and removes the writer's dependence on another mutable ref surviving replay. Metadata reconciliation and full-body ordering also clear deleted closures when a deletion has no visibility payload. Dictionary/physical retention never grants visibility by itself.
Stacked on #609; incorporates #600's replay/checkpoint characterization and a fixture stability repair. The final scope includes shared receive and readers because the reader-only candidate was insufficient. No new format, configuration, compatibility reader, or dependency override is introduced. The advisor plan and both excluded benchmark reports remain absent.
Validation
crab-remotecrate and formatting pass. Source guards remain unchanged.crab-remote-git::commit_graph::Graphtriggerslarge_enum_variant. The failed run is preserved; primary-only lint does not close that gap.Evidence map and design
HTTP publication calls shared preparation.
plan_visibilityproves the captured prior closure; preparation owns its durable encoding. CLI capsule publication already uses replacement evidence for new refs. Complete/control/paged reconciliation share deletion semantics, with existing tests for inherited bases, removed objects, missing evidence and checkpoint precedence. The low-level borrowing codec remains expressive; regular shared publication no longer emits a mutable cross-ref dependency. Current main lacks this capsule reconciliation module; the failing baseline is the unmerged integration stack.Is this the best fix? Closure ownership must be fixed at publication as well as deletion reconciliation. Copying a proven closure avoids another graph walk and prevents a mutable lifetime from entering durable evidence. It adds output-sized work for new aliases; authenticated immutable closure reuse remains a performance follow-up, not a reason to retain the unsafe dependency.
Draft, not merge-ready. Native regression evidence includes in-memory and RustFS origin stores. Maintenance/GC, complete dependency lint, fresh official install, the final six-case 10 GiB matrix, and hosted-S3 latency remain required. This is not a completed performance or lifecycle qualification.