Skip to content

perf(metadata): reuse immutable checkpoint catalogs - #611

Closed
forhappy wants to merge 2 commits into
codex/indexed-staging-qualification-combinedfrom
codex/incremental-checkpoint-catalog
Closed

forhappy wants to merge 2 commits into
codex/indexed-staging-qualification-combinedfrom
codex/incremental-checkpoint-catalog

Conversation

@forhappy

@forhappy forhappy commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Current validation: The CLI compile failure is repaired and pushed. The direct/read-wrapper checkpoint admission regressions pass (CLI: 1; auth-server error tests: 5). Metadata 606, read 229, write 23 and checkpoint integration 42 pass on that repair, with source guards unchanged. Previous CLI command-module filters selected zero tests because they targeted the binary; those runs are not CLI behavior evidence. The corrected runner targets the library and rejects zero-test results. Catalog enum layout and the integration-base graph enum layout are fixed locally; graph visibility tests pass (4), and fresh guarded checks are running before those layout fixes are pushed. Live format-8 qualification remains gated on those checks. Draft, not merge-ready.

Ref-only checkpoints currently materialize and rewrite the full historical Xet catalog. This change gives the catalog its own immutable object and authenticated page commitment, allowing logical checkpoints and physical repacking to retain an unchanged catalog without catalog body I/O.

  • Publish and verify new catalog bytes before checkpoint/history writes and root CAS; changed catalog deltas retain canonical ordered assembly.
  • Bind lazy reads to the captured catalog identity. Include external catalogs in history verification/accounting, full fsck, and GC marking from current, historical, and retained browse roots.
  • Use checkpoint format 8 and browse retention format 2. The documented audit found no capsule codec in the six upstream release tags; retired development formats fail explicitly and qualification fixtures must be recreated.

Stacked on #609. Includes the catalog-order characterization tests from #600, adapted to publish the external catalog dependency. The advisor plan and both requested large-file audit reports are excluded.

Validation

Guarded checks on the exact source: formatting; catalog reuse without body I/O; ordinary/restore publication failure barrier; metadata 606 passed (one existing ignored stress test); read 229 passed; checkpoint integration 42 passed; write capsule tests 23 passed. Remaining CLI, feature, Clippy, build and RustFS checks are running; results will be updated here.

Remaining gates

Draft for review, not merge-ready. Changed-catalog maintenance still performs full assembly, and repository opening is not yet bounded independently of history. Format-8 10 GiB multi-edit qualification and representative hosted-S3 latency are not established. The acknowledged borrowed-ref/source-deletion failure tracked in #610 remains unresolved and is not fixed by this PR.

Separate catalog ownership from checkpoint bytes so ref-only maintenance can reuse authenticated catalogs without body I/O. Keep catalog durability before publication and retain dependencies through history, browse roots, fsck and GC.

Replace unshipped checkpoint format 7 and browse retention format 1 with format 8 and format 2. Released v1 storage is unaffected; unreleased fixtures must be recreated.
@forhappy
forhappy force-pushed the codex/incremental-checkpoint-catalog branch from e6e81b4 to 25cbb56 Compare October 15, 2026 21:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant