The contribution link record and the live-recording clip record both began WCL1. The clip record had it first (live-recording §5.1, the registry's only WCL1 row); the link record took the same four bytes when it was added, so a reader that tells records apart by their magic could not tell one from the other. The link record is now WLK1, a magic nothing else in the registry, the code or an open branch uses. live-contribution §6.2 and SPEC name it, §6.5 step 2 says the clip record's WCL1 is refused as malformed, and codecs/registry.rs registers it (REGISTRY.md and registry/ exported from it). joule-moq-ingest writes and reads it. The corpus live-conformance/links/ is regenerated with it, its files now .wlk1, plus clip_record_magic, a part with the clip record's magic, refused. live_contribution_verify.py reads WLK1 and also refuses each accepted part mutated to WCL1. A wire change: a link record written before this one is malformed to a reader of this revision. The CHANGELOG says so and acknowledges every corpus file that changed. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1.4 KiB
links — the contribution link record, WLK1
The corpus of live-contribution §6: parts of the link record a gateway signs while it receives an SRT or RIST link, and series of them.
vectors.jsonlists every vector: itskind(part, one file;series, several, in order), itsfiles, itsoutcomeand, for a refusal, itsreason(and, in a series,at, the index of the part refused), for an accepted part itsdigestand asummaryof its fields, and anoteon what it shows.hopis the signing key,hop_seedthe seed it is made from, so anyone can sign a new vector the same way.- Each
.wlk1file is one record's bytes.
Accepted vectors cover each protocol and mode, each key length, a session's last part with sequence numbers outstanding, a part whose loss runs are truncated, tracks not yet begun, and series of three parts, one with a track that begins in its second part. Each refused vector breaks one rule of §6.5 or §6.6 and keeps every other; every reason of §7's last list refuses at least one.
Written by joule-moq-ingest-link-vectors --out (crate joule-moq-ingest), from fixed seeds:
--check regenerates it and compares every byte. Read by the crate's tests/link_corpus.rs,
and by ../live_contribution_verify.py, written from the text alone:
python3 -I live-conformance/live_contribution_verify.py live-conformance/links # from wai/