Repository navigation
Isolate cached identity assertions from startup maintenance - #148
Merged
Merged
Conversation
Stop background cleanup in the identity-specific test while preserving all equality and reference assertions. Add a controlled construction/cleanup interleaving to prove that a rejected publication returns an equal uncached result and later reads retain cached identity.
bazer
added a commit
that referenced
this pull request
Sep 17, 2026
Preserve master ancestry and integrate #148 after the development integration PR passed its required gate. No production behavior or driver changes; W0-F1 remains open.
This was referenced Sep 19, 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.
Why
PR #147's first CI run failed
EmployeesInstanceEqualityTests.Immutable_EqualsSameCachedInstanceon SQLite-file. Primary-key equality and hash equality passed; only the reference-identity assertion at line 28 failed. Original evidence: job 105242345298, attempt-1 artifact, SHA-256cd92c61374f9ba73c8270d82e544f05c290000bf65c900f286d8ec093d14abed.Each fixture already has a separate provider/cache. However, the cleanup scheduler performs an initial maintenance pass, and age cleanup advances the publication generation even if it removes no cached rows. A first read overlapping that pass can legitimately return an uncached object; the next read returns an equal but different instance.
A controlled constructor gate reproduces this exact assertion failure by running scheduled cleanup while the first row is being constructed. The historical CI artifact does not itself trace the scheduler interleaving, so this identifies and reproduces a concrete race consistent with the failure rather than claiming a captured execution trace.
Changes
No production code, cache policy, driver dependency or pooling behavior changes. This is independent of the upstream SQLite pool ownership defect (W0-F1); it does not waive that release limitation. Target master first, then merge forward to v0.10 under the accepted branch workflow.
Validation
artifacts/cache-identity-forced-red.json).