open-standards/wai/live-conformance/links/README.md
Transaction Science 57e426c940 live-contribution: the link record's magic is WLK1, no longer the clip record's WCL1
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]>
2026-11-04 05:19:53 -05:00

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.json lists every vector: its kind (part, one file; series, several, in order), its files, its outcome and, for a refusal, its reason (and, in a series, at, the index of the part refused), for an accepted part its digest and a summary of its fields, and a note on what it shows. hop is the signing key, hop_seed the seed it is made from, so anyone can sign a new vector the same way.
  • Each .wlk1 file 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/