You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[2.0 / next] A memo reading latest(a) beside b() computes a torn pass on a batched write; if that pass throws, the error sticks #4365
Found by the async app generator (packages/web/test/async-gen, branch claude/project-thread-bgafe5), minimized. There is no async anywhere in this case.
const[a,setA]=createSignal(1);const[b,setB]=createSignal(0);render(()=>{constm=createMemo(()=>{constv=latest(a)+b()+1;if(v%4===3)thrownewError("m:"+v);returnv;});return<Erroredfallback={e=>`[E ${e()?.message}]`}><spantitle={String(m())}/></Errored>;},el);flush();setB(3);setA(2);flush();// m computes latest(a)=2 with b()=0 → 3 → throws, and never re-runs: screen stays [E m:3]
Expected:m = 2 + 3 + 1 = 6, <span title="6">. A fresh render with a=2 and b=3 shows that.
Actual on next (1f558e5): the memo runs one pass with the new latest(a) beside the old b(). When that pass throws, the boundary keeps the error, and nothing re-runs m with b=3.
Without the throw, the torn pass still reaches effects. In a memo returning [latest(s), s()] after set(2), a render effect commits [2,1] before [2,2]. That is a torn tuple from a plain write with no transition held, which "latest tears" (#4284) doesn't seem to cover.
Activity
fix(signals): the lane's end re-derives a render effect's own stale e…
docs(signals): clarify D-22, D-25, D-26, D-27 and the Lane vocabulary…
docs(plans): reader-seat brief — the work after the rulings review
fix(signals): a latest() reader's frame flight is adopted at the land…
fix(signals): R5 with #4397 asks each question once
fix(signals): latest() of a memo born in a lane throws NotReady, not …
ryansolid commentedon Oct 29, 2026
Fixed on
nextby #4393 (81a12d8); it ships in the next RC.Generated by Claude Code
fix(signals): latest() opens no transaction for its verdict; its read…
test(signals): shadow the per-hold release — a posture is toward the …
test(signals): shadow the per-hold release — a posture is toward the …