joule-moq-room: the clock's events track is published with each grant, so a viewer can enter an empty room #529
Merged
dcharlot
merged 2 commits from 2026-10-29 02:28:02 -04:00
room/viewer-of-an-empty-room into main 2026-10-29
joule-moq-room README: the events track is published with the room's first grant
All checks were successful
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (pull_request) Successful in 1m22s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 1m13s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 7s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 6s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 7s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 28s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 4m11s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 25s
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 16s
WAI Studio / does this change touch it (pull_request) Successful in 14s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 57s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 6m50s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 3m21s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m27s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 7m26s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 5m1s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 6m19s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 8m35s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 9m29s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 10m2s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 15m44s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 12m27s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m5s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
joule-moq-room: the clock's events track is published with each grant, so a viewer can enter an empty room
The clock published its events track at the room's first event, a publisher's join. A viewer
who entered a room nobody had joined subscribed to a track with no publisher, and the relay
refused it at its rendezvous wait ("no publisher within RENDEZVOUS_TIMEOUT"): on
wai.transaction.science, /room/'s Watch and WAI Studio's Rooms panel never entered while the
room was empty. The track is now published by Service::open_events, which each grant spawns;
the first event uses the same path (events_track), so the track is published once per room.
room_service: a_viewer_enters_a_room_nobody_has_joined, a viewer's subscription answered in
an empty room and the first publisher's join reaching it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>