open-standards/wai/live-conformance/usage/README.md
Transaction Science d1a1fdb6b1 wai.ai.usage: the class in jwp-receipts, the room and HTTP and MoQ bindings, registry, CI and the second implementation
jwp-receipts registers the consumption class (§2.4.13) with its step 4 and
step 6 reasons and its authority; live-rooms gains §3.8 and the ai_usage
grant attribute; http-delivery §5.6 maps the signed statement onto the
Content-Usage and TDMRep fields; moq-streaming-format §4 adds the
wai_ai_usage catalog field. The registry export lists wai.ai.usage, WAU1,
wai_ai_usage and the proposed WAI-Usage-Claim field. ai_usage_verify.py is
the corpus's second implementation, and claim_verify.py reads the class's
steps 1 to 4.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 05:23:29 -04:00

44 lines
3.1 KiB
Markdown

# live-conformance/usage — AI usage preferences and consumption claims
The corpus of [`extensions/ai-usage.md`](../../extensions/ai-usage.md) §10, in one file,
`vectors.json`. Its `keys` name every key by its role, as 64 lowercase hexadecimal digits; its
`revisions` are the vocabulary revisions §3 reads. Each section is a list of cases, each with
its `name`, a `description`, its inputs and its `outcome`:
- `statements` (§3): `json`, a statement's text. `accept`: the `digest` and the `preferences`
of every term it names, by vocabulary (`allow`, `disallow` or `unknown`); or `refuse` and the
`reason`.
- `publications`: each a group of objects under one key, its `group` receipt
([jwp-receipts](../../extensions/jwp-receipts.md) §2.4.1) and, for a room's media, its
`room`.
- `objects` (§4.1): `envelope` (hexadecimal) and its object `receipt`, under its publication's
group. `held`: the `content_hash`, the `statement`'s digest or `null`, and `t`, the manifest's
`live.t` or `null`; or `refuse` and the `reason`.
- `rooms` (§4.2, §4.3): `descriptor`, `grants` and usage `records`, each hexadecimal. The
outcome holds `grants` and `records`, each `accept` or the `index` and `reason` of the first
refused; `terms`, each grant the room accepts with its `principal` and its terms' digest,
`null` for none or `grant_usage_malformed`; and, where the records are accepted, `in_effect`:
the statements governing an object at each instant `t` (`null` for an object with no time).
- `responses` (§4.4): an object of a publication and its response `fields`, each a name and a
value. `accept` and the vocabularies the fields state `unsigned`, or `refuse` and the
`reason`.
- `catalogs` (§4.5): a catalog track `entry` and the `objects` of its track.
- `claims` (§6): the claim's `wire` text and its `context`: the `publications` whose held
objects the verifier holds, the `room`, and the claim before it of its signer, `previous`, by
name, or `null` when the verifier is given none. `accept` and each object's `outcome`
(`allowed`, `unknown` or `outside`), in the order of the claim's `objects`; or `refuse`, the
jwp-receipts §3.1 `step` and the `reason`.
- `gates` (§7): the `policy`, the `agent` by its key's name, the groups `served`, the `claims`
given, by name, each verified with its own context, and the group requested. `serve`, or
`refuse` and the `reason`.
A verifier that reaches another outcome, reason, step, digest, preference, terms or object
outcome does not conform. Payloads are opaque test bytes that no case decodes.
**Provenance.** Generated here: `wai_ai_usage_vectors gen` writes the file from statements,
envelopes, rooms and claims authored in code, from fixed seeds. Each key is SHA-256 of a fixed
label and an index; every time is a constant (the room's `t0` is 2026-10-21T00:00:00Z); every
origin and URL is an `.example` name (RFC 2606); and Ed25519 signing is deterministic (RFC
8032), so the file is the same bytes on every machine. The generator asserts that each case
reaches the outcome it was written to have and that the corpus gives every reason of §9.
`ai_usage_verify.py`, beside this directory, is the second implementation.