open-standards/wai/live-conformance/synthesis/README.md
Transaction Science df1004f187 Merge origin/main into wai/exact-upscale (wai-mark:tent64, contribution, settlement, access, ad presentation, exploration, shared lists)
Resolved by meaning: synthesis::Case holds both the priors (exact-upscale) and the unmarked
frames (§7.6); synthesis §11.1 lists both inputs and the three policy members; the
synthesis-mark corpus's cases hold no prior; exact-upscale passes synthesis's second_layer
policy through; the live-conformance table gains the upscale row in its generator column; both
CI steps and both CHANGELOG entries are kept. Generated files are main's here and are
regenerated in the next commit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 03:02:57 -04:00

41 lines
2.7 KiB
Markdown

# live-conformance/synthesis — synthesis provenance
The corpus of [`extensions/synthesis.md`](../../extensions/synthesis.md) §13, in one file,
`vectors.json`: the EU icons §10.2 pins (`eu_icons`, each its `file` and `sha256`), and the
**vectors**, each a case of §11.1 and what a verifier gives it.
A case holds its `policy` (`dual_layer`, `assistive`, `second_layer`); its records as JSON texts, list by list:
`claims` (origin claims), `markings`, `detections`, `reviews`, `label_policy` (a text or
`null`) and `player` (the log's entries); the `objects` it holds, each a `WAI1` envelope in
hexadecimal; the `decoded` samples it holds, each the content hash of the `object` decoded and
its canonical `samples` in hexadecimal; the `priors` it holds, each the bytes of a `WSR1` prior
(exact-upscale §3.1) in hexadecimal; the `unmarked` frames it holds (§7.6), each the content hash
of the marked `object` and its `samples` in hexadecimal; and a `room` or `null`: its `descriptor`, `grants`,
`key_log` and `chains` as live-rooms' corpus gives them.
**Synthesis equivalence.** For each vector, a conforming verifier reaches the outcome it states:
- `refuse`: the `reason` and where, `at`: `["claim", i]`, `["marking", i]`, `["detection", i]`,
`["review", i]`, `["label_policy"]`, `["player", i]`, or `["room", …]` with the room verifier's
own place (`["room", "record", c, i]` for record `i` of chain `c`);
- `accept`: the `statements` of §11.3: `claims`, each its `link`, `class`, `source`, `c2pa` (the
statement of §6, exactly as written) and `assistive` (`proved`, `not-recomputed`, `asserted`, or
`null` for a claim that is not an assist); `detections`, each its `subject` and `result`;
`ai_tracks`, each its `track` and `claim`; `reviews_presented`, each its log `entry` and
`review`; `labels`, each its log `entry`, `trigger` and the `shown` entry that met it;
`visual_icon`, the file of §10.2 the label policy's visual is, or `null`; and `room`, the room's
own outcome or `null`.
A verifier that reaches another outcome, reason, place or statement does not conform.
**Provenance.** `wai_synthesis_vectors gen` writes `vectors.json` from records authored in code:
every key is SHA-256 of the corpus's label and an index, every sample buffer and envelope payload
is SHA-256 output of a label, the one prior is drawn from SHA-256 of a label
(`int_sr::seeded_prior`) and trained on nothing, every time is a constant, and Ed25519 signing is deterministic, so
the file is the same bytes on every machine. The watermark scheme the markings and detections
name, `wai-mark:conformance`, names no algorithm (§7.4): the corpus exercises the records and the
agreement of the two layers, not a watermark.
```
python3 -I ../synthesis_verify.py .
```