Repository navigation
Add retention GC and pin published Cellule for native storage - #37
Merged
Merged
Conversation
Require fresh storage prefixes for repository schema 3 and the current compiled Cellule release. Remove legacy Git-body storage readers and keep release, format, identity, and fencing validation.
Preserve the modular workspace and native publication lifecycle while porting retention GC and published Cellule 0.2.0 pins. Require fresh canopy-pack-v2 storage with repository schema 4; remove retained Directory code admission.
Remove row-based body readers, chunk staging, old graph commands, and unhashed manifests. Keep native catalog verification and the current operation identities. Use the current repository schema in Directory fixtures and qualify foreign-object isolation and predecessor-manifest rejection.
Make the process fixture size explicit and retain the 1.1 MiB default. Correct historical coverage descriptions and document the current native root publication path.
forhappy
marked this pull request as ready for review
October 14, 2026 23:51
Keep the large native setup poll frame off the stack while durable policy and recovery qualifiers run. Preserve fixture ownership, custody, receipts, refusal and cleanup assertions on the default test-thread stack.
Keep multi-shard replay under renewed custody instead of its first SQL deadline. Full fetches reuse authenticated native packs after validating wants against the certified ref closure, avoiding per-object loose-file reconstruction. Preserve residence ceilings, owner fencing and rejection of unrelated wants.
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.
Large imports retained excessive Cellule state, and full fetches reconstructed native packs as loose objects. This change integrates the current native catalog/publication implementation, keeps Git bodies in immutable authenticated packs, and adds bounded Cellule retention collection.
canopy-pack-v2; breaking formats require a fresh prefix. Remove retired readers and handlers.Verification imported full bat, Starship and libgit2 histories: 194,252 object bodies compared byte for byte, 501 refs and symbolic HEADs matched, and all mirrors passed
git fsck --full. Refs APIs cover every ref; tree checks follow all pages of 12 selected paths; blob/history checks compare nine previews and 384 commit records. The complete checks pass again after GC and fresh-workspace restore.Cellule GC deleted 1,664 eligible objects. The fresh prefix occupies 566.5 MiB after GC; native packs account for about 153 MiB. After verification and 11,474 warm API requests with zero errors, the observed prefix was 602.4 MiB. Commit-history p95 remains 3.1–4.3 seconds at concurrency four on the shared loopback fixture.
Validation: dependency-policy check, formatting, all-target Clippy with warnings denied, 896 ordinary Rust tests, 105 Python tests, release compilation and all nine isolated RustFS provider cases pass. Provider cases include a 595 MB native pack and exact Git/LFS bodies above 5 GiB after restore. The complete extended process profile passes, including restart/takeover, eight opposite-owner HTTPS repositories, interrupted maintenance, independently verified backup after source deletion, and bounded GC with retained backup pins.
The test fixes preserve default-stack coverage, create real cache hydration before crash recovery, forward current HTTPS peer traffic through the existing bounded stream proxy, and verify the actual native backup inventory. Rust source is unchanged by the Python fixture fixes. Source/binary identities, measurement methods, complete results and preserved failed attempts are in the qualification report.
Product-owned Git/LFS orphan collection remains a separate policy. Attribution is still unimplemented (422), outside the four API kinds qualified here. These runs do not establish large-team capacity.