Conversation
…bleOverride, one hasActiveOverride Zero-semantic-change step 1 of DESIGN-CONSOLIDATION move 3b (one implementation per rule). read()'s slow tail called the full committed-vs-staged arm inline; it is now readerSeesCommitted(el, c, owner, noCommitted), documented as the rule it enforces, for the store's backing selection and the verdict arms to adopt. hasActiveOverride existed twice (lanes.ts, store.ts) and the composite 'hasActiveOverride && !unflushedOverride' was restated at five sites (latestRead, computePendingState ×2, the store's reader selection, plus the store's own visibleOverride) — one visibleOverride in core now. Gate: signals suite green; visibility oracles and the 738-line posture matrix report are byte-identical to next. Co-authored-by: Claude via Cursor <noreply@cursor.com>
🦋 Changeset detectedLatest commit: 6c86076 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 |
Coverage Report for CI Build 35199249975Warning Build has drifted: This PR's base is out of sync with its target branch, so coverage data may include unrelated changes. Coverage remained the same at 71.46%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
This was referenced Sep 17, 2026
refactor(signals): store node reads select by readerSeesCommitted (Rule 1, one implementation)
#3516
Open
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.
Step 1 of DESIGN-CONSOLIDATION move 3b (one implementation per rule). Zero semantic change — the gate is the point of the PR, not the code.
What moved
readerSeesCommitted(el, c, owner, noCommitted)(core.ts): the full committed-vs-staged arm — untracked / lane-reads-committed (Existing and newly revealed latest readers display different values #3460) / nothing staged / children-forbidden (A32) / stale-of-foreign (heldFromStale) / HELD-truth mask (2.0.0-rc until doesnt entangle the update resolving it with the action update #3164) — thatread()'s slow tail used to inline. Documented as the rule it enforces; the store's backing selection and the verdict arms adopt it in step 2.hasActiveOverride: existed twice (lanes.ts, store.ts). One definition in core.ts now; lanes.ts and store.ts re-export.visibleOverride(hasActiveOverride && !unflushedOverride, A28 (5)): was the store's helper, restated by hand at latestRead, computePendingState ×2 and the store's reader selection. One definition in core.ts; five call sites.Hot paths untouched:
readNodeFast,read()'s fast block,setSignal,recomputeare byte-identical.read()'s override arm keeps its shape (the AUTHORITATIVE_OBSERVED mark still fires for an unflushed override) — only the inline test becamehasActiveOverride(el).Gate
nextnextnextorigin/nextin this worktree (component-location naming, unrelated)treeshakefixture)Three size-limit caps ratcheted (+9 / +44 / +21 B brotli on esbuild app bundles) with notes: the ten scenarios moved −19…+45 B in both directions, compressor layout, not code.
Local wall-clock microbench A/B was order-dependent (−7% one order, +4% the other) — CodSpeed on this PR is the perf verdict; structurally only
read()'s slow tail gained a call (small, monomorphic, inlined).Next (step 2)
serve(el, reader): the store'spendingBackingVisibleandserveDataKeyadoptreaderSeesCommitted; thenreaderLive(reporter, verdict); then the verdict-deferred list.Made with Cursor