### Channel lineup and guide: a linear channel's feeds, signed, and its guide checkable

- **`wai.video.lineup`** (`extensions/channel-lineup.md`): a linear channel's signed lineup,
  `WLU1`, of one `wai.video.channel` schedule, bound to it by the schedule root: each programme
  asset's title, description, categories, rating, artwork by SHA-256, where it may be shown and its
  rights holder, and where each programme of the guide begins.
- **The import**: an XMLTV schedule, Media RSS catalogues (one owner's items alone play back to
  back from a start), or a JSON form of both, with the SCTE-35 date ranges of the channel's HLS
  Media Playlist as its breaks, into the schedule's receipt, the lineup and a live-events `cue`
  for each break (its `cue_id` a `splice_insert()`'s `splice_event_id`). Bounded reading, an XML
  subset with one document type declaration that defines nothing, and reasons for a gap, an
  overlap, a programme with no stop, a time zone named by letters, a break outside its programme,
  a window outside the schedule, an unknown asset and the rest of §10.
- **The guide**: an XMLTV document and a now/next document (RFC 8785), rendered from the receipt
  and the lineup and naming both; a verification recomputes it, refuses one that places a
  programme the schedule does not or states what the lineup does not, and says of each programme
  whether the receipt's program-as-run says it aired.
- **The receipt's JSON carriage** is revenue-share §4.1's, `ChannelReceipt::to_json` and
  `from_json`, the one JSON form of a channel receipt: the import writes it and a verification
  reads it; `wai.video.channel` receipts keep their signed bytes.
- **Operations** `channel.import`, `channel.guide` and `channel.verify` (`wai channel ...`), with
  the agent rules; `quickstart`, the shipped `wai`'s build, holds the feature `channel_lineup`.
- **Conformance**: `live-conformance/channels/`, a sample channel of three owners with a control
  of each reason, written from fixed seeds by `wai_channel_lineup_vectors`; its second
  implementation, `channel_lineup_verify.py`, from the text alone, agrees on every vector, and a
  CI step runs both.

