Repository navigation
Conversation
…`{ $tr }` record
`#syncSlots`' mounted branch guarded the update site against the regions
tier only (`needsRegions`); the trace tier's wait covered the fresh mount
alone. A MOUNTED occurrence's new record whose literal args carry a
`{ $tr }` marker while the trace tier is absent — a live slot op minting
the page's first trace after the shell, a refetch adding a projection arg —
was pushed into the live binding raw, the marker read as the value.
Now that record stays pending in the store: the live binding keeps the args
it shows, `needsTrace` starts the load (nothing announced it), and the
install's flush re-syncs with the tier in place and applies the record as
an args change into the same mount with the marker materialized. C4's
`regions` update-site wait, mirrored.
Pin: consistency/tier-trace-hold.spec "update site" (document face: a live
slot op mints the page's first trace post-shell with the tier absent → no
raw read, args kept, one load, applied on the install's flush into the same
`<li>`). Fails on the base at the first assertion (the loader never called).
Measured (exact A/B of the built dist through scripts/size's bundler, base
numbers reproduce the Phase 1 record byte-for-byte):
frames: eager client consumer 40,012 min / 13,086 br +12 / +3
page: base server components 119,056 min / 37,747 br +12 / -25
page: live server components 130,927 min / 41,396 br +12 / -31
Non-SC scenarios 0 / 0. No cap changed. Web client suite 1187, hydrate suite
439 green; harness seeds 3289 / 91501 ×500: SC arm 0 findings, generic arm
(IGNORE=C1,C9,C19,E) 0 findings.
Co-authored-by: Cursor <cursoragent@cursor.com>
🦋 Changeset detectedLatest commit: 5af48f5 The changes in this PR will be included in the next version bump. This PR includes changesets to release 12 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 |
|
Stacked on #3860 (
wip/frames-tiers-integration@5c5991cbd); one commit, independent of the C2 (live wire tier) ruling.Summary
#syncSlots' mounted branch guarded the update site against the regions tier only (needsRegions, C4); the trace tier's wait covered the fresh mount alone. A MOUNTED occurrence's new slot record whose literal args carry a{ $tr }container-trace marker while the trace tier is absent — a live slot op minting the page's first trace after the shell, a refetch adding a projection arg — was pushed into the live binding raw, the marker read as the value.Now that record stays pending in the store: the live binding keeps the args it shows,
needsTracestarts the load (nothing announced it), and the install's flush re-syncs with the tier in place and applies the record as an args change into the same mount, the marker materialized. C4'sregionsupdate-site wait, mirrored — one clause:Pin
test/consistency/tier-trace-hold.spec.tsx— "update site: a MOUNTED occurrence's new record carrying{ $tr }while the tier is absent stays pending …" (document face). An occurrence mounts at t=0 on a trace-free record with the tier absent; post-shell, asc:liveslot op re-sends its record with a marker arg → the loader is called once, the binding still reads["first", undefined], the<li>still showsfirst, no mount, no error; aftergate.release()the same mount readssecond/{ n: 5 }and the<li>shows5, no warnings. On the base the pin fails at its first assertion (the loader is never called — the marker went into the binding raw).Measured
Exact A/B of the built dist through
scripts/size's bundler (turbo --force; the base copy reproduces the Phase 1 base record byte-for-byte):Non-SC scenarios 0 / 0 (every
signals/app/serverscenario byte-identical to the base). The page brotli deltas are a context effect of the now-repeatedneedsRegions(record) || needsTrace(record.args)phrase, inside the ± 50 band. No cap changed. (The three pre-existingFAILs inpnpm size—signals: core floor,signals: + isPending/latest,app: CSR— are the base's, byte-identical here.)Tests
packages/web: client suite 129 files / 1187 passed; hydrate suite 86 files / 439 passed (expected-fail counts unchanged).CONSISTENCY_FUZZ=1 CONSISTENCY_CASES=500, seeds 3289 and 91501: SC arm 0 findings; generic arm withCONSISTENCY_IGNORE=C1,C9,C19,E0 findings.Public API changes
None. (
needsTraceis module-internal; no export, option, prop, parameter, or diagnostic changes.)Docs
Plan §3 row C3: one clause — "Update-site wait landed (fix PR)".
Changeset:
.changeset/frames-trace-update-site-wait.md(@solidjs/webpatch).