wai: live-compose, a room's composition as an integer function (L3) #296
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/live-compose"
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?
wai.live.compose: a room's composition as an integer function (L3)This PR adds slice L3 of the live and interactive work, the extension
wai/extensions/live-compose.md. A room's layout is apure integer function of two things: a signed descriptor, and the participant set that the
room's lifecycle replay gives at an instant. That lets every sink compose locally, with no
server encode. A server compositor's output can then be checked against the same function
through a signed receipt. The base is
main, which already holds L1, L2 and L4 (#289).What is in it
wai/extensions/live-compose.md:WCD1descriptor. It is signed by the room authority, or by a principal whosegrant in effect at
effectivehas the compose power. It carries:t≤ t. A gap in a room key'schain is
lifecycle_incomplete; a gap in any other chain changes nothing.dimensions of its composed layer, and an audio source.
digest.
to more columns. Rows are centred, and the last row is centred too.
PiP window, and contain for the featured tile.
aspect. With an offset.
had no pip attribute.
the tile limit.
once at the end.
lossy re-encode are not, so the receipt binds the objects.
descriptor's
compositorwith the compose power, and the compositor is not composed.WCR1receipt:input objects.
single/svc, track L for simulcast, tracks 0..L for staged. A zero object digest means
"held none".
wai-rsfeaturelive_compose(it implieslive_room):src/live_compose.rs: the descriptor, the room at t, participants, the set digest,the receipt, and verification.
src/live_compose/layout.rs: the layout and the mixer, using nothing beyondcore,VecandString, so L5c can build it for wasm.cbindgen:ignore.wai/live-conformance/compose/, written from fixed seeds bywai_live_compose_vectors gen, with a provenance line in its README. It covers:with stopped video;
refusals;
re-lays it out;
wai/live-conformance/live_compose_verify.py, standardlibrary only:
from the spec text.
live_rooms_verify.py, and steps that verifier's lifecyclereplay itself to take the room at each instant. The Rust reference instead re-verifies
the prefix of each chain cut at t, so the two derivations differ.
corpus fails.
live composestep in the independent-verifiers job, andlive-compose.mdin bothpath lists. The tests are declared with
required-features.the magics
WCD1andWCR1);wai registry exportwas re-run.live-conformanceexclusion inint_kernels_vectorsnow names compositions.for the meaning of
featured,order,pip(and the addedgainandpan). Thecapture-binding attributes
subjectandminorare unchanged.Checks run (build host,
rb, under memguard)Every cargo command ran on the build host through
~/kani-logs/remote/rb <worktree> -- '<command>'.Output went to logs on the host, which were then grepped. Nothing was built on the dev Mac.
wai/wai-rsunless noted)cargo test --no-default-features --features live_compose --lib live_compose::--pull)cargo run --no-default-features --features live_compose --bin wai_live_compose_vectors -- gen ../live-conformance/compose--pull)cargo run -q --no-default-features --bin wai -- registry exportcargo run -q --no-default-features --bin wai -- registry export --checktouch cbindgen.toml && cargo build --no-default-features --features live_compose --lib, thengit diff --exit-code -- wai/include/wai.hwai.hunchangedcargo test … --features live_compose --lib live_compose::and--test live_composecargo run … --bin wai_live_compose_vectors -- verify ../live-conformance/composecargo test --no-default-features --features capture_take --test live_events --test live_room --test capture_take(live-rooms.md was edited)cargo test --no-default-features --lib codecs::registrycargo test --no-default-features --test cli_registry --test corpus_provenancecargo clippy --no-default-features --features live_compose --lib --tests --binslive_compose(ok().expect, a manualis_multiple_of), fixed inbbbe4137live_composecargo test --no-default-features --features neural_int,video_int,audio_int,world_int,splat_int,generate,score,staged,stage_measure,legacy_int --test int_kernels_vectors(the cargo-class step's exact features)12a7b7b7--lib live_compose::and--test live_composeruns, then (inwai)python3 -I live-conformance/live_compose_verify.py live-conformance/compose; and--lib codecs::registryThe light checks were run locally:
python3 -Ionlive_compose_verify.py,live_events_verify.py,live_rooms_verify.pyandcapture_take_verify.py: all exit 0, and every mutated copy of the compose corpus fails.check-tests-in-ci.py,check-spec-refs.py,check-wai-section-refs.py,check-no-vanity-metrics.sh,check-comparative-prose.sh,check-orphan-sources.py,check-workflow-concurrency.shandpr-touches-paths-selftest.sh: all exit 0.Two checks were not run:
check-lockfiles.shruns cargo. This PR adds no dependency, and noCargo.lockchanged.Deferred to L5c (the browser compositor)
layout.rsfor wasm and exporting it to the page.sample_rate./room/page, with an e2e test on a browser's fake media.the receipt and its verification, and signs receipts only in the corpus.
Not done here: per-hop receipts of the relay (L9).
🤖 Generated with Claude Code