# signer-conformance Conformance for [key discovery, signing authority and module authorisation](../extensions/jwp-receipts.md) (§7): the forms of a `signer_id`, an origin's key log, anchoring, the confirmation a verifier reports beside a receipt's or claim's verdict, and the checks a sink runs before it runs a decoder or reconstruct module. **Provenance.** Generated here by `wai_signer_vectors`, from published one-byte seeds (below). No media. Each vector declares **one verdict**, set from the text in the generator and never copied from a verifier. A verifier that reaches another verdict — another level, step, reason, head or anchor path — does not conform. ## Files | file | what it is | |---|---| | `vectors.json` | The corpus. Regenerate with `wai_signer_vectors gen .`; `wai_signer_vectors verify .` checks the canonical fixture, a byte-identical regeneration and every verdict. | | `signer_verify.py` | A second verifier, written from §7, that shares no code with `wai-rs`. It takes from `../claim-conformance/claim_verify.py` only what §7 reuses of §3.1: the JSON reading, JCS, BLAKE3, the strict Ed25519 rule, the RFC 3339 syntax and claim verification. | ## Procedures **`confirm`** (§7.4) runs on an item and reports `confirmed` with the origin, key-id, head `revision_hash` and anchor path — and, where they apply, `moved_to`, `retired_until`, `untimed=true`, `expected=` and `also_delivers=` — or `unconfirmed` or `refused` at a §7.4 step (`1`–`7`, or `6a`) with a reason of §7.7. For a `reconstruct-session` claim whose `energy` is not `null`, the verdict goes on with `; figure ` and the confirmation of its energy figure, an item of its own (§7.5) that needs `reconstruct-session` and the energy authority of its class. The item is either `receipt`, a claim's wire form, which is first verified under §3.1 (a claim that fails is `reject step= reason=