joule-moq-web: a turn a later schedule replaces ends at that schedule's from #620
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/co-floor-schedule-change"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What failed
On #619's browser run, the room e2e's co-performance scenario failed with
the room with the clock's log verifies (co-performance §9): accept — turn_violated at ["object",2380].The three checks after it failed as a result. #619 changes only a version line in this
workspace's
joule-moq-room/Cargo.lock, and the same job passed on main three times that day.Why
The room page took a turn's end from its own schedule only, so the turn ended at its segment's
boundary. The scenario's refusing schedule takes effect in the middle of the marking schedule's
sixth turn, and the page of the performer holding that turn went on sending up to the new
schedule's
from, past the guard of §8.reached the relay in, and forwarded it.
from, under therefusing schedule, which gives that turn to the other holder.
turn_violated.The window is the hop between the relay and the clock. It is small on a quiet host and grows
under load, and the build host was under heavy load during that run.
§6.1 already says a later schedule replaces an earlier one from its
fromon. The page did notapply that to the end of a turn.
The change
web/room/co.js: a turn ends at its segment's boundary, or at thefromof a laterschedule if that comes first.
to the old turn's end, skipping the new schedule's turns up to it.
web/room/co.test.mjs(new): six cases, run bye2e/run.shwith the page's other moduletests. Against the old
co.js, three of them fail: the turn's end, the guard before thefrom, and the turns ahead.e2e/room.e2e.mjs: a refusal at an object now names the object, its arrival, and how farit is from the nearest turn boundary or schedule
from, so a future failure says which race itwas. Nothing else in the scenario changes.
Not changed
lead_ms, 300 ms by default): a page that learns a schedule more than150 ms after it is signed still sends past the guard until it learns it. That is the margin the
spec leaves to the room's configuration, and this change does not alter it.
Checks
node --test web/room/co.test.mjs: 6 of 6 pass. Against the oldco.js, 3 fail.node --checkon both edited scripts.🤖 Generated with Claude Code