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]>
3.1 KiB
live-conformance/usage — AI usage preferences and consumption claims
The corpus of 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: thedigestand thepreferencesof every term it names, by vocabulary (allow,disalloworunknown); orrefuseand thereason.publications: each a group of objects under one key, itsgroupreceipt (jwp-receipts §2.4.1) and, for a room's media, itsroom.objects(§4.1):envelope(hexadecimal) and its objectreceipt, under its publication's group.held: thecontent_hash, thestatement's digest ornull, andt, the manifest'slive.tornull; orrefuseand thereason.rooms(§4.2, §4.3):descriptor,grantsand usagerecords, each hexadecimal. The outcome holdsgrantsandrecords, eachacceptor theindexandreasonof the first refused;terms, each grant the room accepts with itsprincipaland its terms' digest,nullfor none orgrant_usage_malformed; and, where the records are accepted,in_effect: the statements governing an object at each instantt(nullfor an object with no time).responses(§4.4): an object of a publication and its responsefields, each a name and a value.acceptand the vocabularies the fields stateunsigned, orrefuseand thereason.catalogs(§4.5): a catalog trackentryand theobjectsof its track.claims(§6): the claim'swiretext and itscontext: thepublicationswhose held objects the verifier holds, theroom, and the claim before it of its signer,previous, by name, ornullwhen the verifier is given none.acceptand each object'soutcome(allowed,unknownoroutside), in the order of the claim'sobjects; orrefuse, the jwp-receipts §3.1stepand thereason.gates(§7): thepolicy, theagentby its key's name, the groupsserved, theclaimsgiven, by name, each verified with its own context, and the group requested.serve, orrefuseand thereason.
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.