open-standards/wai/wai-rs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 28de796b42 wai: a key log's revocation refuses a set at every sink that holds one
SPEC §3.1's check 5 now has two parts. Revocation runs at every sink
that holds a key log, for every capability a pin applies to: a set whose
digest is in the revoked_modules of the head the sink reaches from any
anchor it holds is refused with prior_revoked. It needs no grant, status
or clock, so it no longer waits on the relying party holding the
capability to jwp-receipts §7.9, and it is reported as prior_revoked
whichever check of §7.9 a grant fails first, offline or with no grant
included. Authorisation is still the relying party's choice per
capability. SPEC §3.1 and §4, jwp-receipts §7.9 and the CHANGELOG say so.

An envelope that pins no set no longer escapes check 5. The neural
registry, given a key log, checks the set an unpinned decode reads under
each digest a pin over it could name (the file's SHA-256 for a one-file
set, and each listing beside it), and dispatch falls back when it is
refused. PinAuthority gains check_unpinned for this.

A family receipt now needs energy/<class> for each class its figures
carry, as Item::from_family already derived: the §7.5 row, the corpus
README, signer_verify.py and the corpus reader now agree. Item::for_group
and Item::for_family are crate-internal, the corpus's builders, and the
docs say that from_family takes signer_id and time from its caller.

signer-conformance gains vectors for a revoked set whose grant fails at
check 4, a revoked set with no grant, a set with no grant, and a family
receipt with two classes, regenerated by wai_signer_vectors gen; both
verifiers reproduce every verdict, and every earlier vector keeps its
declared outcome. The CI library tests cover the revocation part at a
sink that does not hold the capability to §7.9, and the neural key-log
gate covers the unpinned decode.

Docs say that a key log naming the subject's origin holds for one
envelope. ModelRegistry's key_log field is private, which the CHANGELOG
records. The pin corpus README says its cases model a sink with no key
log. The parameter-set entry's refusal list names check 5's two reasons,
and the did:web label test is described by the files it reads.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 09:36:49 -04:00
..
examples wai: the headline decode tests fail on a missing input, and CI supplies their inputs 2026-09-28 18:40:59 -04:00
include wai: candidate tests on the pin-aware selection API and the C ABI 2026-10-01 05:58:02 -04:00
src wai: a key log's revocation refuses a set at every sink that holds one 2026-10-01 09:36:49 -04:00
tests wai: a key log's revocation refuses a set at every sink that holds one 2026-10-01 09:36:49 -04:00
build.rs wai: energy reports, labelled JWP leaves and what signatures cover 2026-10-01 06:37:25 -04:00
Cargo.lock wai: typed receipt classes and the soft binding class, reading OER through the OER module 2026-09-30 01:42:45 -04:00
Cargo.toml wai: key discovery, signing authority and module revocation 2026-10-01 07:12:20 -04:00
cbindgen.toml wai: the parameter-set pin, component identity, pin-aware selection 2026-10-01 05:51:50 -04:00
clippy.toml wai-rs: the JPEG AI exact decoder calls no platform math library, and its output is pinned 2026-09-28 18:30:35 -04:00