### `wai.live.steering`: each client's pathway, chosen by the joules its hops signed

- **The extension** ([energy-steering](extensions/energy-steering.md)) registers the record
  `wai.live.steering`. The operator signs a **steering policy**, `WSP1`: the pathways (each a
  pathway ID of the content description or a clone of one, through another host), each
  pathway's hops (edge or interior, a hop in one pathway only), the quality floor, the latency
  ceiling, each pathway's capacity and minimum share, the hysteresis margin, the TTLs, and the
  period and window over which the hops' per-hop records (`WMH1`) are read. The new key-log
  authority `live/steer` lets an operator key sign policies and decisions.
- **The evidence.** A pathway's figure is its hops' joules over the window, per media byte its
  edge hops delivered or per microsecond of delivery at the floor tier or above, with the
  records' common acquisition class. The window ends on the last period past a lag, and every
  hop's records must tile it exactly, so every pathway is read over the same span and a
  record left out makes the pathway **stale**, never cheaper. A pathway with an unmetered hop,
  hops of two classes, stale records or no delivery has **no figure**: a decision that gives
  one a figure is refused `unmetered_as_zero` or `classes_summed`.
- **The rule.** Pathways are ordered by class (calibrated instrument, counter, model,
  estimate), within a class by figure, compared by exact products, and then by ID; a pathway
  with no figure comes after every pathway with one, so not measuring is never rewarded. A
  client with a short buffer or at its quality floor is held; a session's draw, fixed for the
  session, places it on a pathway by that pathway's minimum share whatever its evidence; a
  client moves off its pathway only for a figure lower by more than the margin. The output is
  the priority, the TTL and the reason the first pathway is first.
- **The steering decision**, `WSD1`, names the policy, the records by digest, the client's
  report (read from `_HLS_pathway` and `_HLS_throughput`, `_DASH_pathway` and
  `_DASH_throughput`, and CMCD's `bl` and `mtp` in the query or the `CMCD-Request` header), the
  server's session and loads, each pathway's evidence and limits, and the output; a verifier
  recomputes all of it; ten refusal reasons.
- **The mappings.** The steering manifest of `draft-pantos-content-steering-04`, which HLS
  (`draft-pantos-hls-rfc8216bis-22` §7) and DASH (ETSI TS 103 998 V1.1.1) read, written byte
  for byte with `PATHWAY-CLONES`, a `RELOAD-URI` carrying the session, and one member,
  `science.transaction.wai-decision`, naming the decision's URI, which players ignore; the
  `EXT-X-CONTENT-STEERING` tag and the DASH `ContentSteering` element.
- **Reference and corpus.** `wai-rs` feature `energy_steering` (`src/energy_steering.rs`, with
  an RFC 9651 parser of its own); `live-conformance/steering/`, written from fixed seeds by
  `wai_energy_steering_vectors`, its figures synthetic, and checked by
  `tests/energy_steering.rs` and by `live-conformance/energy_steering_verify.py`, a second
  implementation that shares no code with `wai-rs`, reads the room and the per-hop records
  with their corpora's second implementations, recomputes every report, figure, decision and
  manifest, and requires every mutated copy of the corpus to fail. The registry lists the
  record and the magics `WSP1` and `WSD1`; jwp-receipts §7.5 lists `live/steer`.

