All checks were successful
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 34s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 34s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 25s
joule-moq-http live HTTP egress / joule-moq-http · does this change touch it (push) Successful in 59s
wai-audit collector and player integration / does this change touch it (push) Successful in 29s
WAI examples / WAI examples · does this change touch them (push) Successful in 22s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 1m11s
wai-app and Create / wai-app · does this change touch it (push) Successful in 54s
wai-fleet service / does this change touch it (push) Successful in 31s
wai-quantum for JavaScript / does this change touch it (push) Successful in 18s
wai-quantum studio and desktop / does this change touch it (push) Successful in 22s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 1m14s
wai-ledger service / does this change touch it (push) Successful in 2m57s
wai-audit collector and player integration / collector · linux (push) Successful in 2m40s
wai-fleet service / service · linux (push) Successful in 2m59s
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Successful in 4m39s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 3m35s
wai-quantum studio and desktop / studio · browser (push) Successful in 5m22s
WAI Studio / does this change touch it (push) Successful in 5m59s
wai-sink-android native sink library / does this change touch it (push) Successful in 6m8s
WAI operation catalogue / does this change touch it (push) Successful in 6m32s
wai-pack / wai-pack · does this change touch it (push) Successful in 6m18s
wai-sink-swift native sink package / does this change touch it (push) Successful in 6m8s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 6m17s
wai-ledger service / service · linux (push) Successful in 3m40s
joule-moq-http live HTTP egress / joule-moq-http, every target (push) Successful in 6m28s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 7m35s
joule-code conformance gate / joule-moq-relay, every target (push) Successful in 9m29s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 10m32s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 9m53s
wai-quantum for JavaScript / javascript · linux (push) Successful in 9m42s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 10m0s
joule-code conformance gate / joule-moq-ingest, every target (push) Successful in 12m11s
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Successful in 53s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 2m13s
wai-pack / wai-pack · the floor through a media prober (push) Successful in 45s
WAI examples / WAI examples · android-app · linux-arm64 (push) Successful in 16m9s
wai-pack / wai-pack · dependency licences (push) Successful in 31s
wai-pack / wai-pack · linux-arm64 (push) Successful in 4m31s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 5m48s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 54s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 51s
WAI examples / WAI examples · portable · linux (push) Successful in 22m5s
wai-fleet service / service · macos (push) Successful in 46s
wai-ledger service / service · macos (push) Successful in 1m43s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 8m4s
wai-pack / wai-pack · linux (push) Successful in 4m40s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 16m21s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 7m4s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (push) Successful in 15m59s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 11m11s
wai-pack / wai-pack · independent verifier (Python) (push) Successful in 20m31s
wai-pack / wai-pack · macos (push) Successful in 3m15s
WAI Studio / Studio in WebKit · linux (push) Successful in 17m42s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 6m10s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 13m41s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 19m10s
wai release binaries build on Windows / the seven release binaries · windows (push) Successful in 21m31s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 12m54s
Until now the room service's own source was a watch room's file served over HTTP, stamped
by nothing, so no deployed room published stamped objects. [source] publishes one.
- src/source.rs: a package's video and sound (wai-pack's floor.listing), published into
each room in real time, looped, as a principal of its own: its key derived from the
clock's seed, its grant a publisher's (Epoch::grant_source) with meta events among its
kinds. It holds a publisher place, the clock signs its join and publish, GET /room names
it. Video frames take framerate's duration (30); an object is 3 frames of video or 5 of
sound by default. An MSF catalog with each track's receipts track and wai_tempo
(tests/catalogs/source.json, catalog_check.py --strict).
- TEMPO stamps (draft-nandakumar-moq-tempo-00): inside Immutable Properties the
CaptureTimestamp (the instant the object's last sample was captured) and PlayoutDelay
(playout_delay_ms, at most max_delay_ms); HopTime beside them. Property types configured
as the relay's [tempo] names them, with its defaults; tempo::Timing::read_as reads them.
- Running receipts (D16): per media group one running::Writer over the track's
wai_receipt_alias; after each object, writer.next(content hash, its jwp-receipts §2.2
leaf) and a meta event of the source's chain anchored at (anchor_track(catalog namespace,
name), group, position) on its events track. The group's receipts at its end. Receipts
streams go at a transport priority above media, events above media (3e1748aac).
- Refused in an end-to-end encrypted room, one admitted by age, a world, remote desktop or
call room, or a conversation.
tests/source_room.rs, through the relay and the HTTP egress gateway (joule-moq-http, a
dev-dependency, unchanged): a viewer holds every object to its stamps (types, the catalog's
delay and bound, one capture clock across both tracks read from each chunk's own tfdt and
durations, a HopTime of the relay's clock, arrival before the instant, groups whole and in
order); the gateway serves each part on the run beside it and closed parts on their
receipts, nothing withheld or refused, its trace checked. Falsified: capture stamped at
send time, no running receipts, a delay one off the configured, and the configured types
ignored each fail it.
Real time: thirty seconds of 30 fps video and sound, every part served by the gateway within
500 ms of its capture stamp and none missing or withheld; the test refuses to measure, and
says so, where the host's load is above a quarter of its processors.
Measured once, on the iMac Pro (Intel Xeon W-2150B, 20 threads, macOS), 11 November 2026,
one-minute load 3.4 at the end: 617 parts served, capture stamp to served median 11 ms, p95
19 ms, max 36 ms. That host's dated record (D8), not a property.
co-watch §15.7 says what the source states and that it is live, not held to a controlled
position; decision D33.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
1 line
No EOL
3.6 KiB
JSON
1 line
No EOL
3.6 KiB
JSON
{"tracks":[{"bitrate":200000,"codec":"av01.0.00M.08","framerate":30,"height":36,"initRef":"video0","isLive":true,"name":"0","namespace":"7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e-5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c-video","packaging":"cmaf","renderGroup":1,"role":"video","wai_receipt_alias":100,"wai_receipts":true,"wai_receipts_track":"0_receipts","wai_tempo":{"max_delay_ms":2000,"playout_delay_ms":500},"width":64},{"isLive":true,"name":"0_receipts","namespace":"7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e-5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c-video","packaging":"wai-receipts"},{"bitrate":96000,"channelConfig":"2","codec":"opus","initRef":"audio0","isLive":true,"name":"0","namespace":"7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e-5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c-audio","packaging":"cmaf","renderGroup":1,"role":"audio","samplerate":48000,"wai_receipt_alias":101,"wai_receipts":true,"wai_receipts_track":"0_receipts","wai_tempo":{"max_delay_ms":2000,"playout_delay_ms":500}},{"isLive":true,"name":"0_receipts","namespace":"7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e-5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c-audio","packaging":"wai-receipts"},{"depends":[],"eventType":"urn:wai:event:1","isLive":true,"mimeType":"application/json","name":"0","namespace":"7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e-5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c-events","packaging":"eventtimeline"}],"initDataList":[{"data":"AAAAIGZ0eXBpc281AAACAGlzbzVpc282YXYwMW1wNDEAAAL0bW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAABJPgAAAAAAAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAfd0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAkAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAAAAAAAAAABAAAAAAFvbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAABJPgAAAAABVxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAABGm1pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAANpzdGJsAAAAjnN0c2QAAAAAAAAAAQAAAH5hdjAxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAEAAJABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAAGGF2MUOBAAwACgoAAAACr/GbXzAIAAAAEHBhc3AAAAABAAAAAQAAABBzdHRzAAAAAAAAAAAAAAAQc3RzYwAAAAAAAAAAAAAAFHN0c3oAAAAAAAAAAAAAAAAAAAAQc3RjbwAAAAAAAAAAAAAAKG12ZXgAAAAgdHJleAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAGF1ZHRhAAAAWW1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALGlsc3QAAAAkqXRvbwAAABxkYXRhAAAAAQAAAABMYXZmNjMuMS4xMDI=","id":"video0","type":"inline"},{"data":"AAAAHGZ0eXBpc281AAACAGlzbzVpc282bXA0MQAAApltb292AAAAbG12aGQAAAAAAAAAAAAAAAAAALuAAAAAAAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAABwHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAAAAAAAAAAEAAAAAAThtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAALuAAAAAAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAADjbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAACnc3RibAAAAFtzdHNkAAAAAAAAAAEAAABLT3B1cwAAAAAAAAABAAAAAAAAAAAAAgAQAAAAALuAAAAAAAATZE9wcwACATgAALuAAAAAAAAAFGJ0cnQAAAAAAAH0AAAB9AAAAAAQc3R0cwAAAAAAAAAAAAAAEHN0c2MAAAAAAAAAAAAAABRzdHN6AAAAAAAAAAAAAAAAAAAAEHN0Y28AAAAAAAAAAAAAAChtdmV4AAAAIHRyZXgAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAA9dWR0YQAAADVtZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAAhpbHN0","id":"audio0","type":"inline"}],"version":"draft-01"} |