Event-driven contract on the 15 s golden WAV. Badges assert the EVENT
payloads, not internal state: (1) setLoop(10, 9999) fires
loopchange with end clamped to buffer.duration
exactly; (2) during looped playback 200 consecutive
timeupdate values all land inside [loop.start, loop.end] —
this exercises the 2026-07-02 clock repair (the wall-clock reference now
tracks the actual start offset, so even first-cycle values are in bounds);
(3) pause()/play() continuity — the clock resumes within 60 ms
of the paused position (resume now also continues the AUDIO from the paused
position instead of silently restarting the loop); (4) the
state getter mirrors the last events. Clamp + state asserts
spot-run headless in Node pre-ship.
press run