Repository navigation
Conversation
This was referenced Oct 15, 2026
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.
Shared capsule preparation scans the complete historical Xet catalog even for an ordinary Git update. It also formats raw body digests as Xet protocol hashes, accepts scratch files changed after inspection, and never populates the shared chunk index after native-content commitment.
This change resolves only outgoing file/shard/xorb closures through the captured paged lookup. Ordinary Git and LFS-only uploads read no catalog pages. Bounded artifact reads verify the inspected raw body identity before upload. Exact create/read identities and original source descriptors survive through commitment; chunk hints are published only after proven ref visibility. Index maintenance failure preserves an already committed outcome, and uncertain publication emits no hints.
The capsule implementation moves into
crates/crab-remote/src/prepare/capsule.rs, retaining the existing public API. Its ownership of the catalog until post-commit indexing avoids keeping both decoded and serialized copies across preparation. No full-scan fallback, new product configuration, or protocol alias is introduced.Stacked on #593 (
a7e2662f890); no merge requested. Both large-file audit benchmark files and the user-owned advisor plan are excluded.Validation:
publication, the minimal no-default-feature check, Rust formatting and whitespace checks passed. The UI dependency/build prerequisite for the HTTP crate passed; its unrelated lockfile rewrite was reverted.Review evidence map:
receive::publish::publish_attemptcalls the samePrepared::upload_capsuleAPI exercised by the native-Git integration testscrab-remoteretains preparation, immutable artifacts and commit outcomes; authorization remains in HTTP; metadata owns catalog lookup and candidate encodingPointerCatalogLookup::{files,shards,xorbs}, bounded inspected-file reads,Store::create_or_read_immutable,write_capsule_chunk_candidatescc2e4e25f46has no capsule upload/catalog path. Parent #593 contains all four reproduced shared-path gapsPreparedContentwithout the new capsule catalog field; its legacy multipart path keeps raw artifact hashes. No released capsule format requires the erroneous body-digest representationIs this the best fix? The reproduced failures share the preparation/commit ownership boundary. This uses existing authenticated lookup, immutable storage and metadata writer contracts, and removes the eager scan. Production LOC growth supplies bounded source verification and operation-bound receipts; capsule behavior is consolidated in one module. Full initiative readiness still requires the open combined-source and scale gates.
Dependency review: adds a test-only direct dependency on the already-used exact SlateDB
0.15.0version to inspect actual published records.Cargo.lockadds only that dependency edge; no version, production dependency, patch or override changes.API test binary SHA-256:
fe8a75004fd4ef7ec0946b999d32a829b83b28f94b51317a9c34e9990e9ebf5d; HTTP test binary SHA-256:92318648278160dd57f96f35dbcffc01f44799a75a43b84442251965c07fef51.