open-standards/wai/live-conformance/contribution/README.md
Transaction Science 7c5c4351f5 wai.media.contribution: registry, SPEC §5, CHANGELOG, CI step, corpus README
Registers the record and its five document kinds (registry export regenerated), adds
the SPEC §5 paragraph and the CHANGELOG entry, the CI step beside synthesis's, the
corpus README with its provenance line, and the live-conformance exclusion reason for
the generated pictures. The tree test now states the duplicated last leaf's second
position, which the record's count refuses (§5.1).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 12:58:55 -04:00

40 lines
2.5 KiB
Markdown

# live-conformance/contribution — contribution records
The corpus of [`extensions/contribution.md`](../../extensions/contribution.md) §12, in one
file, `vectors.json`: the model files its sessions generate with (`models`, each its `sha256`
and its `file` as text), and the **vectors**, each a case of §10.1 and what a verifier gives it.
A case holds its `policy` (`tier`); the `session` record and its `memberships`, the
contribution `record`, the disclosed `steps` (each its `step` text and its inclusion `proof`, a
list of siblings in hexadecimal), the authorship `map`, the prompt `openings`, each as a JSON
text; the `states` it holds, each an `RGB8` buffer in hexadecimal, named by its SHA-256; the
`models` it holds, each by the SHA-256 of a file in `models`; and the `origins` it holds, each
an origin claim of [synthesis](../../extensions/synthesis.md) §3.1 as a JSON text.
**Contribution equivalence.** For each vector, a conforming verifier reaches the outcome it
states:
- `refuse`: the `reason` and where, `at`: `["session"]`, `["session", "party", i]`,
`["membership", i]`, `["record"]`, `["step", i]`, `["map"]`, `["map", x, y]`,
`["opening", i]`, `["origin", i]` or `["policy"]`;
- `accept`: the `statements` of §10.4: the `tier`; the link hashes of the `session` and the
`record`; each disclosed step's `seq`, `act`, `party`, `check` and `status`; the number of
steps `committed` and not disclosed; the shares of the `computed` and the `stated` map, each
its `samples`, its `made_by` and `directed_by` counts per party, and the counts of `unknown`
and `undisclosed` samples of each set; the record's `estimates` as stated; the `origin`
agreement (`agree`, `not-checked` or `null`); and the C2PA statement of §9.2 as its JCS text
(`c2pa`), or `null` where a step is not disclosed.
A verifier that reaches another outcome, reason, place or statement does not conform.
**Provenance.** `wai_contribution_vectors gen` writes `vectors.json` from records authored in
code: every key is SHA-256 of the corpus's label and an index, every drawn picture and brush
stroke is SHA-256 output of a label, every generated picture is made by `wai.generate.spectral`
with the model file of its conformance vector (`wai-rs/tests/vectors/generate/
generate_spectral_model.json`, held here byte for byte in `models`), every time is a constant,
and Ed25519 signing is deterministic, so the file is the same bytes on every machine. Every
state is named by the SHA-256 of its `RGB8` samples.
```
python3 -I ../contribution_verify.py .
```