### Media jobs in the receipt ledger, and the receipts of `wai.video.int_motion` written down

- **The receipt ledger prices media jobs** ([extensions/receipt-ledger.md](extensions/receipt-ledger.md) §4.5): a
  tariff and its invoices of **version 2** (`WLT1`, `WLI1` with version byte 2) carry job prices, each a capability, a
  unit (`jobs`, or `subpixels`: the `work_pixel_ops` of the job's output receipt), a divisor and a price, and bill a
  **job source**: a route record's verification document (`wai.route.record`) with its hops' OER/2 receipts and
  WAI's decode receipt of its output with its codestream. A job is billed at its serving capability's prices from its
  billed hop alone, so a failed hop, a hop past the declared deadline and a job no hop served bill nothing; its energy
  is the serving hop's figure in the new scope `jobs`, by class, the unmetered marker counted apart. New record kinds
  (14 an OER/2 receipt, 15 an `int_motion` decode receipt, 16 a route record), a scope kind for a router's key, a
  line source kind 5, and two reasons, `output_invalid` and `job_figure_invalid`; one hop and one output belong to one
  job (`record_duplicate`), and two records of one router for one job are `record_overlap`. A tariff and an invoice
  of version 1 are read, verified and billed exactly as before, and every existing vector keeps its outcome but one:
  the control that refused an invoice of version 2 as `unknown_version` now gives version 3.
- **One registry of record kinds** (receipt-ledger §5.2): the table now holds every kind a WAI text names a record
  by, revenue-share §7.4's run (10) and invoice (11) and opportunity-report §7.3's cue event (12) and room policy (13)
  among them, each pointing to the text that defines it, unchanged; those texts say their kinds are registered there.
  Kinds **128 to 255 are reserved for private and provisional use**, so an implementation's own records never collide
  with a kind WAI assigns later: a WAI record never states one, and an invoice that lists one is refused
  `private_kind` (in either version; such an invoice was refused `invoice_invalid` before). An invoice of version 2
  lists kinds 1 to 9 and 14 to 16, never another text's.
- **The `int_motion` receipts** ([extensions/integer-payloads.md](extensions/integer-payloads.md) §15): the decode
  receipt and its JSON form, which only the code defined, are written down unchanged, and an **encode receipt**
  (`wai.video.int_motion/encode-receipt`) is added: the source frames' hashes, the encoder's parameters, the SSE the
  payload decodes with, the work and the encode's energy and class; `VideoEncodeReceipt` seals it over the reference
  encoder's payload and re-derives it from the payload and the source. `live-conformance/_int_motion_receipt.py`
  reads and checks a decode receipt from the text, for the ledger's second implementation.
- **`oer::micro_joules`**: an OER/2 figure as whole microjoules, exactly, a half to the even one.
- **The route corpus** binds each hop's receipt to its job and gives the jobs the ledger bills distinct ids; two
  accepted vectors are added (a hop that served unmetered, and one whose figure states no class).
- **Breaking:** `api:rust:wai::receipt_ledger::Tariff::version`: a tariff states its version. A struct literal adds
  `version: receipt_ledger::VERSION` and `job: vec![]`, and reads and writes as before.
- **Breaking:** `api:rust:wai::receipt_ledger::Tariff::job`: the job prices of a tariff of version 2; empty in version 1.
- **Breaking:** `api:rust:wai::receipt_ledger::Invoice::version`: an invoice states its version, its tariff's.
- **Breaking:** `api:rust:wai::receipt_ledger::Invoice::unmetered`: five counts, scope 5 (`jobs`) last; a version-1
  invoice writes and reads the first four, its fifth 0.
- **Breaking:** `api:rust:wai::receipt_ledger::Computed::unmetered`: the same five.
- **Breaking:** `api:rust:wai::receipt_ledger::Facts::Job`: the facts of a job source; a match over the sources'
  facts adds the variant.
- **Breaking:** `api:rust:wai::receipt_ledger::Reason::OutputInvalid`: a job's output receipt that does not read or
  does not re-derive from its codestream (§5.1); a match over the reasons adds it.
- **Breaking:** `api:rust:wai::receipt_ledger::Reason::JobFigureInvalid`: a job's serving hop whose figure no row can
  state (§5.1); a match over the reasons adds it.
- **Breaking:** `api:rust:wai::receipt_ledger::Reason::PrivateKind`: an invoice listing a record of a kind reserved
  for private use (§5.2); a match over the reasons adds it.
- **Breaking:** `api:rust:wai::receipt_ledger::Reason::ALL`: the codes of §10, the three above among them.
- **Breaking:** `record:corpus:wai/live-conformance/ledger/vectors.json`: the control `invoice_version` gives an
  invoice of version 3, since version 2 is now defined, and is refused `unknown_version` as before; every other
  vector keeps its outcome, and the version-2 vectors are added.

