Repository navigation
Conversation
Record metadata-only suffix relabels with all moved physical row addresses, including deleted rows. Integrate strict trailing-suffix planning with recorded and unrecorded compaction races, and cover the resulting Rust and Python paths. Keep the accepted #9947 follow-up outside this PR scope.
…ffix relabels Compaction no longer relabels untouched trailing fragments, so a recorded group always records the live rows of the fragments it rewrote. Drop the metadata-only relabel case from history validation, and update tests that relied on relabels: disjoint recorded and unrecorded compactions now land without conflict, and an index keeps covering fragments compaction left alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
There was a problem hiding this comment.
Restoring commit-time history validation protects address-based indices without restoring suffix relabels or their compaction conflicts.
Saved index metadata reattached after its translation history is cleaned up can still make queries miss rows. This path already exists on the base and remains tracked in #9947. Rebuild segments against the current dataset after cleanup; no additional admission change is requested here.
Summary
Re-lands #9769 (fragment reuse history protection on stable-row-ID tables), which #10440 reverted together with #8400, adapted to compaction without #8400's suffix relabels.
The first commit is #9769 as merged. The second adapts it:
Evidence
The
dataset::optimize,io::commit,index::frag_reuseanddataset::index::frag_reuseunit tests pass (1139). Before the adaptation, 6 of them failed, all relabel-dependent.Merge Risk
Door: two-way. No format change. It restores the commit-time history checks from #9769.
Blast Radius: concurrency and compaction on stable-row-ID tables with deferred index remap.
🤖 Generated with Claude Code