ACDP Rule Anchors

Stable names for the behaviors implementations most often need to cite, so that a downstream project can say "conforms to acdp.rule.content-hash" instead of pointing at an SDK source line or a section number that later edits may move. Each anchor names one rule, the normative text that defines it, and the known-answer fixtures that pin it.

Rules for this registry.

  • An anchor's meaning never changes. When the behavior it names changes, the change mints a new anchor (<name>.v2) and the old one becomes Deprecated. It stays listed, still pointing at the text and fixtures that defined it.
  • Editorial moves of the defining text update the Defined by column only.
  • Stable anchors point at Final text. Provisional anchors point at Draft text (the (0.5.0) line) and can still change before their RFC is Final.
  • A Pinned by fixture is an executed known-answer fixture: scripts/conformance-runner.py recomputes it, so an implementation that reproduces it reproduces the rule.
AnchorStatusRuleDefined byPinned by
acdp.rule.jcsStableCanonical JSON is RFC 8785 JCS, including its number serializationRFC-ACDP-0001 §5.2can-001, can-002, can-011, can-012
acdp.rule.content-hashStableThe content_hash preimage: the body minus the §5.7 exclusion set, stripped by field name, unknown producer fields kept, JCS, SHA-256, sha256: + lowercase hexRFC-ACDP-0001 §5.7can-003..can-005, can-007..can-010
acdp.rule.timestampStableTimestamps are UTC RFC 3339 with exactly three fractional digits and ZRFC-ACDP-0001 §5.3can-006, can-013
acdp.rule.lineage-idStablelineage_id = lin:sha256: + hex(SHA-256(UTF-8 of the first version's ctx_id))RFC-ACDP-0001 §5.6lin-001
acdp.rule.producer-signatureStableThe producer signature over the content hash, per algorithmRFC-ACDP-0001 §5.8sig-001..sig-004
acdp.rule.key-fingerprintStableKey fingerprint encodingRFC-ACDP-0010 §6fp-001
acdp.rule.receipt-verificationStableRegistry receipt construction and the verification procedureRFC-ACDP-0010 §5, §8rcpt-001
acdp.rule.revocation-classificationProvisionalA context signed by a revoked key: pre-compromise only with a verified current-key receipt dated strictly before T; revoked at or after T; unplaceable without a usable receiptRFC-ACDP-0014 §7 steps 1–4rev-007
acdp.rule.revocation-foldStableT is the earliest compromised_since across the revocation lineage; retracted members count; non-revocation successors never disarm; the interim type countsRFC-ACDP-0014 §4, §7, §10rev-007 (vectors 09–13)
acdp.rule.revocation-scopeProvisionalA revocation applies only within producer scope (signer, or registry-attested controller)RFC-ACDP-0014 §7 "Producer scope"rev-007 (vectors 14–17)
acdp.rule.revocation-precedenceProvisionalCombining lookups: refusal > unknown > pre-compromise > not-revokedRFC-ACDP-0014 §7 "Precedence across lookups"rev-007 (vectors 02, 18–20)
acdp.rule.revocation-signalStableThe revocation context's shape and signatureRFC-ACDP-0014 §4, §5rev-001
acdp.rule.chain-verdictStableverify_chain verdicts and their evidence_digest, as_of_digest and verdict_digestRFC-ACDP-0017 §6–§9chain-001, chain-002, chain-003, chain-010, chain-011
acdp.rule.sealed-as-ofStableThe as-of projection and as_of_digest, stable when post-T evidence changesRFC-ACDP-0017 §9.2chain-010
acdp.rule.change-hint-hmacProvisionalThe ACDP-Signature HMAC over a change hintRFC-ACDP-0018 §8rec-007