Repository navigation
docs(signals): async rules — the 2026-10-09/10 rulings in F/D - #3976
Conversation
- Holds: only a render effect whose read throws NotReadyError holds a change; a served stale value or a verdict read does not. - Fresh and re-armed boundaries (#3540 stands): a new or re-armed Loading catches every NotReadyError under it, and its fallback lands with the frame that armed it. A separate change shows the fallback now; only a hold on that frame hides it. The draft that hid it for any outside reader of the same value is withdrawn. - An uncaught first load or born-held read in a branch a change mounts holds that change; the branch never attaches with an empty slot. Loading is how a change escapes the hold. The direction rule's time half (once F-8) stays withdrawn. - Verdicts: a node with a committed value is judged wherever its readers are. A node with none (a first load, a memo born held) is loading and has no verdict: isPending throws like its read when owned, false unowned; latest returns a born-held memo's pending value. - Scenarios S-3, S-5, S-6, S-14, S-26 corrected; Q-1..Q-5 removed from OPEN-QUESTIONS now that the rules carry them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LVm3wseHt9wRTY8LfPiHmQ
F-6: a probe alone holds nothing; a plain read beside it holds (#3442). D-4: membership is the reading render effect's; an unread memo holds nothing (#3802). D-16: the plain-read exception. D-2/D-12/D-13/D-23 and U-1-U-3: status for carve/born-in-col2, carve/probe-not-holder and carve/reader-position; the D-13 gap's outside-reader form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LVm3wseHt9wRTY8LfPiHmQ
…25, #3884) D-23 points to it, and notes the verdict-reader screen holds in either read order (verdict-read-order.test.ts). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LVm3wseHt9wRTY8LfPiHmQ
|
Size (brotli, eager entry chunk)
Bundled with Rolldown (what Vite ships), brotli q11, decimal KB. A scenario fails only when it is over its brotli cap and its minified size is more than 20 B over the minified recorded with the cap; over the cap within that allowance is brotli layout noise and passes with a warning. Caps and their recorded minified in |
Coverage Report for CI Build 38121964477Coverage remained the same at 77.429%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
Merging this PR will not alter performance
|
Generated by Claude Code |
- Branch names replaced with #3977; statuses no longer describe next. - D-12 status notes the inside-boundary creation gap (it.fails pin). - S-3: the pin is a direct mount; its direct binding shows the committed value and re-runs at the commit (D-3). The click-mounted table stands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LVm3wseHt9wRTY8LfPiHmQ
|
Addressed in
🤖 Generated with Claude Code Generated by Claude Code |
…review)
Ruling 2026-10-11: "throws" was to make the hold or the boundary
trigger, and born held already does. Inside an owner, isPending of a memo
born held holds its reader as its read does (caught by a boundary that has
not shown content, or held with the change) and the reader runs at the
commit; a first load's NotReadyError is unchanged. No answer shows before
the commit — the web guard test pins <input disabled={isPending(data)}>.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVm3wseHt9wRTY8LfPiHmQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LVm3wseHt9wRTY8LfPiHmQ
|
Item 2, ruled: "throws" existed to make the hold or the boundary trigger, and born held already does. The engine stays as #3977 ships it; the wording now says what happens — inside an owner, The guard D-23 cares about is pinned in #3977: 🤖 Generated with Claude Code Generated by Claude Code |
The async rules as reviewed 2026-10-09/10, carried into
RULES-FUNDAMENTALS.md/RULES-DERIVED.md(the rules are the artifact; no separate rulings doc).<Loading>is how a change escapes the hold. The direction rule's time half (drafted as F-8) is withdrawn.isPending/latest) alone holds nothing; a plain read beside it is a read (Adding combined isPending breaks atomic publication #3442).isPendingof a first load or born-held memo throws when owned,falseunowned;latestis its pending value if it has one.isPending/latestdoes not hold a re-arm.OPEN-QUESTIONS.mdkeeps only the U section (U-1/U-2 built, U-3 noted).Implemented by #3977.
🤖 Generated with Claude Code
https://claude.ai/code/session_01LVm3wseHt9wRTY8LfPiHmQ
Generated by Claude Code