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]>
47 lines
3.3 KiB
Markdown
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 .
|
|
```
|