- Treat verifier success as a cryptographic result, not an authorization decision.
- Supply only already-trusted public keys selected outside this library.
- Derive method, URI, operation, and cast arguments on the server; never trust caller-selected expected context.
- Enforce live revocation, replay reservation, execution claims, host policy, and effect authorization in a stateful authority runtime.
- Use the published bounds and reject unknown versions or extensions.
- Never pass private keys, secrets, raw user values, or production credentials into fixtures, logs, errors, or telemetry.
- Pin released major versions and run the conformance vectors before accepting a new release.
- Treat
untrusted_key_locator/2output only as a case-sensitive lookup hint withtrust: :not_evaluated; it does not parse claims, verify bytes, select trust, or authorize. - Pass only raw compact credentials to verification boundaries. Decoded values and verified facts are evidence outputs, never reusable credentials.
- Supply chain/archive verification with the intended predecessor/head, both expected anchors, the complete ordered historical-key path, raw archive digest, and exact object-store version. Do not infer those expectations from the archive being verified.
- Treat chain consistency as consistency only. It cannot by itself prove that a validly shortened or relinked history omitted nothing.
- Keep commitment preimages private. The public row carries only a fixed-width commitment.
- Consume the published Hex release (
{:bounded_authority_protocol, "~> 0.1.0"}). The v1 verification surface is implemented and the published archive is the exact reviewed candidate. - Run the verifier CLI with an explicit
--corpus DIRpointing at the packaged corpus (deps/bounded_authority_protocol/priv/conformance/v1/corpusfrom a consumer). Never rely on a default corpus path. Treat exit 0 as conformance evidence only — it does not authorize.