Packages
Deterministic protocol verification for cryptographically bounded proof-of-possession authority.
Current section
Files
Jump to
Current section
Files
bounded_authority_protocol
usage-rules.md
usage-rules.md
# Usage rules
1. Treat verifier success as a cryptographic result, not an authorization decision.
2. Supply only already-trusted public keys selected outside this library.
3. Derive method, URI, operation, and cast arguments on the server; never trust caller-selected
expected context.
4. Enforce live revocation, replay reservation, execution claims, host policy, and effect
authorization in a stateful authority runtime.
5. Use the published bounds and reject unknown versions or extensions.
6. Never pass private keys, secrets, raw user values, or production credentials into fixtures,
logs, errors, or telemetry.
7. Pin released major versions and run the conformance vectors before accepting a new release.
8. Treat `untrusted_key_locator/2` output only as a case-sensitive lookup hint with
`trust: :not_evaluated`; it does not parse claims, verify bytes, select trust, or authorize.
9. Pass only raw compact credentials to verification boundaries. Decoded values and verified
facts are evidence outputs, never reusable credentials.
10. 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.
11. Treat chain consistency as consistency only. It cannot by itself prove that a validly
shortened or relinked history omitted nothing.
12. Keep commitment preimages private. The public row carries only a fixed-width commitment.
13. 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.
14. Run the verifier CLI with an explicit `--corpus DIR` pointing at the packaged corpus
(`deps/bounded_authority_protocol/priv/conformance/v1/corpus` from a consumer). Never rely on
a default corpus path. Treat exit 0 as conformance evidence only — it does not authorize.