### Enhanced RTMP ingest, and `wai.live.injection`: SCTE 104 automation into signed cues

- **Enhanced RTMP v2** ([live-ingest](extensions/live-ingest.md) §12, until now a mapping):
  implemented in `joule-moq-ingest`. An encoder publishes over RTMP or RTMPS with a one-time
  stream key the gateway's `/rtmp` resource issues to a request that proves its room grant's
  key (§12.1); the stream key is good for one publish within its time, and the grant is
  admitted again when it is used. The gateway answers the handshake, the chunk stream, the
  protocol control messages and the commands, declares `capsEx` and the FourCCs it carries in
  its `connect` result, reads `onMetaData` per track, and carries legacy AVC and AAC and the
  enhanced `avc1`, `hvc1`, `av01`, `vp09`, `vp08`, `Opus`, `fLaC` and `mp4a`, single-track,
  multitrack and in aggregate messages, through every ModEx (§12.2, §12.4). Each track is
  bound to a room track at its first packet: a video track's layer is the grant's publish
  profile layer its `onMetaData` entry matches, and what matches none, or is not audio track 0,
  or is a codec the profile does not list, is counted and not carried (§12.3). Each frame is
  one object in its capability's framing, at the room-clock time §7 maps its decode time to,
  with its composition time offset as the new `live.cto` member (§6, §12.5); the gateway signs
  every group's receipts as the first hop, as for WHIP. At shutdown a publisher that declared
  `Reconnect` is sent the reconnect request, and its key is good once more (§12.8). `vvc1` is
  mapped and not carried. Read against one encoder's output, two forms the E-RTMP table does
  not show are read too: a FLAC sequence start of STREAMINFO alone, and a coded-frames packet
  of no bytes at the end of a stream (not carried).
- **`wai.live.injection`** ([cue-injection](extensions/cue-injection.md)): the gateway is an
  SCTE 104 injector. It answers the automation system's API connection with SCTE 104's
  responses and result codes, translates splice, time-signal and splice-null requests and
  their avail, DTMF, segmentation, time, tier and private descriptor requests into SCTE 35
  sections (ANSI/SCTE 35-1 2023r2) on the room's 90 kHz clock, and derives each request's
  cues: an out and an in from a splice insert, the in an auto-return implies, and the outs,
  ins and chapters of a time signal's break, placement-opportunity and chapter descriptors.
  It signs each cue when its splice instant comes, holding its own chain to live-ads §4.3's
  break rules, and before each cue its chain carries the cue's injection record `WIJ1`: the
  message verbatim, its arrival and the parameters it was translated with, from which a
  verifier recomputes the cue (§8). The request whose fields are SCTE 35-1 §14.1's sample
  builds that sample's section byte for byte. SCTE 104 in a video signal's ancillary data
  (SMPTE ST 2010) is a mapping note (§10).
- **Corpora and second implementations**: `live-conformance/ertmp/` (RTMP message sequences
  of one publish, with their arrivals, and every object each room track carries) and
  `live-conformance/injection/` (translations, refusals with their result codes, scenarios on
  a clock with the chain and the breaks they make, and chains a verifier refuses), each
  generated through `joule-moq-ingest` and regenerating byte for byte;
  `ertmp_verify.py` and `injection_verify.py`, written from the texts and sharing no code
  with the reference, agree with it on every vector.
- **Tests**: `joule-moq-ingest`'s `tests/ertmp.rs` (a publisher of its own over RTMP and
  RTMPS: every payload framing, multitrack layers, the refusals of a stream key, the reconnect
  request), `tests/scte104_injection.rs` (an automation system of its own over TCP, the chain
  read at a relay), `tests/conformance_corpus.rs`, and `tests/ertmp_ffmpeg.rs`, which runs a
  local encoder as the test client where one is present (AVC with B-frames, HEVC and AVC on
  the platform's media engine, HEVC in software, AV1, VP9; AAC, Opus, FLAC) and decodes what
  the relay carries in a conformant decoder.

