Test reset clears the shared-index built-roots ledger with the slots it describes - #12818
Closed
gunbai-bot[bot] wants to merge 1 commit into
Closed
gunbai-bot[bot] wants to merge 1 commit into
gunbai-bot[bot] wants to merge 1 commit into
Conversation
…h the slots (shared_primary_precedence purity oracle red) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Superseded by #12821, which deletes the built-roots ledger this PR would have cleared on test reset. Verified on BuildBuddy ( |
6 tasks
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.
Cause
Not an order/thread flake — deterministic.
shared_primary_precedence_index_is_byte_identical_to_coldfails run alone (--exact,--test-threads=1, no predecessor) on main since #12765 addedPROCESS_RESOLVE_INDEX_BUILT, the per-thread ledger that turns "same roots built twice after eviction" intoSharedIndexRebuiltAfterEviction. The thread-reuse hypothesis is falsified by that isolated run.Chain (§6b): the ledger's contract is that a rebuild of roots the thread's slot held and lost to eviction is a redundant second parse — that refusal is correct and is kept unchanged.
reset_process_shared_index_for_testis the one test-only operation that empties the slots to declare a fresh history (so the cold arm re-derives from disk). It cleared the slots but not the ledger that describes them, so after the oracle's cold arm + reset, the warm arm's rebuild of the same roots read as an eviction-rebuild. The earliest unjustified boundary is the reset: slots and ledger are one state and it reset half of it.Fix
The reset clears the ledger with the slots. The refusal is not widened: production paths never call the reset, and
a_shared_index_evicted_by_other_roots_refuses_to_rebuild(A, B, A without reset) still refuses.Evidence (BuildBuddy, full paths)
cli_run::compile_clean_via_index_verdict_equivalence::shared_primary_precedence_index_is_byte_identical_to_coldalone → FAILED (SharedIndexRebuiltAfterEviction at cli_run.rs:6668)cli_run::closure_edge_demand_tests::a_shared_index_evicted_by_other_roots_refuses_to_rebuild→ ok🤖 Generated with Claude Code