Skip to content

Architecture Decision Records

Each major design decision in the Agent Manifest Specification is recorded here with its rationale, alternatives considered, and consequences. ADRs are immutable once accepted - superseded decisions get a new ADR that references the old one.

ADR Title Status
0001 RFC 8785 (JCS) for canonical serialization Accepted
0002 Ed25519 as the standard cryptographic profile Accepted
0003 RFC 9162 Merkle tree with domain separation Accepted
0004 Pydantic v2 for schema modeling in the Python SDK Accepted
0005 ML-DSA-65 and hybrid Ed25519+ML-DSA-65 signature support Accepted
0006 Human-in-the-Loop (HITL) embedded approval record design Accepted
0007 JSON-Lines append-only CRL as the SDK revocation format Accepted
0008 Four conformance levels (0–3) rather than binary conformant/non-conformant Accepted
0009 SPIFFE URIs as the canonical identity format for agent_id and issuer Accepted
0010 Runtime attestation freshness proofs via caller-controlled REPORT_DATA Accepted
0011 The manifest is a signed document, not a JWT/JOSE profile; envelope moves to COSE_Sign1 Accepted
0012 @context URI moves to a domain we control; v0.1 URL withdrawn, consumers cut over Accepted

To propose a new ADR, open a GitHub issue using the spec change template and follow the ADR template.


For practical implementation guidance that corresponds to these decisions, see the tutorials: HITL approval workflows (ADR-0006), revocation and key rotation (ADR-0007), hardware attestation (ADR-0008), and server-side verification.