Skip to content

Commit 2a236f0

Browse files
committed
IROH-1: correct 'deterministic schedule' to timing stability
Operator question: does wasmtime deterministically avoid the collision for all programs, or only the suite? Only the suite (closed systems, no clocks - interleavings forced by rendezvous structure). For real programs the runnable set during a block window is fed by wall-clock inputs: the iroh row is green because the native sign makes the window ~zero, not because the scheduler avoids anything. The draft now states this precisely, adds the erosion note (their roadmap's non-extractable keys = slower async signers on every host), and proposes the falsifying repro for the filing: ~1ms of host-sign latency under wasmtime should reproduce the collision there.
1 parent 953cd5b commit 2a236f0

1 file changed

Lines changed: 16 additions & 7 deletions

File tree

upstream-consumer-findings.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,22 @@ the collision near-certain on any host that interleaves there.
6363
The endpoint's pump does its `block_on(sign)` **after** `bind` resolved,
6464
inside that admitted window, with the `RefCell` borrow live.
6565

66-
**Why the wasmtime leg is green anyway — deterministic schedule, not a
67-
guarantee:** wasmtime admits the same interleaving (its own suite asserts
68-
it); its particular deterministic scheduler simply never chooses the
69-
parked poller inside the signing window on this workload. deltic's
70-
deterministic scheduler does, ~90% of the time. Same semantics, different
71-
schedules — "works on wasmtime" is survivorship, and any scheduler change
72-
(wasmtime's included) can flip it.
66+
**Why the wasmtime leg is green anyway — timing stability, not a
67+
guarantee (and not even determinism):** wasmtime admits the same
68+
interleaving (its own suite asserts it, deterministically — but only
69+
because those tests are closed systems with no clocks or I/O). For real
70+
programs the runnable set during a block window is fed by wall-clock
71+
inputs, and the iroh row is green because the window is ~zero: the
72+
host's sign is native and effectively instantaneous, so the poller's
73+
5 ms timer essentially never lands inside it. Under deltic the same sign
74+
is a `crypto.subtle` Promise — a mandatory microtask hop plus real
75+
latency — and the cadence lands in the widened window ~90% of the time.
76+
Same semantics, different host timing. Note the shelter erodes under the
77+
project's own roadmap: non-extractable platform-backed identity keys
78+
mean slower, genuinely-async signers on every host. Falsifiable
79+
prediction (suggested repro for this filing): add ~1 ms of latency to
80+
the wasmtime host's `sign` and the collision should reproduce there
81+
too.
7382

7483
**Proposed fix (guest-side):** scope the borrow inside `drain`'s inner
7584
steps, or move signing out of the borrowed region (take what `sign`

0 commit comments

Comments
 (0)