### `wai.delivery.audit`: an audit kit for streams another service delivers

- **The extension** ([stream-audit](extensions/stream-audit.md)): what a content owner gathers
  from the players of a stream another service packages and delivers over HTTP, asking nothing of
  that service. A player makes a fresh key per session and signs settlement acknowledgements of
  every object it fetched, one chain per origin and window, a repeat in a window counted and not
  listed (§4); a presentation claim (`WPC1`) for each ad an `EXT-X-DATERANGE` marks, its `cue` the
  marker's digest and its creative the acknowledged segments the ad covers (§6); and the session
  record `WAS1` (§5): the channel, the owner's collector, the spans presented with their least
  visible fraction and audibility, the start time and stalls its delivery-telemetry log recomputes
  (§7), the energy per role (origin, delivery, sink decode, display) with each figure's class or
  the unmetered marker (§8), how the session ended, and the digests of everything it names. The
  bundle (§9), its verification, with reasons of its own beside the codes it borrows (§10,
  §14), the channel report the collector signs and anyone holding the bundles recomputes byte for
  byte, its rebuffering suppressed below 50 sessions (§11), and the collector (§12). No price,
  tariff or amount.
- **Settlement** ([settlement](extensions/settlement.md) §14): acknowledging the objects of an
  HTTP service that delivers no WAI envelopes. Such an object is a response's content with its
  content codings removed, a range response's range an object of its own, named by plain SHA-256;
  its upstream is named by the digest of its origin, signs nothing and appears in acknowledgements
  alone; no receipt is checked, no range proof applies and no statement is signed. The rest of §3
  is unchanged.
- **Reference**: `wai-rs` module `stream_audit` (feature `stream_audit`), the generator
  `wai_stream_audit_vectors`, `tests/stream_audit.rs`; registered `wai.delivery.audit` (record) and
  the magic `WAS1`. `live_metering` gains a crate-visible reader of a figure and its class, so the
  record's energy entries are read by the per-hop record's own rules.
- **Corpus** [`live-conformance/audit/`](live-conformance/audit/): sessions (accepted: two origins
  with two marked ads, an on-demand session ended `hidden` with an `OnChipCounter` figure and an
  attachment, one that presented nothing, one with a claim of every verdict, and a channel of more
  than 50 sessions; refused: one control per defect) and reports (rebuffering suppressed and stated, and four
  refused). Its second implementation, `stream_audit_verify.py`, reads acknowledgements, claims and
  logs with the settlement, ad-presentation and live-metering verifiers, and catches every mutation
  of the corpus and every one of its checks dropped.
- **The kit** (`wai/wai-audit`): the collector (`wai-audit serve`: verify, store once per session,
  CMCD intake, signed reports; per-client and body limits; CORS for the configured page origins) and
  its command line (`verify`, `report`, `check`); the player integration `web/audit.js` with a
  network tap for any web player and a loader adapter, whose tests rebuild the corpus's records
  byte for byte; and a browser end to end (`e2e/run.sh`) through an open-source web player, in the
  workflow `wai-audit.yml`.

