Skip to content

docs(spec): make the A2A profile binding normative (RFC 2119) - #64

Merged
imran-siddique merged 1 commit into
mainfrom
docs/normative-profile-spec
Jul 27, 2026
Merged

docs(spec): make the A2A profile binding normative (RFC 2119)#64
imran-siddique merged 1 commit into
mainfrom
docs/normative-profile-spec

Conversation

@imran-siddique

Copy link
Copy Markdown
Contributor

Why

The profile page described the binding without stating requirements. An implementer could not tell what conformance meant, and A2A's own extension governance requires official extensions to use the same RFC 2119 language as the core spec, so this is also a prerequisite for proposing cA2A as an A2A extension.

What

BCP 14 requirements language plus nine numbered requirements:

P-1 Overlay: removing every cA2A field leaves a valid A2A task
P-2 Extension declaration in the Agent Card and A2A-Extensions opt-in
P-3 Ignore versus enforce, including failing closed on partial cA2A metadata
P-4 Attenuated delegation, verifiable offline
P-5 Effective scope: delegated ∩ local policy, neither sufficient alone
P-6 Peer attestation appraised before sealing
P-7 Sealed payload, and no measurement claim without a measurement
P-8 Provenance, including denial records and terminal refusals
P-9 Honest assurance: software mode is Level 0

The one deliberately awkward part

P-6 is marked inline as not yet met. The handshake gates the seal on an appraised channel key, but the appraisal runs in software mode at assurance="none". The spec states the requirement and admits the gap in the same place, rather than weakening the requirement to match what ships. The alternative is a specification that quietly describes this implementation instead of the profile.

P-8's denial-record requirement depends on #63.

Not in scope here

The other docs/spec/ pages are still descriptive. The requirements-language section covers them, so they can be tightened incrementally.

Test plan

  • pytest tests/conformance — unchanged, passing. No code touched.

🤖 Generated with Claude Code

The profile page described the binding; it did not state requirements. An
implementer could not tell what conformance meant, and A2A's extension
governance requires official extensions to use the same RFC 2119 language as the
core specification.

Adds BCP 14 requirements language and nine numbered requirements (P-1 overlay,
P-2 extension declaration, P-3 ignore-versus-enforce, P-4 attenuated delegation,
P-5 effective scope, P-6 peer attestation, P-7 sealed payload, P-8 provenance,
P-9 honest assurance), plus scope and conformance sections.

P-6 is marked inline as not yet met: the appraisal runs in software mode at
assurance="none". Stating the requirement and admitting the gap is the point;
the alternative is a spec that quietly describes the implementation rather than
the profile.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@imran-siddique
imran-siddique merged commit f251ed6 into main Jul 27, 2026
12 checks passed
@imran-siddique
imran-siddique deleted the docs/normative-profile-spec branch July 29, 2026 23:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant