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: an async memo over two held verdict sources asks the same lane question twice #4399
Take an async memo m1 = ask(1 + m0() + m0b()) over two verdict memos, m0 = ask(1 + latest(s) + s()) and m0b = ask(10 * (latest(t) + t())). In the held two-action and two-verdict probes (each write made inside an action that holds), m1:15 is asked twice on the same input. On next it was asked 3–4 times. #4397 removed every other duplicate in the probe matrix, but these 6 are left.
A question asked twice on the same input is a duplicate request. Each question should be asked once.
Repros: review-4397/zz-probe.test.ts (the held rows) and probe-h-wip.txt (project repro folder). Related: #4398.
I traced this on #4393's head. #4393 fixes the two-verdict held rows. The two-actions held rows (split, value, latest) still ask m1:15 twice:
The first m1:15 is asked in A's verdict lane, which is held under A's transaction, over m0 = 4 and m0b = 10.
m0b then asks 20 on mainline, because B's t = 1 is visible in B's own transaction.
m1 re-derives in B's world. It reads m0 = 4, and m0b = 10, since 20 is still in flight. So it asks m1:15 again.
It is the same question asked in two seats, and F-9 says it should be asked once. Telling the two passes apart needs their inputs compared, which is a per-pass check. So this becomes an it.fails row for the reader-seat carve, landing in a tests-only PR after #4393.
Activity
ryansolid commentedon Oct 29, 2026
I traced this on #4393's head. #4393 fixes the two-verdict held rows. The two-actions held rows (split, value, latest) still ask
m1:15twice:m1:15is asked in A's verdict lane, which is held under A's transaction, overm0 = 4andm0b = 10.m0bthen asks 20 on mainline, because B'st = 1is visible in B's own transaction.m1re-derives in B's world. It readsm0 = 4, andm0b = 10, since20is still in flight. So it asksm1:15again.It is the same question asked in two seats, and F-9 says it should be asked once. Telling the two passes apart needs their inputs compared, which is a per-pass check. So this becomes an
it.failsrow for the reader-seat carve, landing in a tests-only PR after #4393.Generated by Claude Code
test(signals): pin #4402 and #4398 as fixed by #4393; #4399 as a carv…
fix(signals): a memo waiting on a held flight is the hold's work at i…
ryansolid commentedon Oct 31, 2026
Fixed on
nextby #4510 (2ba10bd); it ships in the next RC.Generated by Claude Code
probe(signals): #4544 probed-held bit — a probe of an unheld node ear…