# moqt-conformance/tempo — playout timing held to a room The corpus of [`extensions/co-watch.md`](../../extensions/co-watch.md) §15, in one file, `vectors.json`: the object properties of `draft-nandakumar-moq-tempo-00`, and the instant they state held to the room clock and the controlled position. - `property_types` are the property types the reference uses until the draft's are assigned. `properties` are timings (`capture_ms`, `delay_ms`, `hop_ms`, each `null` where the object states none) with the pairs they are written as: `immutable`, inside Immutable Properties, and `mutable`, beside them, each the Key-Value-Pairs' bytes in hexadecimal. `malformed` are pairs a sink refuses. - `short` are timestamps as sent, the receiver's time, and the full timestamp (`null` where there is none). `catalog` are `wai_tempo` members with `accept` and the capture times of five Locations, (0, 0), (0, 1), (7, 0), (7, 3) and (21600, 0), or the code. - `scripts` are control scripts, each control `[action, at, arg]` (co-watch §5.1), sent 300 ms ahead of its instant and, of two for one instant, in the order listed; the source starts at 0, lasts `duration_us` and the room's `t0` is `t0_us`. `claims` are timing claims, each under a script: the object's `position_us` and `length_us`, the instant the search starts `from_us`, what the object states and its track's bound, and the outcome, `due_us` or a `reason`. `changes` are changes of delay: the script, the instant, `delta_ms`, the controls that make it, and when an object at `position_us` is due before and after. - `targets` are a sink's playout targets in the draft's three scenarios. **Provenance.** Generated here by `JOULE_MOQ_ROOM_WRITE_TEMPO=1 cargo test --test tempo_vectors` in `joule-code/joule-code-rs/crates/joule-moq-room` (`src/tempo/corpus.rs`), from constants; no key signs anything, no media and no input from outside this repository. Each case states the outcome it was written to have. `joule-moq-room`'s test `tests/tempo_vectors.rs` checks that the file regenerates byte for byte and that the reference reaches every outcome, plants a timing claim outside each of its bounds, and sweeps objects across every script. [`../tempo_verify.py`](../tempo_verify.py) is the second implementation, written from co-watch §5, §6 and §15: it shares no code with `joule-moq-room` or `wai-rs`, computes the controlled position itself, and changes cases and requires each change to be caught.