fix(signals): store backing paths record the stale reader's replay (Rule 1, backing-level form) - #3517
Closed
ryansolid wants to merge 1 commit into
Closed
fix(signals): store backing paths record the stale reader's replay (Rule 1, backing-level form)#3517ryansolid wants to merge 1 commit into
ryansolid wants to merge 1 commit into
Conversation
…ule 1, backing-level form) Step 3 of DESIGN-CONSOLIDATION move 3b. The stale-of-foreign clause has two halves — serve committed, and record the reader for replay at the hold's commit (A15 / A26, _gatedSubs). Core heldFromStale does both; the store's backing-level twins (heldFromReader for a key with no node, readSource's adoption-hold view for a reconcile inside an action) did only the first. A render effect whose untracked read hit either stayed on the pre-action value after the action settled. The registration is now one exported helper, recordStaleReplay(txn, c), called by heldFromStale and by the store's two backing sites (staleReplay: reader in context, not children-forbidden — the same gate core applies before it reaches heldFromStale). Pins: posture-store-parity S4 grows to the four store shapes (fold hold × adoption hold × with/without a node) beside the signal; all four fail on next, the it.fails from step 2 flips to a pass. Gate: suite green; oracles and the 621-cell posture matrix byte-identical to next; +31 B minified core (the helper), +123 B minified store (the fix); three brotli caps ratcheted with notes. Co-authored-by: Claude via Cursor <noreply@cursor.com>
🦋 Changeset detectedLatest commit: a3d1828 The changes in this PR will be included in the next version bump. This PR includes changesets to release 11 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
This was referenced Sep 17, 2026
Member
Author
|
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.
Stacked on #3516 (← #3515). Step 3 of DESIGN-CONSOLIDATION move 3b — closes the
it.failspin #3516 left.The gap
The stale-of-foreign clause has two halves: serve committed, and record the reader for replay at the hold's commit (A15 / A26,
_gatedSubs). CoreheldFromStaledoes both. The store's backing-level twins did only the first:heldFromReader— a key with no node under a fold hold (setter write inside an action);readSource's adoption-hold view — areconcileinside an action (ht, 2.0.0-rc.3 | projection leaks after flush while in transition #3074), with or without a node.A render effect whose untracked read hit either was served the committed value (correct) and then stayed on the pre-action value after the action settled. Signal:
[0, 0, 1]. Store onnext:[0, 0].The fix
One exported helper,
recordStaleReplay(txn, c)(the two lines lifted out ofheldFromStale), called byheldFromStaleand by the store's two backing sites throughstaleReplay(reader in context, not children-forbidden — the same gate core applies before it reachesheldFromStale). Alatest()-pullPLAIN_HOLDis not a transaction and records nothing.Pins
posture-store-parityS4 grows to the four store shapes — fold hold × adoption hold × with/without a node — beside the signal. All four fail onnext; the step-2it.failsflips to a pass.Gate
nextnextorigin/nextWhere move 3b stands after this stack
Rule 1 (committed vs staged) now has one implementation for every node read, signal or store (
readerSeesCommitted), and one replay registration for every stale-of-foreign serve, node or backing (recordStaleReplay). Still store-shaped and not yet folded: the backing-level selection itself (pendingBackingVisible's arms — draft, write-override, the projection authoritative-elect arm) and the two store tunnels (latest()for store keys,authoritativeServe). Those are the candidates for aserve(el, reader)in the design doc, and each will need the same "hand it the shared predicate and see what changes" treatment.Made with Cursor