Skip to content

docs(server-components): A0, the frames rulings and prior art, the plans — with the overnight pass's defaults and the server-half drafts - #3834

Closed
ryansolid wants to merge 7 commits into
fix/frames-s-flush-address-sourcefrom
docs/frames-a0-rulings
Closed

ryansolid wants to merge 7 commits into
fix/frames-s-flush-address-sourcefrom
docs/frames-a0-rulings

Conversation

@ryansolid

Copy link
Copy Markdown
Member

Draft — frames correctness pass, step 6 (docs). Stacked on #3830 so the A0 documents ride with the first code PR rather than alone (the maintainer's preference). Seven commits: the four spec/frames-rulings commits cherry-picked as they are (frames-rulings.md; the A0 axiom and annotations in server-components-principles.md), the spec/frames-rulings-prior-art commit cherry-picked (frames-rulings-prior-art.md), the two plan documents from size/frames-a0-reattribution @ 1e0be39d9 brought over as one commit (frames-a0-reattribution.md, frames-savings-pass.md — content unchanged), and one commit of tonight's additions to frames-rulings.md (201 lines; no reformatting of the existing text — the repo's prettier does not run on markdown, so the first attempt's *→_ churn was reverted):

No code. rules-index --check not run (no signals rules cited).

Decision made by default: the plan documents (documentation/plans/frames-a0-reattribution.md, frames-savings-pass.md) were brought as one squashed commit rather than nine cherry-picks — they are plans, not rulings; the brief named only the rulings and prior-art documents, and these are the plans the pass implements. If the maintainer prefers their own history, the branch is size/frames-a0-reattribution.

ryansolid and others added 7 commits October 6, 2026 04:28
…ency reds and the size audit's duplicates share (proposed)

Draft, marked "proposed — maintainer ruling pending"; no engine changes.

The frames/hydration consistency contract (spec/frames-consistency-contract)
found thirteen reds across C2, C3, C4, C5, C6, C7, C12 and C17; the SC size
audit (size/sc-audit §4) listed the layer's duplicated seams. This document
tests the hypothesis that they are the same seams seen from two sides, and
drafts the rulings — numbered one-sentence statements in the L2 section's
voice, each with the mechanism that carries it today, the state it lives in
twice, and the reds it decides — grouped by the three questions the reds
cluster on:

- Response identity (C5, C6, C17): a response owns what it delivered; a
  `data` chunk lands in its own response's table or nowhere; a record
  resolves its refs through its own response's table wherever the frame is
  bound; a bump drops what the previous version never applied; the shell
  gate is the bound address's; a switch keeps on screen what was on screen.
- Applied state per version (C7, C2, C4): the store is the truth and the
  applied state is a cache of it keyed by version; a bump re-applies a
  byte-identical root; a reveal is an apply; applied means shown.
- Hydration-done accounting (C3, C12, S1's C3b and `.fails`): done counts
  every occurrence the document delivered; every frames hold is counted once
  per frame; a claim owns the fragment's outcome; the client consumes the
  ids the server consumed.

For each: the fix shape as one collapsed carrier (response-owned data
cells, records carrying their resolver, one shell gate, one applied record,
one hold counter), a byte estimate (− collapse / + carrier) read off the
audit's function table, the pins that flip, and what touches public
surface or the server half. Two-readings items for the maintainer: 1.4
(narrow/full), 1.6 (per-address gate value vs holds-latest), 3.1 (done
counts the page vs the root pass — S1's pin and the contract's contradict).
What the rulings do not decide (plain bugs, product questions, the wire)
and an order of work gated by the contract's pins and scripts/size.

Co-authored-by: Claude via Cursor <noreply@cursor.com>
…19 under seam 3; gate is #3813

Co-authored-by: Cursor <cursoragent@cursor.com>
… data; a frame is one async value outward, its inner boundaries are the server's; 3.1 ruled

Co-authored-by: Cursor <cursoragent@cursor.com>
… hold model governs; axioms annotated with the Solid 2 rules they restate

Co-authored-by: Cursor <cursoragent@cursor.com>
Per-reading comparison (1.3, 1.4, 1.6, 2.3, 3.1, 3.3, 3.5, 3.6) and per-
product-question comparison (C12 (c), settles-once projections, live
containers, slot-trails-html) against RSC/Flight+Fizz, Next.js, React
Router/Remix, Turbo/htmx, Phoenix LiveView, Qwik, Astro server islands,
Marko, Vue and Solid Router. Adds an addressing section (content-keyed vs
tree-shaped vs DOM-addressed vs connection-tree) for the maintainer's A3/A4
model, a summary table, and a list of mechanisms the references have that
we don't. Primary-source citations; verified vs inferred marked.

Co-authored-by: Claude via Cursor <noreply@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…plan onto the rulings branch (from size/frames-a0-reattribution @ 1e0be39)

The plans tonight's correctness pass implements (frames-savings-pass.md
Phase A: A0–A6), carried with the code per the maintainer's preference.
Squashed from the branch's nine commits; content unchanged.

Co-authored-by: Claude via Cursor <noreply@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ts, the server-half drafts, the as-landed table

What the rulings do NOT decide: the nine readings the 2026-10-06 pass took
by default (first flush not start; warm switch-back shows the committed
value; the name decides the class on every sync; 2.3's interim with
S-flush; 1.2 by the version guard; 3.2 via initBoundaryResume keyed
sc:<fid> while in progress; 3.3's dev report; S-adopted documented; the
harness's C3 dispose exemption), each with its alternative. The server
half: C13's delimiter with the client's one-write status, the
plain-response streaming bound (complete.bound), C12 (c)'s error template
located in finalizeError/the done closure with the two decisions the
server PR must make. Order of work: the as-landed table (#3830–#3833),
what each step left undone. Public surface: landing, hold, holdBoundary,
the behaviour notes.

Co-authored-by: Claude via Cursor <noreply@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@changeset-bot

changeset-bot Bot commented Oct 6, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 2a5e63e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ryansolid

Copy link
Copy Markdown
Member Author

Folded into #3837 — the whole frames A0 correctness pass as one PR against next, per the maintainer ("it would be a lot faster to merge as one given all the checks"). This draft's commits are on that branch unchanged (merged, not squashed); its decisions-by-default are listed there and in frames-rulings.md, accepted by the maintainer 2026-10-06. Closing; the branch is kept.

— Claude via Cursor

@ryansolid ryansolid closed this Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant