Repository navigation
Conversation
… under __TEST__, differential, then swap Co-authored-by: Cursor <cursoragent@cursor.com>
…r __TEST__ beside the existing deciders core/seat.ts computes the reader seat (world/lane/ahead/posture) and the slot table (U/F/L/D/V/Vl/Vp/A/B rows) beside today's deciders; under __TEST__ every read and every recompute compares the two and records disagreements (INV-seat-1..3) into a registry (SEAT_SHADOW_REPORT / __SEAT_SHADOW_STRICT__). Nothing reaches a build: every statement is behind __TEST__ (false in every rollup define); SIGNALS_TEST_DEFINE=true builds a dev dist with it on for the solid/web/generator differential. Design doc §3/§6/§7 updated with the harness as built, the table rows found wrong against a rule (fixed in seat.ts), and the two-readings items the differential leaves open. Co-authored-by: Claude via Cursor <noreply@cursor.com>
🦋 Changeset detectedLatest commit: 697217f 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 |
…d published-inputs table rows, results in the design doc The 50,000-case generator runs (seeds 3289, 91501, 7, every pair) found two table rows wrong against a rule, fixed in seat.ts (test-only): - L4 / L2 / V1' (D-41): a held node's staged error throws for a leaf or a born-into frame reader; the rows said P. - V3 (F-9, #3305): a verdict reader's plain read of a node staged and in flight with INPUTS_PUBLISHED is the flight's (V4', NR), not the staging. Design doc §4.2 records the differential results (suites, 2k, 50k) and §6 the two rows; RULES-INDEX regenerated for the new #3305 citation. Build output unchanged (size harness: 15/15 bundling scenarios byte-identical). Co-authored-by: Claude via Cursor <noreply@cursor.com> Co-authored-by: Cursor <cursoragent@cursor.com>
…ost-fix re-run, plain-build abort indices, untraced residue The 50k row counted seed 3289's classes (133) against the three-seed reads/passes/instances; the aggregate is 220 classes / 8,821 instances before the two 50k table fixes and 209 / 8,706 re-run with the table as committed (the 11 classes the fixes cover go, none appear). The infinite loop abort on each seed is verified against a dist built without SIGNALS_TEST_DEFINE, at the same case index on both builds (7: 1158, 3289: 3963, 91501: 5807). Classes no §6 finding or §7 item names literally (623 instances / 43 classes) are listed and left untraced. Co-authored-by: Claude via Cursor <noreply@cursor.com>
…d / chosen 2026-10-28 Co-authored-by: Cursor <cursoragent@cursor.com>
…is the hold's own work, not a persisted posture; swap pins corrected Co-authored-by: Cursor <cursoragent@cursor.com>
This was referenced Oct 29, 2026
Closed
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.
Step S0 of
documentation/plans/reader-seat-rebuild.md(brief:reader-seat-brief.md§4). Draft — not for merge. The swap (S1) and the cleanup (S2) are separate PRs, gated on the rulings listed under Two readings below.What is shadowed
packages/signals/src/core/seat.tsis the new layer: the seat (openSeat— world S < Fl < H that only raises, lane, display-ahead, posture from the node alone;bornHeld— row B2) and the slot table (slot(c, el)— rows U1–U4, F1, A1, L1–L8, D1–D8, V1–V6, Vl1–Vl5, Vp1–Vp2, with the primed rows the differential added). Everything is behind__TEST__("false"in every rollup define and size script).Under
__TEST__:readruns once for real andslot()predicts beside it at the deciders' decision point (fast block, slow path after the pull,verdictValue's window,laneRead); each return site of the old deciders records the slot it served (shadowActual). Compared: slot identity (C / P / Lv / Dv / T / NR / E), and the reader's world state after the read for non-leaf postures (INV-seat-3).recomputeopens a seat beside the head seating (setPassLane/laneRoot/mount) and compares lane, ahead and inherited world (row B1), and in the finally the born-held decision and the lane the pass ends in (row B2). A leaf never raises its world (INV-seat-1); posture is recomputed from the node at open and close (INV-seat-2).read(joinPass/joinPassAt,stagedRead, the boundaryfallbackswap) are mirrored into the seat.Mismatches are recorded, not thrown (
__SEAT_SHADOW_STRICT__throws):SEAT_SHADOW_REPORT=<file>makes the signals/solid/web vitest configs append one JSON line per test file;packages/signals/scripts/seat-shadow-summary.mjsaggregates.SIGNALS_TEST_DEFINE=true pnpm --filter @solidjs/signals buildemits a dev dist with__TEST__on so solid, web and the generator (which consumedist/dev.js) run the shadow; the default build is unchanged.Docs: design doc §3 (harness as built), §4.2 (results), §6 (table rows found wrong against a rule — fixed in
seat.ts, the brief's table untouched), §7 (two readings);INTERNALS-ASYNC-STATE.md§5 gains the INV-seat family;invariants.tspoints at it.Suite results
.spec.tsfiles; the 153.spec.tsxfiles fail to load in this worktree onnexttoo — no@solidjs/compilerbinary)Every suite is green with the shadow on. The 50k run is deterministic (same reads/passes on repeat; the re-run with the committed table loses exactly the 11 classes / 115 instances the two fixes cover and gains none) and added two table rows (L4/L2/V1' staged error → E, D-41; V3 under published inputs in flight → the flight's V4', F-9 / #3305) and no new two-readings item; the §7 buckets scale roughly linearly from 2k to 50k (F-ahead-posture 1,461 → 2,922; F-vlane 1,054 → 2,355; F-vworld 1,101 → 2,308; F-transitive 301 → 684; B2 display-ahead residue 104 → 257; F-mount 97 → 180).
Generator findings on
next, not shadow findings (reproduced on the plain build without the shadow; not minimized or filed here):Potential Infinite Loop Detected. Kept alive by scheduled work; last staged node: …— seed 7 inside the first 2,000 cases (computed), 3289 at ~427 s (value), 91501 at ~638 s (signal). Verified against a dist built withoutSIGNALS_TEST_DEFINE(no shadow in the bundle): each aborts at the same case index on both builds — seed 7 at case 1158 (in the E8remountrun), 3289 at case 3963 (the base run), 91501 at case 5807 (the E8remountrun). The campaign does not print the index; a throwaway replay of its survey loop (samefc.samplestream, same per-case run order) did — not committed. Repro:ASYNC_GEN=1 ASYNC_GEN_SEED=<seed> ASYNC_GEN_CASES=50000 ASYNC_GEN_MODE=survey ASYNC_GEN_PAIRS=E1,E2,E2e,E3,E6,E7,E8,E9 pnpm exec vitest run test/async-gen/campaign.spec.tsinpackages/web.equivalence/E7signature (owned vs unowned screens) in survey mode, on both builds.Mismatch triage
No class was found where the NEW slot is right and today is wrong by a rule, so no issue was filed. Every slot disagreement traced either to a table gap (the table was fixed in
seat.ts; design doc §6) or to one of the two-readings items below (design doc §7), which need a ruling before the swap. Counts are signals / web / generator-2k._shownError(write/retry over an error)latest()by a render effect outside the hold's flush, verdict lane blockedlatestthrows;isPendingnever throws, error lastCONFIG_OVERRIDEvalue)creatorDirect)INPUTS_PUBLISHEDoldVlaneCONFIG_VERDICT, and the #3540 boundary swap); the brief gives verdicts no node setlaneRoot), coveringrunWithOwnercreations (boundaryfallbackmemo); the brief says creator =contextpassLanecreatorPass(oldcontext)JOINEDstagedScreenarm, 50k ×2); B2 under a display-ahead mount (generator 50k ×257, 36 classes)B1 ahead (old true, new false; creator running true; creator memo:value / children / computed, effect)×406, 4 classes (the previous triage filed these under F-ahead-posture; §7's text names only old false → new true);D5E vs NR for an errored node in flight (u f·f ip·u f ip· onef d vlane; D and V postures; 4 classes underoldVlane) ×101, 17 classes;L8E vs NR, the same shape at a leaf ×34, 6 classes;V1C vs P (s h,oldNoLane, t1 w0) ×57, 2 classes;V4C vs NR (f ip; ×8 in 3 classes underoldVlane, ×4 in 2 classesoldNoLane) ×12, 5 classes;V1''P vs E (s h u ip— the D-41 staged-error shape on a row the L4/L2/V1' fix did not touch;V1''still serves P for an uninitialized held node) ×2, 2 classes;V1'P vs C (s h, w2) ×2, 2 classes andVl1P vs C (s h, w0,oldNoLane) ×1, 1 class; world after the read old 2 → new 1 with equal slots (Vl1P ×4,Vp1C ×2,Vl5Dv ×1) ×7, 3 classes;B2 born held (old true, new false; world 1, ahead false, mount false, rows L8)×1, 1 classDesign doc §7 has both readings and the screen each produces for every F-item.
Size
pnpm buildafter the change;scripts/sizehead vs thenextbase dists (diff -rqofpackages/{signals,solid,web}/distagainst the pre-change snapshot shows solid and web byte-identical; signals differs only in the prettifieddev/observe/prodsources whereif (x) return y;becameif (x) { return y; }around a dropped__TEST__statement, plus the newtypes/core/seat.d.ts). Minified and brotli bytes are identical on every scenario that bundles:The seven scenarios that compile JSX (five compiled-template, two router) fail to bundle on both head and base in this worktree (
@solidjs/compiler-wasm32-wasibinary not installed) — an environment gap, not a size result; CI measures them.Public API changes
None. No export, prop, option, parameter, default, documented behaviour or diagnostic code changes.
SIGNALS_TEST_DEFINEis a build-time environment switch for the rollup config,SEAT_SHADOW_REPORT/SEAT_SHADOW_TRACE/SEAT_SHADOW_STRICTare test-harness environment variables; none reach a published artifact.Co-authored-by: Claude via Cursor