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]>
44 lines
3.1 KiB
Markdown
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.
|