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]>
25 lines
1.4 KiB
Markdown
25 lines
1.4 KiB
Markdown
# links — the contribution link record, `WLK1`
|
|
|
|
The corpus of [live-contribution](../../extensions/live-contribution.md) §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/
|
|
```
|