### `wai-mark:tent64`: the second marking layer, a watermark recomputed from its payload and read with no key

- **The scheme** ([synthesis](extensions/synthesis.md) §7.4, §7.5) fills the scheme slot of §7.4: a
  mark in the luma of RGB8 pictures and video frames, registered by a term and the SHA-256 of its
  definition. Each frame is cut into a 64 × 64 grid that follows the picture through a rescale; a
  separable tent checkerboard in each cell is zero-mean, so brightness leaves a cell's statistic
  unchanged and contrast scales it. A public SHA-256 stream shuffles the cells, signs them and
  masks the code; the 8-byte payload is a BCH(255, 71) codeword shortened to 248 bits, each bit
  carried by 16 cells scattered over the frame. Each bit gets the least amplitude, up to 12 luma
  levels, that gives its statistic the sign the codeword asks with a margin of 3/2 of its weight
  mass, so a frame is changed only as far as the margin asks. A video carries the whole payload
  in every frame.
- **No other channel.** The embedding is a pinned integer derivation of the unmarked frames and
  the payload: a verifier holding the unmarked frames recomputes the marked ones
  (`mark_recompute_mismatch`), so the mark carries exactly its payload, a function of the claim,
  and no viewer or session identifier. A sink that generates content marks it as part of the
  reconstruction its tier holds (§7.8). The marking record gains `embedding` (the frames' size
  and the digests of the unmarked and the marked frames).
- **Key-free detection** in the 8 quarter turns and mirrors, decoding within 29 bits; a
  false-positive bound of 2^−61.39 derived from the code and checked against the words read from
  unmarked pictures, which match the uniform model. The detection record gains `read` (the
  frames it read), and a verifier that holds them runs the detector again
  (`detection_irreproducible`). A conversion that does not mark again carries its input's mark,
  and its detection agrees by inheritance (`agree-inherited`).
- **Robustness measured, not asserted.** An attack battery of integer attacks (re-encoding with
  the crate's own `wai.video.int_motion` encoder and a staged base, the pinned derivations of §4,
  area resampling, crops, quarter turns and mirrors, small rotations, noise from a fixed stream,
  brightness, contrast, a local blur; for clips, inter coding and dropped frames), over
  measurement sets the crate generates, gives the table of §7.5.8; the scheme claims to survive
  only what every set and a set of photographs survived. It claims no crop and no small rotation.
  PSNR and SSIM per picture, and a PSNR floor that depends on the frame's size alone.
- **Signpost and resolver** (§7.7): the marking's C2PA statement (`c2pa.watermarked.bound` and a
  `c2pa.soft-binding` assertion naming the scheme and its digest), the openly disclosed mark
  itself, and `/.well-known/wai-mark/<name>`, proposed, for the definition and for claims by
  payload.
- **New codes**: `scheme_mismatch`, `mark_evidence_invalid`, `mark_input_mismatch`,
  `mark_recompute_mismatch`, `detection_irreproducible`, `layer_not_proved`; the policy member
  `second_layer`. `wai-mark:conformance` stays, as the scheme with no algorithm.
- **Reference and corpus**: `synthesis::mark` (feature `synthesis`) and `synthesis_mark` (feature
  `synthesis_mark`), with `wai_synthesis_mark_vectors gen|verify|measure`;
  [`live-conformance/synthesis-mark/`](live-conformance/synthesis-mark/), and its second
  implementation `synthesis_mark_verify.py` with `_wai_mark.py`, which mutates the corpus and
  weakens its own verifier in turn. Audio is not reached in this revision.

