open-standards/wai/pin-conformance/README.md
Transaction Science 3fac029a71 wai: every corpus states the provenance of its content
Each *-conformance/README.md now has a line that begins **Provenance.**:
the generator that writes the corpus and its input, and for an input not
generated here its source and licence. OER/2's corpus is settled and left
as it is. byte-exact-conformance and quantum-ops-conformance get a README.
wai-rs/tests/vectors/README.md gives a row per vector directory. Where the
staged-delivery, staged-measurement and telemetry READMEs called their
content "synthetic", that sentence is now their provenance line.

Two vectors are recorded as not generated, from the provenance audit:
int_video's video_real (a pan over a third-party picture) and
neural-conformance's photo (a third-party picture, with a decoder trained on
unrecorded images). Their lines say so and that they are to be replaced;
the photo bullet no longer names the picture's source product.

tests/corpus_provenance.rs requires the line in every corpus and a row for
every vector directory; CI runs it with the carriage tests. CONTRIBUTING
states the rule: corpus content is generated here, or recorded with a
licence that permits redistribution, and a word like "synthetic" is not a
provenance line.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 10:09:21 -04:00

48 lines
2.9 KiB
Markdown

# pin-conformance — the parameter-set pin
Vectors for the parameter-set pin (SPEC.md §3.1, §4, §7, §7.1).
**Provenance.** Generated here by `wai_pin_vectors`; the parameter-set files under `sets/` are stand-in bytes written for the corpus. No media.
**Reason-equivalence.** A conforming verifier reports exactly the declared outcome
for every case:
- `cases.json` — given a pin, a capability, the forms the sink reads (default
`wai.prior.set`) and the artifacts it holds, the outcome `ok` or the one reason
SPEC §3.1 names: `pin_malformed`, `form_not_registered`, `form_unreadable`,
`form_required`, `prior_not_held`, `digest_superseded`, `set_malformed`,
`part_mismatch`. A held artifact is a `file`, or a `listing` together with the
`root` its paths are read below. Paths are relative to this directory. The cases
model a sink that holds no key log, so check 5 (`prior_revoked`,
`prior_not_authorised`) does not run; it is covered by the parameter-set vectors of
[`../signer-conformance/`](../signer-conformance/) and the `key_log` library tests.
- `selection.json` — given a `WAI2` manifest, its payloads, the capabilities the
sink advertises and the one-file parameter sets it holds, the rendition SPEC §7.1
picks and the reason for each entry it skips (`not_selectable`,
`missing_capability`, `component_digest_mismatch`, or a pin reason); when nothing
is picked, the reason for every entry. Where stated, also the companions applied
with the pick, and the first component-role finding.
- `static.json` — the first finding a verifier makes about a manifest's pins
without holding a parameter set (`prior_not_applicable`, `pin_malformed`,
`tier_unregistered`, `supersedes_malformed`, `form_not_registered`,
`form_required`, `tier_exceeds_class`, a `replicate_*` reason), or `ok`. For a
`WAI2` manifest the finding is `[entry index, reason]`.
**Listings.** Every `listings/<name>.sha256` is, byte for byte, the listing of
`sets/<name>/`: regular files, names that begin with `.` left out, sorted by path as
bytes. A common checksum utility checks a set against its listing
(`cd sets/demo && sha256sum -c ../../listings/demo.sha256`). Every file under
`listings/bad/` breaks one listing rule and is `set_malformed`.
Files are compared as bytes; `.gitattributes` turns off line-ending conversion.
**Verifiers.**
- `wai_pin_vectors verify pin-conformance` (wai-rs) runs every file through the
reference implementation's in-memory pin core (`wai::pin::verify_bytes`), its
selection (`WaiMulti::pick`) and its static checks (`Wai::check_pin`,
`WaiMulti::check_pins`). It runs in both corpus loops of the conformance workflow.
`wai_pin_vectors generate pin-conformance` rewrites the listings from the sets.
- `pin_verify.py` checks `cases.json` and `listings/` with the Python standard
library alone, re-implementing the listing rules and the ordered checks from the
SPEC text. It shares no code with wai-rs.