open-standards/wai/live-conformance/influence/README.md
Transaction Science 82fa790c77 wai: influence corpus README, independent Python verifier, and settlement_verify reads attribution lines
influence_verify.py is the second implementation of extensions/influence.md: it verifies each
session with contribution_verify.py, regenerates every conditioned step, reads usage statements
with ai_usage_verify.py and statements with settlement_verify.py (now amended for kind 2 lines
and their bases), and computes every share, line and report itself. Registers
wai.media.influence (registry, wire identifiers, SPEC §5, CHANGELOG, CI step, export); the
settlement corpus's reserved-line vector becomes a line whose basis is not given.

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

47 lines
3.3 KiB
Markdown

# live-conformance/influence — influence attribution
The corpus of [`extensions/influence.md`](../../extensions/influence.md) §10, in one file,
`vectors.json`: the model files its sessions generate with (`models`, each its `sha256` and its
`file` as text), and three kinds of vector, each with the outcome a verifier gives it.
- **cases** (§8.1): a `policy` (`tier`); a `contribution` case, as the
[contribution corpus](../contribution/README.md) writes one (its session, memberships, record,
disclosed steps with their proofs, map, openings, the `RGB8` states it holds in hexadecimal,
the model files it holds by SHA-256, and its origin claims), whose states also hold the
reference images and whose model files also hold the adapters; the `conditioning` records, the
`terms` and the `catalogues` it holds, each as a JSON text; and the `attribution`, a JSON text.
- **statements** (§6.2): a settlement statement (`WSS1`) in hexadecimal; the acknowledgements it
settles (`records`, each its `record` in hexadecimal and the item list of each of its entries);
and the names of the cases given beside it as its attributions (`given`).
- **reports** (§7.2): a report as a JSON text, the owner's `terms`, and the name of the statement
an auditor holds (`audit`), or `null` for a report verified by its owner alone.
**Influence equivalence.** For each vector, a conforming verifier reaches the outcome it states:
- `refuse`: the `reason` and where, `at`: a case's `["contribution", …]` (contribution's place),
`["terms", i]`, `["catalogue", i]`, `["conditioning", i]`, `["conditioning", i, "reference",
j]`, `["attribution"]`, `["attribution", "model", k]`, `["step", i]`, `["shares"]`, `["shares",
k]` or `["policy"]`; a statement's settlement places, `["basis", k, …]` or `["given", i, …]`;
a report's `["report"]`, `["report", "output", i]`, `["terms", i]` or `["statement", …]`;
- `accept`: for a case, the `statements` of §8.3 (the tier, the record and attribution link
hashes, each conditioning record's status, weights and references' preferences, the computed
and stated shares and whether they were compared, each owner bucket's tier, and the estimates as
stated); for a statement, settlement §8.3's figures with its attribution lines and its `bases`;
for a report, its owner, its amount and each output's basis and amount.
A verifier that reaches another outcome, reason, place or statement does not conform.
**Provenance.** `wai_influence_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, brush stroke and
reference image is SHA-256 output of a label, every generated picture is made by
`wai.generate.spectral`, alone or under `wai-influence:spectral-blend`, with the model file of its
conformance vector (`wai-rs/tests/vectors/generate/generate_spectral_model.json`, held here byte
for byte in `models`) or with a second model file written from it in code (other colour offsets
and a lower top frequency, also held 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, and every settled object by a content hash that is a label's
SHA-256: no object's bytes are in the corpus, and none is decoded.
```
python3 -I ../influence_verify.py .
```