### `wai.media.synthesis`: what any piece of media is, in two marking layers, with reviews and labels

- **The extension** ([synthesis](extensions/synthesis.md)) registers the record
  `wai.media.synthesis`. An **origin claim** (`wai-origin`) says of one object, group or track
  that it is captured, reconstructed (a codec, neural or not, rebuilding what was captured),
  assistive (an edit that does not substantially alter its input) or synthesized (generated).
  It names its step (`capture`, `convert`, `assist`, `generate`), the models the step ran, the
  oversight of a generation, and each input by its content hash and the link hash of its own
  claim. Its class is the greatest of its step's and its inputs', so it rises along a chain of
  derivations and never falls; a transcode of a generated video is synthesized. A codec is a
  conversion: it names no model and keeps its input's class and source, as energy-binding §6.1
  has a decode.
- **IPTC and C2PA as functions of the claim.** The digital source type (`digitalCapture`,
  `algorithmicallyEnhanced`, `trainedAlgorithmicMedia`, `compositeWithTrainedAlgorithmicMedia`,
  `compositeSynthetic` and the rest) follows from the step, the inputs, the models and the
  oversight; the C2PA statement is the actions (`c2pa.created` with the source, or
  `c2pa.opened` then `c2pa.converted` or `c2pa.edited`) and one `c2pa.ai-disclosure` per trained
  model, written in JCS. The mapping keeps timed-text's for captions.
- **Assistive claims checked, not trusted.** Two integer derivations are pinned: a 2× upscale
  with `wai.video.int_motion`'s half-sample rounding, and a 3 × 3 binomial denoise. Evidence
  names the input's and the output's sample digests; a verifier holding the input's decoded
  samples recomputes the output and refuses a mismatch. A float or unpinned step states
  `attest` and is reported as asserted; a policy can require proof.
- **Two marking layers.** The signed claim is the first; the second is a watermark whose 8-byte
  payload is the claim's class and the head of its link hash. A marking record names the scheme
  and the payload embedded, a detection record what a detector read, and a verifier refuses a
  detection that disagrees with the claim or finds no mark in a marked object, and, under a
  policy that asks for both layers, a synthesized object with no marking. No watermark scheme is
  registered: the scheme is a slot a later revision fills.
- **AI participants in rooms.** live-rooms §4.4's grant attribute `ai` names the model that acts
  for a participant; its chat, reactions and captions state origin 2 or 3 with that model, and
  the room verifier refuses one that does not (`ai_unmarked`, live-rooms §9.2 step 6). Chat and
  reaction events of live-events gain an optional `origin` and `model` after their last field.
  Every track an AI participant publishes needs a synthesized track claim naming its model.
- **Certified synthesis.** A review (`wai-review`) is a signed verdict over one exact
  reconstruction at `decode-equivalence` or `generation-equivalence`. A player presents it only
  where its latest presentation of the object holds that tier on its decode path and output the
  reconstruction reviewed, so one review holds for every viewer of exact output.
- **Labels.** A label policy (`wai-label-policy`) says which classes are labelled, with which
  visual and audible assets, at what interval and grace; a player's signed log (`wai-player`) of
  presentations, labels shown, resumptions after a break and reviews presented is held to it:
  a label at first exposure, after each interruption and within the interval. The EU icons the
  Code of Practice's Annex 1 publishes are pinned by SHA-256; no audible EU label is published.
- **Reference and corpus.** `wai-rs` feature `synthesis` (`src/synthesis.rs`).
  `live-conformance/synthesis/`, written from fixed seeds by `wai_synthesis_vectors`: a
  capture's chain through a neural codec and both pinned derivations, a float super-resolution
  asserted, generated media in both layers, a room with an AI host, a certified and labelled
  session, and one refused case per reason. Checked by `tests/synthesis.rs` and by
  `live-conformance/synthesis_verify.py`, a second implementation that shares no code with
  `wai-rs`, verifies each room with `live_rooms_verify.py`, runs the derivations and writes each
  statement itself, and requires every mutated copy of the corpus to fail. The registry lists
  the record and its document kinds.

