### `wai.live.contribution`: SRT and RIST into a room's tracks, and the link record

- **The text** ([live-contribution](extensions/live-contribution.md)): SRT
  (`draft-sharabayko-srt-01`) as a listener and a caller, and RIST (VSF TR-06-1:2020 Simple
  Profile, VSF TR-06-2:2024 Main Profile), onto a room's tracks through the ingest gateway. A
  publisher POSTs `/srt` or `/rist` under its room grant and proof of key and gets a one-time
  session: the stream ID and passphrase live-ingest §13's listener checks, in a stated order with
  its rejection codes; or the gateway calls the publisher's listener, where its configuration
  lists the address; for RIST a port of its own, the CNAME its RTCP must give and, in the Main
  Profile, a PSK passphrase. The transport stream is demultiplexed: the first H.264 or HEVC
  stream and the first AAC stream, one access unit or one ADTS frame an object, a PES missing a
  packet dropped whole, the PTS on the room clock; the tracks, groups, catalog and first-hop
  receipts are a WHIP session's, with an owner's `link` track beside them.
- **The link record**, `WCL1`, which the gateway signs part by part: each part covers the
  sequence numbers passed while it was open, each one delivered at the first try, recovered,
  dropped or outstanding, with its loss runs, requests, retransmissions, late arrivals,
  duplicates, round trips and recovery times; parts chain by digest and name the head of every
  media track's receipt chain at their end; each is published, with receipts, on the link track.
  A verifier reads a part in stated steps (`record_too_large` … `runs_invalid`) and a series
  (`chain_broken`, `sequence_gap`).
- **Live-ingest** §13 and §17: SRT is implemented as live-contribution profiles it.
- **The reference implementation**: `joule-contrib` (SRT and RIST, the transport stream, the
  account; RIST behind the feature `rist`, off by default, live-contribution §10) and
  `joule-moq-ingest` (the sessions, the record, `joule-moq-ingest-link-vectors`). Interop with
  each transport's reference tools run locally as test peers, byte for byte, in the clear and
  encrypted, through lossy paths, in both directions, and into the gateway with an encoder's
  H.264, HEVC and AAC.
- **The corpus** [`live-conformance/links/`](live-conformance/links/) and its second
  implementation `live-conformance/live_contribution_verify.py`, written from the text alone.

