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

2.7 KiB

live-conformance/synthesis — synthesis provenance

The corpus of 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 .