Tracks the gate for dropping the a1 qualifier and legitimately describing cA2A as confidential/attested across trust domains. State as of 2026-08-23: the live transport is done and one hardware run remains on the critical path. Section 1 is complete, and section 2 has real SEV-SNP report and VCEK verification against a confidential VM. What is left is generating an SNP report on a non-paravisor guest, plus a conformance run on CC hardware. Both need hardware access rather than more code. Mapping contributed by @Susanpdl. Per the discipline in LIMITATIONS.md (proof, not promises), the claim flips only when the items below land. See ROADMAP.md (Tier 2 / Tier 3).
Definition of done
cA2A can honestly claim "attested across trust domains," and we cut 0.1.0 (no alpha qualifier).
1. Live A2A transport (Tier 2)
2. Hardware-backed attestation, at least one backend (Tier 3, critical path)
3. Conformance on hardware
4. Flip the claims and release
Out of scope (deferred to v1.0, not required to drop alpha)
Tracks the gate for dropping the
a1qualifier and legitimately describing cA2A as confidential/attested across trust domains. State as of 2026-08-23: the live transport is done and one hardware run remains on the critical path. Section 1 is complete, and section 2 has real SEV-SNP report and VCEK verification against a confidential VM. What is left is generating an SNP report on a non-paravisor guest, plus a conformance run on CC hardware. Both need hardware access rather than more code. Mapping contributed by @Susanpdl. Per the discipline in LIMITATIONS.md (proof, not promises), the claim flips only when the items below land. See ROADMAP.md (Tier 2 / Tier 3).Definition of done
cA2A can honestly claim "attested across trust domains," and we cut
0.1.0(no alpha qualifier).1. Live A2A transport (Tier 2)
PeerRequest(profile stays transport-agnostic; the adapter lives outside the profile). Done: feat(transport): A2A extension adapter for PeerRequest #48 landedca2a_runtime.transport.a2a_adapter, feat(transport): bridge to the official a2a-sdk (#91) #95 replaced the hand-rolled path with a bridge to the official a2a-sdk.ca2a_runtime.peer.handle_peer_requestwired end to end on a live inbound call: verify chain → intersect delegated scope with local policy → open the sealed payload with the enclave key → emit a linked provenance record, fail-closed. Done: feat(cli): ca2a start, run the reference transport from a config file #52 landedca2a startdrivingca2a_runtime.transport.server; fix: bound reference HTTP ingress #99 bounded that ingress with length limits, read timeouts and structured 400s.src/ca2a_runtime/challenge.py), feat(ca2a): appraise the caller before opening its payload #90 threaded it through the transport so the callee appraises the caller'scaller_offerbeforeopen_sealedrather than only verifying its delegation chain. Whether a given deployment reachesassurance="hardware"through it is section 2's question, not this one.2. Hardware-backed attestation, at least one backend (Tier 3, critical path)
docs/hardware-validation.md.SevSnpProvider.attestproduces a real report on an SEV-SNP guest. The one open item on the critical path. The collector exists (feat(tee): implement SEV-SNP and TDX collectors over configfs-TSM #86, via configfs-TSM) and has never run on silicon. Note the wrinkle: every piece of real SNP evidence this project holds came from an Azure CVM, and Azure runs SNP behind a Hyper-V paravisor, so the guest cannot setREPORT_DATAand roots its channel key through the vTPM instead. This collector does not apply there. Closing this needs a non-paravisor guest: GCP N2D or bare metal.3. Conformance on hardware
tests/conformance/on confidential-computing hardware (a production run), so a "cA2A-compatible / attested" claim is backed by a real run rather than synthetic vectors (ROADMAP v1.0 note).4. Flip the claims and release
0.1.0(drop thea1alpha qualifier).Out of scope (deferred to v1.0, not required to drop alpha)