Repository navigation
Conversation
A pass that already holds a transition's own staging is that transition's work. An inherited verdict posture must not drop the staging or serve the transition's committed values; the pass's own probe still does. Co-authored-by: Cursor <cursoragent@cursor.com>
🦋 Changeset detectedLatest commit: e0092ab The changes in this PR will be included in the next version bump. This PR includes changesets to release 15 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 |
Size (brotli, eager entry chunk)
|
Coverage Report for CI Build 41414499987Warning 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 78.205%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
Merging this PR will improve performance by 27.45%1 warning
Performance Changes
Tip Curious why performance improved? Comment Comparing Footnotes
|
|
Review of b075280, tested merged with 1. Size: four rows fail against
2. The inline probe form still shows signed-in content with signed-out data (D-27) When The screen stays 3. One new test asserts a Loading that never settles (F-6) "same-node isPending(session)" expects 4. The With the 5. A behaviour change that looks fine In the memo forms, a Shrinking the size Both cuts below keep the full signals suite and the PR's web spec passing:
- const staging = (c._config & CONFIG_VERDICT) !== 0 && !!holdStagingHook?.(c);
- const verdict = observeFlightHook && c._config & CONFIG_VERDICT && !staging;
- const lane = laneStageHook && passLane !== null;
+ const asked = observeFlightHook && c._config & CONFIG_VERDICT;
+ const staging = asked && holdStagingHook!(c);
if (staging && !(c._config & (EFFECT_RENDER << 23))) return false;
+ const verdict = !staging && asked;
+ const lane = laneStageHook && passLane !== null;With both cuts, the four rows are still about +240–250 B minified. Most of that is Perf: a staged memo reading 1,000 plain and 200 held nodes, with 200 writes during the hold, measured the same on Generated by Claude Code |
…4544) frameRead was calling the hook on every verdict bit, which the core floors paid for with the verdict engine absent. The enterLane clause had no test that failed without it, and the size ledger stays with the batch re-record. Co-authored-by: Cursor <cursoragent@cursor.com>
|
|
Re-review of 3606fa4, tested merged with Fixed
Still open 1. Size: four rows still grow past the +20 B allowance
Most of it is 2. The inline The screen stays 3. "same-node isPending(session)" still asserts a Loading that never settles (F-6) After Generated by Claude Code |
The branch a hold opened was still reading the signed-out session when its own pass called isPending, so a never-resolving signed-out fetch kept the hold from landing. That write now stays the staging; the probed node stays the screen. Co-authored-by: Cursor <cursoragent@cursor.com>
|
A pass keeps a hold's staging only when the pending value is that hold's write — a dependency the same transaction holds has a pending value of its own, not a park-seam
CONFIG_HELDon a published verdict — and this pass did not open its own probe (REACTIVE_WINDOW) or carry an unanswered probe of a not-yet-final node (REACTIVE_PROBE_UNANSWERED).That check sits at the held re-pass arm, at
frameRead, and atenterLane.CONFIG_VERDICTstays the bit every other read uses.Memo form (
chromeownsisPending(plan)/latest(plan),paramsreads both): aftersetSessionthe branch is{plan:false, signedIn:true}, and aftersetPlanit is{plan:false, signedIn:true}forisPendingand{plan:true, signedIn:true}forlatestand a plain read.chrome's own value follows its probe. The branch showsrowsand the hold lands.Inline form (
paramsitself callsisPending(plan)): the pass's own probe wins,{plan:false, signedIn:false}, the signed-out fetch is issued and resolves, and the hold lands onrowsafter it. The forms differ because a memo's value is one slot under its own posture (A31 / D-25). Same-nodeisPending(session)stays today's screen.The six generator ids match
origin/next(9379257c8): seed 7 #21333, seed 3289 #1831 #17777 #29047 #840 #30372.Public API changes
None.
Closes #4544
Made with Cursor