Skip to content

docs(proposals): add A2A Identity Trust Framework roadmap (v1.0 - v2.0)#1850

Open
thebenignhacker wants to merge 5 commits into
a2aproject:mainfrom
opena2a-upstream:docs/identity-trust-roadmap-pr
Open

docs(proposals): add A2A Identity Trust Framework roadmap (v1.0 - v2.0)#1850
thebenignhacker wants to merge 5 commits into
a2aproject:mainfrom
opena2a-upstream:docs/identity-trust-roadmap-pr

Conversation

@thebenignhacker

Copy link
Copy Markdown

Summary

Adds a public trajectory document for the Agent Identity Trust Framework so peer implementers (Envoys, CTEF, APS, Hippo) can align release cycles and schema changes against a known A2A-IDF roadmap rather than reacting per pull request.

This is a sibling to the existing docs/proposals/agent-identity-trust-framework.md (the spec) and agent-identity-trust-framework-design-rationale.md (the why), separately reviewable from the v1.0 spec text in #1496.

Roadmap content

Version Scope Target window
v1.0 Current proposal: verification levels, dual-shape keyid resolution, attestation envelopes, delegation chain structure, RFC 9421 wire signature integration A2A v1.1 candidate cycle
v1.1 Vouching attestation type (driver: @aeoess's 2026-02-23 thread) with formalized issuer / vouchee / scope / expiry shape A2A v1.1.x, candidate Q3 2026
v1.2 Federated revocation registry, CT-style append-only log, 3-of-5 witness bootstrap from agreed conformance suite operators A2A v1.2.x, candidate Q4 2026 through Q1 2027
v2.0 ML-DSA-65 post-quantum signature agility, hybrid Ed25519 + ML-DSA-65 keying transition, algorithm registry A2A v2.0 candidate cycle, 2027

Coordination map

The doc cross-references the active companion specs and notes how each composes with A2A-IDF without re-signing the wire layer:

Non-goals across all versions

  • No required hosted infrastructure (every reference implementation is optional)
  • No proprietary signature formats (all signatures over IETF canonical forms)
  • No protocol-level deprecation of TLS (§7.2) or AgentCard signing (§8.4)
  • No assumption of online verifiers (offline evaluation supported throughout)

Test plan

  • Renders correctly in GitHub markdown view
  • Sentence-case headings (verified)
  • No em dashes (verified)
  • All cited links live (verified)
  • Consistent style with existing docs/proposals/agent-identity-trust-framework*.md files

Public trajectory document so peer implementers (Envoys, CTEF, APS,
Hippo) can align release cycles and schema changes against a known
A2A-IDF roadmap rather than reacting per pull request.

Sections:
- v1.0: current proposal (PR a2aproject#1496) - verification levels, dual-shape
  keyid, attestations, delegation chains, RFC 9421 wire signatures
- v1.1: vouching attestation type per @aeoess Feb-23 thread
- v1.2: federated revocation registry, CT-style append-only log
- v2.0: ML-DSA-65 post-quantum signature agility, hybrid keying
- Coordination map across companion specs (a2aproject#1829 Envoys, a2aproject#1786 CTEF,
  a2aproject#1575 APS, lawcontinue/hippo-auth)
- Non-goals (no hosted infrastructure required, no proprietary
  signature formats, no TLS/AgentCard deprecation, no online-only
  verifiers)

Sibling to existing docs/proposals/agent-identity-trust-framework.md
(spec) and agent-identity-trust-framework-design-rationale.md (why).
@thebenignhacker thebenignhacker requested a review from a team as a code owner May 13, 2026 13:34

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new roadmap document for the Agent Identity Trust Framework (A2A-IDF), outlining the development trajectory across four protocol cycles (v1.0 through v2.0). The review feedback identified a potential redundancy in the coordination map regarding issue references and suggested adding '@' prefixes to usernames in the witness governance section to ensure consistency and improve linkability in rendered markdown.

| [CTEF claim envelopes (issue #1786)](https://github.com/a2aproject/A2A/issues/1786) | @aeoess | Identity claims | A2A-IDF attestation envelopes and CTEF claim envelopes are orthogonal layers. If CTEF stabilizes a generic envelope shape, A2A-IDF attestation types ship as content within it. |
| [APS payments / receipts / delegation (issue #1575)](https://github.com/a2aproject/A2A/issues/1575) | @aeoess | Delegation and continuity | A2A-IDF delegation chain structure composes with APS bilateral receipts and delegation chains. Conformance fixtures demonstrate composition without re-signing the wire layer. |
| [Hippo Ed25519 reference (lawcontinue/hippo-auth)](https://github.com/lawcontinue/hippo-auth) | @lawcontinue | Wire reference implementation | Hippo's Ed25519 reference library is a peer implementation against Envoys §1-§4. A2A-IDF §6 follow-up planned to incorporate Hippo's `tag` parameter and SHA-512 acceptance work. |
| [CTEF v0.3.x release schedule](https://github.com/a2aproject/A2A/issues/1786) | @kenneives | Cross-thread release coordination | A2A-IDF aligns minor-version timing with CTEF cycles to share review cycles for envelope shape changes. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The 'Coordination map' table has two rows pointing to the same issue (#1786) with different descriptions and owners. While intentional repetition is acceptable for emphasis or clarity in documentation, this specific instance is confusing and appears to be an error. Please combine the rows or provide the correct issue link.

References
  1. In documentation, intentional repetition can be acceptable for emphasis and clarity, even if it appears redundant.


**Coordination dependencies.**
- v1.1 vouching shape (this proposal): revocation log records vouching attestations and primary attestations identically; the type field distinguishes.
- Witness governance: needs an A2A working group resolution on which issuers operate witnesses. Candidate witness set is the agreed conformance suite operators (OpenA2A, aeoess, jschoemaker, kenneives, lawcontinue).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

low

For consistency with how GitHub users are referenced elsewhere in this document (e.g., in the Coordination Map table), please prefix the usernames in this list with @. This will also make them clickable links in the rendered markdown.

Suggested change
- Witness governance: needs an A2A working group resolution on which issuers operate witnesses. Candidate witness set is the agreed conformance suite operators (OpenA2A, aeoess, jschoemaker, kenneives, lawcontinue).
- Witness governance: needs an A2A working group resolution on which issuers operate witnesses. Candidate witness set is the agreed conformance suite operators (OpenA2A, @aeoess, @jschoemaker, @kenneives, @lawcontinue).

jschoemaker added a commit to jschoemaker/Envoys-public that referenced this pull request May 13, 2026
Spec v1.5.0 formalizes dual-shape keyid resolution (§6): verifiers MUST
accept either an application/did+json W3C DID Document or the Envoys-
native { address, public_key } object returned at the keyid URL.
Promotes former §7.1 task-resumption to §8 "Signature scope and
layering" with per-receipt-type attribution as a descriptive principle.
Adds optional RFC 9421 §2.3 `tag` parameter and SHA-512 auto-promotion
at >=4KB bodies to the normative wire format. Vectors 1-3 byte-stable.

SDK 0.7.2 adds Envoys.resolveKeyFromKeyid() that fetches the keyid URL,
sniffs Content-Type, and routes to DID Document or Envoys-native
parser automatically. verifyRequest and verifyAgentCard now use it,
so signatures from agents whose keyid serves did:web verify with no
caller-side opt-in.

API server-side: /agents/:address honors Accept: application/did+json
and emits a W3C DID Document with publicKeyJwk, authentication, and
assertionMethod arrays. Default (no Accept or wildcard) unchanged.

Aligned with A2A Identity Trust Framework v1.0 roadmap dual-shape
keyid resolution interop deliverable (a2aproject/A2A#1850).
@aeoess

aeoess commented May 13, 2026

Copy link
Copy Markdown

Useful artifact. A coordination doc is better than reacting per PR.

For APS, the main overlap with A2A-IDF is around signed identity, scoped authority, mutual authentication, cognitive attestation, and byte-stable conformance fixtures across implementations.

Our current pattern is to pin conformance vectors per release so downstream implementers have stable fixtures even when the SDK moves. The relevant home for that is aeoess/aps-conformance-suite.

Happy to add an APS row directly to the roadmap doc if peer-edited content is useful, or you can ping me when intersecting schema changes land.

@thebenignhacker

Copy link
Copy Markdown
Author

Thanks @aeoess. Yes, please add an APS row directly. The current bullet for #1575 in the Coordination Map is one line and doesn't carry the per-release pinning pattern at all, which is exactly the discipline that makes cross-suite composition work.

Branch is opena2a-org:docs/identity-trust-roadmap-pr. Either path works:

  1. PR against the branch and I'll merge it into docs(proposals): add A2A Identity Trust Framework roadmap (v1.0 - v2.0) #1850. Happy to add you as a collaborator on the source fork if push access is easier.
  2. Sketch the row here as a comment and I'll commit it with attribution.

On the five overlap surfaces you named, mapping them to where they land in the roadmap:

  • Signed identity and scoped authority are v1.0 (spec text in docs: add agent identity verification and trust framework #1496 §1-§4).
  • Mutual authentication is v1.0 (§6 wire signature) and threads forward through every version. Empirical motivation in State of AI Agent Security: May 2026 §5: 31,310 A2A handshake events observed over a 30-day honeypot window (15.2% of total attacker events). §8 Recommendation 2 maps that surface to OASB 7.1 / 7.2 / 7.3, which is the hardening A2A-IDF v1.0 §6 + the v1.1 vouching work both deliver.
  • Byte-stable conformance fixtures are v1.0 and onward. The aim-did-rfc9421/* composition fixtures in opena2a-org/a2a-idf-conformance already exercise APS bilateral-receipt and delegation-chain-3link envelopes byte-stably; @kenneives confirmed the four-layer alignment table on docs: add agent identity verification and trust framework #1496 last week.
  • Cognitive attestation is the open one. Adjacent to vouching attestations (v1.1) and federated revocation witness selection (v1.2), or could be its own row. Would value your read on which is more accurate.

The per-release pinning pattern at aeoess/aps-conformance-suite is the right shared shape across Envoys, APS, CTEF, Hippo, and A2A-IDF conformance suites. Worth a sentence in the Coordination Map intro acknowledging that pattern explicitly; will add unless you'd rather phrase it.

@kenneives

Copy link
Copy Markdown

@thebenignhacker — quick citation ask on the State of AI Agent Security: May 2026 reference in the roadmap-mapping comment (§5 honeypot handshake data + §8 OASB 7.x recommendations). That title doesn't match the State of Agent Security 2026 report at agentgraph.co — different title prefix, and the §5 / §8 content you describe (30-day honeypot window, 31,310 A2A handshake events, OASB 7.1/7.2/7.3 recommendations) doesn't appear in our document.

If it's a separate substrate-adjacent paper — peer research, AAIF / A2A WG empirical study, or otherwise — a link or repo pointer would be useful. The honeypot-handshake observational data + OASB recommendation mapping would slot directly into the v0.3.3 working doc at agentgraph-co/agentgraph docs/standards/v0.3.3-working-doc.md as empirical grounding for the wire-signature → identity-claims layer threat model under §1 envelope-shape diff.

No urgency — file at convenience.

@thebenignhacker

Copy link
Copy Markdown
Author

@kenneives — yes, separate report. State of AI Agent Security: May 2026 is the inaugural Behavioral Threat Report from OpenA2A Research, published 2026-05-12.

The §5 numbers (31,310 A2A handshake events, 15.2% share of total attacker events) come from a 30-day honeypot window ending 2026-05-11 across four behavioral telemetry streams (TrapMyAgent honey agents, AgentPwn honeypot pages, HoneyFinder wild bait, ARIAscout exposure sweep). §8 Recommendation 2 ("a2a-priority") maps to OASB 7.1 Mutual Authentication / 7.2 Message Integrity / 7.3 Trust Boundary Enforcement.

Canonical citation: ARIA, & Fane, A. (Ed.). (2026, May 12). State of AI Agent Security: May 2026 (Behavioral Threat Report Issue 1). OpenA2A Research. https://research.opena2a.org/reports/state-of-ai-agent-security-2026-05

Cadence is monthly, 15th-of-month publish, rolling 30-day window. Happy to slot the honeypot-handshake observational data + OASB mapping into the v0.3.3 working doc if you want a peer-edit pass, or pull it directly.

@kenneives

Copy link
Copy Markdown

@thebenignhacker — citation confirmed and read. State of AI Agent Security: May 2026 is the behavioral-surface companion to our supply-chain-surface scan report — paired empirical picture:

  • OpenA2A Research / ARIA + Abdel Fane (2026-05-12): honeypot telemetry, 30-day window ending 2026-05-11, four streams (TrapMyAgent, AgentPwn, HoneyFinder, ARIAscout), 206,571 honey-agent events + 136,954 honeypot-page interactions + 1,763 payload callbacks + 343 wild injection-bait surfaces. 75.4% MCP / 15.2% A2A (31,310 events) / 0.5% other distribution of attacker events.
  • AgentGraph (2026-05-12): static + dependency scans across x402 Bazaar / OpenClaw / MCP Registry / npm + PyPI agent packages / Dreamspace AI-generated Solidity. 31-82.6% critical/high findings rates across surfaces.

Same launch day, complementary scope: behavioral observations of what attackers are doing paired with structural observations of what infrastructure they're operating against. The 75.4% MCP attacker concentration + our 55.3% MCP Registry critical-findings rate are the same surface from two measurement angles.

On the v0.3.3 working doc fold-in: yes please, pull-directly works. I'll write a brief empirical-grounding section in docs/standards/v0.3.3-working-doc.md under a new "Empirical motivation" heading, citing §5 (handshake event distribution) + §8 (OASB 7.1 / 7.2 / 7.3 → A2A-IDF v1.0 §6 + v1.1 vouching) with the canonical ARIA, & Fane (Ed.) citation. Will ping for peer-edit when staged.

On cross-citation in Q3 2026 follow-up: worth surfacing the complementary-empirical framing. The substrate work + the behavioral threat data tell a coherent story (here are the structural gaps; here is the attacker activity exploiting them; here are the OASB controls + CTEF substrate that closes the loop). Happy to coordinate on framing if useful for OpenA2A's Issue 2 publish.

On the broader OpenA2A research-web stack: scrolled the org (opena2a-org, 42 public repos, Apr 2025 onward) — the research-web framing alongside a2a-idf-sdk + a2a-idf-conformance + the spec page at opena2a.org/identity is a tighter integrated venue than I'd registered before. The A2A-IDF v1.1 review-track ask on #1496 makes more sense in that context.

Per-release pinning pattern: agreed — worth a sentence in the Coordination Map intro. Either you phrase it or I can draft if you'd rather. Same shape across Envoys, APS, CTEF, Hippo, A2A-IDF — convergent practice across all five suites.

@thebenignhacker

Copy link
Copy Markdown
Author

@kenneives, I'll phrase the per-release-pinning sentence in the Coordination Map intro (already committed to @aeoess upthread). Batching it with the APS row @aeoess is contributing, so it's a single push, single review ping.

Will peer-edit the v0.3.3 empirical-grounding section when you ping. §5 + §8 citations are stable (publishing-cadence-locked, no retroactive edits).

Paired-empirical framing reads cleanly. Worth carrying into Issue 2 next month, and the integrated-venue read on #1496 lines up.

@aeoess

aeoess commented May 16, 2026

Copy link
Copy Markdown

@thebenignhacker, here is the APS row you asked for, scoped to shipped APS surfaces. Feel free to edit for roadmap style or batch it into your push with attribution.


APS (Agent Passport System)aeoess/agent-passport-system (Apache-2.0, npm, IETF Internet-Draft draft-pidlisnyi-aps-01)

APS composes with A2A-IDF at the identity, scoped-authority and mutual-authentication surfaces. It does not replace the A2A-IDF wire signature. APS treats that signature as the transport layer and carries delegation and receipt structure above it.

  • v1.0 — signed agent identity and scoped delegation with monotonic narrowing align with A2A-IDF §1–§4. Mutual authentication composes with §6 wire signature.
  • v1.1 — APS delegation chains can express issuer / vouchee / scope / expiry assertions as delegation grants without re-signing the A2A-IDF envelope.
  • v1.2 — APS cascade revocation composes with an external append-only revocation registry by reference, not replacement.
  • v2.0 — APS signatures are JOSE-tagged and profile-defined, so an Ed25519 to ML-DSA-65 transition can be handled as a profile update rather than a protocol rewrite.

Per-release conformance pinning: APS pins byte-stable conformance vectors per SDK release at aeoess/aps-conformance-suite. Downstream implementers verify against the pinned fixtures for a given release even when the SDK moves, so composition stays reproducible across version boundaries.

The same pattern can generalize across companion specs: each project pins fixtures per release, and verifiers compose against known vector sets instead of a moving HEAD.

… per-release-pinning intro

Two batched edits per PR thread:

1. Add per-release-pinning intro paragraph to Coordination map section
   (kenneives's ask from PR thread review): companion specs pin byte-stable
   conformance vectors per SDK release; cross-spec references carry version
   pins and content hashes.

2. Expand APS row with aeoess's contributed row-level summary, add new
   "APS per-version composition" sub-section with per-version (v1.0/v1.1/
   v1.2/v2.0) composition detail and APS conformance-suite pin pointer.

Content for the APS row + per-version composition contributed verbatim
(em dashes restyled) by @aeoess in his PR review comment.

Co-authored-by: aeoess <aeoess@users.noreply.github.com>
@thebenignhacker

Copy link
Copy Markdown
Author

Pushed 07303eb batching both reviewer requests:

  • @aeoess's contributed APS row + per-version composition (v1.0 / v1.1 / v1.2 / v2.0) lands as a new "APS per-version composition" sub-section under the Coordination map, with the aeoess/agent-passport-system SDK and IETF I-D draft-pidlisnyi-aps-01 references and the aeoess/aps-conformance-suite pin pointer. Co-authored to @aeoess on the commit.
  • @kenneives's per-release-pinning sentence lands as a one-paragraph intro right under the Coordination map heading, stating the convergent practice across the five companion specs in this map.

Apologies for the lag between @aeoess's row delivery and this push; the queue cleared today.

@kenneives

Copy link
Copy Markdown

@thebenignhacker — both reads clean. The per-release-pinning intro lands well as a one-paragraph framing of the convergent practice across the five companion specs.

Concrete instance in production right now: opena2a-standards/a2a-idf-conformance#6 caught Envoys v1.5.0 → v1.5.1 mid-PR — discipline drafted 2026-05-15 against v1.5.0 (specSha256: 62aff261...), the 2026-05-18 prose-reconciliation bump shifted the hash, re-fetch at push time pinned the fixtures to v1.5.1 (d343e428...) before merge. Exactly the failure mode the Coordination Map is built to absorb. Will cite #6 + the Coordination Map together in the v0.3.2 publish (Wed May 27) as the worked example.

cc @aeoess — APS per-version composition section reads as the substrate anchor.

— Kenne

@giskard09

Copy link
Copy Markdown

Mycelium Trails (argentum-core) fits the post-execution evidence slot in the cross-extension matrix alongside APS and CTEF. The layer is complementary — no overlap with identity or wire signing.

The composition: AGNTCY/DID (who) → Verifiability Gate (authorized?) → Mycelium (what happened, tamper-evident). Each layer independently verifiable, no cross-layer trust required.

Evidence of convergence: action-ref-v1 independently verified by x402 foundation (action-ref-verify@ec7201a, confirmed today), AGT EvidenceAnchor SPI merged (microsoft/agent-governance-toolkit#2244), Nobulex and Verifiability Gate aligning against conformance fixtures this week. Conformance fixtures live: https://github.com/giskard09/argentum-core/tree/main/examples/conformance

@thebenignhacker

Copy link
Copy Markdown
Author

@giskard09, appreciate the proposal. The cross-extension matrix today is APS and CTEF, both of which carry an IETF Internet-Draft (draft-pidlisnyi-aps-01 for APS) and byte-match validated conformance suites cosigned by multiple independent implementations. That is the maturity bar the roadmap matrix has settled around.

Mycelium Trails is a legitimate post-execution evidence design pattern, and the layered framing (identity → authorization gate → tamper-evident execution log) reads cleanly as a complementary layer. On the three convergence signals you cite, the evidence does not quite hold up yet:

  1. AGT EvidenceAnchor SPI (microsoft/agent-governance-toolkit#2244). Real and merged, but it is a design proposal doc, not an implementation, and Mycelium is the third of three reference backends behind filesystem/WORM and Sigstore Rekor, explicitly "plugin PR after core lands". Counting that as substrate-level convergence is premature.

  2. andysalvo/action-ref-verify@ec7201a as x402 foundation verification. That repo is not under x402-foundation/. It is a personal repo created 2026-05-19 with 0 stars, self-described as "Draft conformance verifier", and neither giskard09 nor andysalvo has a merged contribution to x402-foundation/x402. Framing it as "independently verified by x402 foundation" overstates what the artifact actually is. The argentum-core / action-ref-v1 self-tested fixtures stand on their own as substrate work; the third-party-validation framing around them is what we would want to see firmed up.

  3. Nobulex / Verifiability Gate alignment. Pointer-only in your comment, no link. If there is a public repo with conformance fixtures landing this week, please link it and we will evaluate from the artifact.

When there is (a) an independent implementation of the action-ref-v1 wire format authored by a different party, (b) the AGT EvidenceAnchor plugin actually landed and exercised against argentum-core, and (c) at least one peer-cosigned conformance fixture set comparable to what APS and CTEF carry, the matrix entry argument becomes much stronger. Happy to revisit then.

The examples/conformance/ set in argentum-core is well-shaped fixture work on its own merit and is welcome substrate as the post-execution layer matures.

@giskard09

Copy link
Copy Markdown

Two corrections are warranted.

On andysalvo: that is a personal conformance verifier repo, not an x402-foundation artifact. The framing overstated what it is. The correct claim is: andysalvo independently reproduced 4/4 fixtures byte-identical against argentum-core/examples/conformance/ on the same rfc8785@0.1.4 + lowercase-hex SHA-256 substrate.

On AGT #2244: agreed — it is a design proposal, not a landed implementation. The plugin PR is pending (#2381, #2415).

The independent implementation that does hold up: AlgoVoi (chopmob-cloud) ran rfc8785@0.1.4 against all four argentum-core fixtures — 4/4 byte-identical, both legs (canonical JCS string and SHA-256 → action_ref). Public gist: gist.github.com/chopmob-cloud/5f35eaa527d292bf3ddc52f8725a85c9. Different party, different implementation, no coordination. That is the artifact for criterion (a).

On Nobulex: arian-gogani confirmed authorship of the nobulex behavioral-evidence row in the v0.3.3 fixture matrix and is targeting the PENDING-boundary cross-validation this week against argentum-core fixtures (#1829). No public repo yet — fair to hold that signal until the artifact lands.

The bar you described is clear and reasonable. Will revisit when (b) lands.

@thebenignhacker

Copy link
Copy Markdown
Author

@giskard09 — appreciate the corrections on andysalvo and AGT #2244.

On the AlgoVoi reproduction: the gist at chopmob-cloud/5f35eaa527d292bf3ddc52f8725a85c9 is scoped to CTEF v0.3.1 + APS v1, not argentum-core. The README and gist description both state "14/14 vectors byte-match" against the CTEF cte-test-vectors.json (4 vectors) and APS bilateral-delegation/canonicalize-fixture-v1.json (10 vectors) sets. argentum-core / Mycelium Trails fixtures are not in the validated set. It is a CTEF + APS implementation receipt — useful evidence for those layers, but does not constitute independent reproduction of action-ref-v1 against argentum-core/examples/conformance/.

andysalvo/action-ref-verify includes one argentum-core-sourced vector (0001-giskard-baseline) alongside crest-adversarial test cases. That is the same single-fixture scope you described in the andysalvo concession — useful as a verifier, but not the independent-implementation-by-different-party signal that criterion (a) was framed around.

The bar remains as stated. Concretely, criterion (a) is "an independent implementation of the action-ref-v1 wire format authored by a different party" — a non-giskard09/non-argentum-core party shipping production code that implements the format and validates against the argentum-core fixture set. The examples/conformance/ work in argentum-core is welcome substrate; the matrix entry argument firms up when an independent implementer (or two) carries action-ref-v1 in production and publishes a peer-cosigned conformance receipt comparable to what APS and CTEF carry in §3.8.

Happy to revisit when (a) lands with that scope, alongside (b) the AGT plugin landing and exercising and (c) the peer-cosigned fixture set.

Spec/docs-only fork — the 8-phase pre-push review (new-user
walkthrough, adversarial corpus, score sanity, concept-explainer,
real-world dev-tree scan) targets tool repos with runnable
artifacts and is not applicable here. Review of proposal text
happens on the upstream PR.
- @-prefix candidate witness set in v1.2 Coordination dependencies
  for consistency with the Coordination map convention
- Disambiguate the two a2aproject#1786 rows in the Coordination map: the
  release-cycle row now links to @kenneives's v0.3.3 working doc
  (the actual artifact he coordinates from), and adds a note
  pointing back at the substrate envelope row.
Adds a "Related substrate work" subsection under the Coordination map
that points at the OpenA2A AIP+ATP+ATX spec set tracked separately on
a2aproject#1876. Explicit about why the set is not in the Coordination Map table
above (does not yet meet the (a)(b)(c) maturity bar APS and CTEF carry):
single implementation today, reference build plugin not yet shipped,
no peer-cosigned conformance fixtures.

Honest cross-link, not a matrix-inclusion claim. Coordination Map table
unchanged. Peers tracking the four-layer split get visibility.
@giskard09

Copy link
Copy Markdown

Criterion (a) bar accepted as stated: an independent implementation of the action-ref-v1 wire format, by a non-giskard09 party, validating against argentum-core/examples/conformance/.

Our part is now published: examples/conformance/action-ref-v1-baseline.fixture.json (commit 1706771) — three vectors covering the baseline envelope, dual-timestamps, and scope collision-proof invariant. Formal substrate for independent validation.

State of the pipeline toward criterion (a):

  • Nobulex (arian-gogani): cross-validation specimen in progress — Ed25519 + JCS RFC 8785 + SHA-256 lowercase-hex against argentum-core fixtures. When the specimen lands, it maps directly to the criterion.
  • NEXUS (RileyCraig14): trail_id + anchor_tx confirmed in production (AutoGen #7674). Wire format live, conformance receipt not yet peer-cosigned.
  • **VeritasActa (tomjwxf): HttpAnchorSink` pointing to our endpoint in production.

Will return when (a) is closeable with that scope.

@giskard09

Copy link
Copy Markdown

One independent reproduction landed today.

Nobulex (arian-gogani)microsoft/autogen#7667, 2026-05-24T17:36Z:

"the action_ref derivation we use is SHA-256(JCS({agent_id, action_type, scope, timestamp_ms})) using RFC 8785 for canonical JSON. this has been cross-validated across 4 JCS implementations (Python rfc8785, JS canonicalize, Go gowebpki/jcs, Java cyberphone) — 16/16 byte-for-byte agreements."

Nobulex is a non-giskard09 party implementing the wire format in production. 16/16 byte-for-byte across 4 independent JCS implementations. One format note: Nobulex uses timestamp_ms (integer) vs action-ref.md v1.0 RFC 3339 string — both derivations are documented in argentum-core as distinct but compatible. The conformance fixture set is at github.com/giskard09/argentum-core/tree/main/examples/conformance/.

Whether this meets criterion (a) as scoped is your read.

@giskard09

Copy link
Copy Markdown

@thebenignhacker — the synthesis window closed today with a clean result.

AEOESS published Synthesis Matrix v1 (2026-05-26). Row #2urn:mycelium:trail — confirmed by the independent arbiter. The attribution is public and inapelable.

On the composability question you raised in your last comment: ATP §5 today says "integrity rests on database access control." An on-chain anchor per trail changes that sentence. Any regulator, auditor, or counterparty can verify the record directly against the chain — without contacting the operator, without API keys, without trusting the agent stack.

That's not a feature addition to ATP. It's the sentence that makes ATP §5 regulator-grade without qualification.

If composability is still on the table, the substrate is ready: urn:mycelium:trail, 53/53 conformance vectors, 5 languages, 4 independent author sets. An IETF Internet-Draft formalizing action_ref is in preparation.

Happy to coordinate on what a joint accountability layer looks like if that's useful.

@aeoess

aeoess commented May 27, 2026

Copy link
Copy Markdown

@giskard09 the substrate is at the point where a focused joint I-D on the action_ref primitive makes sense. APS v0.3.3 exposes action_ref as a cross-cutting field across the payment-rails primitives (cycles / x402 / agent-toolkit), and the SHA-256(JCS({agent_id, action_type, scope, timestamp})) shape composes byte-stably against argentum-core's action-ref.md v1.0 on every field that overlaps. Nobulex's 16/16 confirmation closes the substrate-readiness question for the primitive itself.

Open to co-authoring a draft scoped narrowly to the primitive: canonical preimage, JCS canonicalization (RFC 8785), SHA-256 derivation, the field set both implementations enforce. Anything broader stays in respective master drafts: revocation semantics, anchor-status states, post-execution log shape (draft-pidlisnyi-aps for APS; your in-preparation draft for argentum-core / Mycelium).

The broader accountability-layer composition question is one for the A2A-IDF matrix to surface. @thebenignhacker's read on whether Mycelium's substrate currently clears the v1.0 maturity bar is the read that matters there. The matrix is his.

If a focused joint draft works, propose we start with a 1-2 page scope memo on the field set and canonical preimage. Bounded commitment, bounded editorial surface.

@giskard09

Copy link
Copy Markdown

@aeoess a focused joint draft on the primitive is the right scope. The field set you described — canonical preimage, JCS (RFC 8785), SHA-256 derivation, the overlapping enforcement surface between APS and argentum-core — is exactly where a stable shared reference makes sense. Agreed that revocation semantics, anchor-status states, and post-execution log shape stay in the respective master drafts.

A 1-2 page scope memo works as the starting point. Suggest we open it with: (1) canonical field set, (2) JCS canonicalization note, (3) SHA-256 derivation, (4) what both implementations enforce today vs. what stays out of scope. Happy to draft a first pass if that’s useful, or review yours.

@thebenignhacker

Copy link
Copy Markdown
Author

@aeoess, @giskard09 — thank you both for working this through to a substrate-anchored proposal.

On the primitive-level joint I-D (APS + argentum-core, scoped to canonical preimage, JCS canonicalization per RFC 8785, SHA-256 derivation, and the shared field set): reads cleanly to me on this substrate. The Nobulex 16/16 byte-stable cross-validation across four independent JCS implementations (microsoft/autogen#7667) closes the substrate-readiness question for the primitive itself. Keeping revocation semantics, anchor-status states, and post-execution log shape in respective master drafts (draft-pidlisnyi-aps-01 for APS, the in-preparation argentum-core draft) is the right scope to keep the editorial surface bounded.

Composability with A2A-IDF: action_ref sits at a different layer than the §6 wire signature. §6 attests "this envelope was authored by the holder of key K" at transport time; action_ref is a content-addressed identifier for an action that downstream systems can reference, audit, or anchor without needing the original envelope. They compose orthogonally — an A2A-IDF v1.0 envelope carrying an APS receipt that itself references an action_ref is internally consistent, with each layer independently verifiable. I'll fold a one-paragraph composability note into the v1.0 §6 commentary in the next #1496 push so the layering is explicit in the spec text, and link the focused I-D once it has a draft number.

On the A2A-IDF Coordination Map matrix entry for Mycelium Trails specifically: the criteria I named on 2026-05-19 were scoped to the post-execution evidence layer, not the action_ref primitive. The primitive's substrate has cleared; the post-execution surface still rests on:

  • (b) AGT EvidenceAnchor plugin landing and exercising against argentum-core. microsoft/agent-governance-toolkit#2381 / #2415 are pending per @giskard09's 2026-05-20 correction.
  • (c) A peer-cosigned conformance fixture set for the post-execution log shape comparable to APS §3.8 / CTEF's vector sets — distinct from the action-ref-v1 fixtures, which cover the primitive but not the broader trail / anchor / cascade-revocation surface argued for the matrix entry.

So the matrix-entry calculus on the post-execution layer is unchanged. Happy to revisit when (b) lands and (c) carries a peer-cosigned fixture set comparable to what the existing matrix entries hold. The primitive-level convergence is welcome substrate signal and reads as such.

The AEOESS Synthesis Matrix v1 row #2 confirmation on urn:mycelium:trail is a signal that the post-execution layer substrate is maturing, and reads as such. The A2A-IDF Coordination Map operates on a different scope (per-version-composition table for companion specs with their own conformance suites + IETF I-D status), and the matrix-entry argument firms up when criteria (b) and (c) above clear with peer-cosigned artifacts.

@giskard09

Copy link
Copy Markdown

@thebenignhacker — the composability note on §6 and the I-D link once it has a draft number are the right structural moves. Thank you for the clean separation between the primitive-level substrate and the post-execution matrix entry criteria.

Criteria (b) and (c) noted. Will return when both carry peer-cosigned artifacts at the scope you've defined — no earlier.

@aeoess

aeoess commented May 28, 2026

Copy link
Copy Markdown

Small clarification on the action_ref point: APS's native §4.1 action_ref and argentum-core's action-ref-v1 use intentionally different preimages. APS can now emit or carry the shared external action-ref-v1 correlation key while preserving the native §4.1 primitive for APS receipts.

@aeoess

aeoess commented May 28, 2026

Copy link
Copy Markdown

@giskard09 thanks for the Scope Memo and the cross-validation work. Nobulex 16/16 across four independent JCS implementations is a strong result for the four-field tuple.

When I went to verify the byte-comparison details before responding on the joint I-D question, I noticed the APS §4.1 and argentum-core action-ref-v1 preimages diverge in a few places that affect canonical-byte equality:

  • APS §4.1 (draft-pidlisnyi-aps-01) uses agentId, actionType, scopeRequired, timestamp. Field names are camelCase. scopeRequired is a sorted array of strings, with sorting required before canonicalization. Timestamp is ISO 8601 UTC with Z. The draft also says implementations MUST NOT include additional fields.
  • argentum-core action-ref-v1 uses agent_id, action_type, scope, timestamp. Field names are snake_case. scope is a single string with namespace prefix recommended. Timestamp mandates exactly 3 ms digits with Z.

Under JCS, those produce different canonical bytes for the same semantic input. The key strings differ before the values are even canonicalized, and the scope shape and timestamp-precision rules differ by design. So the "byte-stable on overlapping fields" framing in the memo doesn't hold at the canonical-byte level. Worth flagging because it affects what a joint I-D could canonicalize as a single preimage.

What APS now carries is action-ref-v1 alongside the native §4.1 value in the receipt. The two stay distinct: native for APS receipt semantics, external for cross-spec correlation.

On the joint I-D, the path I think composes cleanly is a joint I-D scoped to action-ref-v1 as the cross-spec correlation primitive on its own terms: four-field tuple, JCS, SHA-256, lowercase hex and byte-stability conformance across implementations of action-ref-v1 itself. APS would be cited as one implementation that carries it as an external correlation key, with APS-native §4.1 staying in draft-pidlisnyi-aps as a separate primitive. Each project's native primitive stays in its respective master draft.

A unified-preimage I-D defining a single canonical action_ref for both projects is the structure that doesn't work for the APS side, because folding APS-native §4.1 into a different preimage would break the draft and existing receipts in the wild.

If the narrower joint scope doesn't fit on the argentum-core side, the other clean shape is for each project to publish its own I-D and declare interop with action-ref-v1 in the respective master draft. Same outcome at the interop layer, different editorial structure.

On Informational vs Experimental: for the APS draft on its own, Experimental is the working assumption. For a narrow joint I-D, track choice is yours to propose since argentum-core is the canonical-spec author for action-ref-v1.

Happy to keep working through the canonical-preimage design either way. There's good interop to land here regardless of which structure carries it.

@giskard09

Copy link
Copy Markdown

@aeoess — the preimage-divergence flag is correct and the framing in the Scope Memo was imprecise. "Byte-stable on overlapping fields" implied a shared canonical form that doesn't hold under JCS when the key names and scope shape differ by design.

The narrower scope you describe is the right structure: a joint I-D for action-ref-v1 as the cross-spec correlation primitive on its own terms — four-field snake_case tuple, JCS, SHA-256, lowercase hex, byte-stability conformance across implementations of action-ref-v1 itself. APS cited as one implementation carrying it as an external correlation key alongside native §4.1. Each project's native primitive stays in its respective master draft.

That framing doesn't require reconciling the APS-native and action-ref-v1 preimages — it documents what action-ref-v1 is and that APS (alongside Nobulex, CTEF, and the other validated implementations) carries it for cross-spec correlation. The 16/16 result is evidence of action-ref-v1 byte-stability across implementations of action-ref-v1 itself, not across a unified preimage — which is the accurate claim.

On track: proposing Informational. The I-D documents an existing correlation primitive with multiple independent implementations — that fits the Informational shape better than Experimental.

One question that would help sequence the post-execution log shape work: for a peer-cosigned conformance fixture set comparable to APS §3.8 / CTEF's vector sets — what's the minimum structure that clears the bar? Specifically whether the trail-complete-v1 fixture set at examples/conformance/ (covering COMMITTED + delegation + revocation cascade) needs a second independent cosigner, or whether the cross-validation result from Nobulex (2/2 PASS against the trail fixture) already satisfies the peer-cosigned requirement.

Happy to push an updated Scope Memo reflecting this structure if useful before the full draft.

@giskard09

Copy link
Copy Markdown

One update on the peer-cosigned question: Nobulex just ran the trail-complete-v1 fixture set (3 vectors: COMMITTED + delegation + revocation cascade, happy path, FAILED boundary case) — 3/3 PASS, byte-identical. Combined with the 2/2 action-ref baseline: 5/5 total vectors across the argentum-core conformance suite. Gogani co-signed in nobulex#5.

That gives the peer-cosigned fixture set a second independent implementation covering both the primitive and the post-execution log shape — which is the shape the question was scoping. Happy to let this inform your answer on whether the bar is met.

@giskard09

Copy link
Copy Markdown

@andysalvo yes — that's exactly the pressure the I-D needs at this scope. The three surfaces you named map to real design decisions in action-ref-v1 that aren't explicit in the positive fixtures:

  • issuer binding: agent_id carries no issuer attestation requirement today — a near-miss here forces the intended boundary into the spec text
  • rescoped replays: scope is part of the preimage, but replay protection isn't specified at the receipt layer
  • semantic drift: authority_verified_at_ms / revocation_check_at_ms bound the validity window, but the near-miss surface between issuance and verification time isn't in the positive set

If you can structure them in the same fixture format as the 5/5 set — canonical JSON preimage + expected receipt fields + failure mode label — we'll incorporate them into argentum-core and cite them in the I-D.

@aeoess

aeoess commented May 31, 2026

Copy link
Copy Markdown

On the joint I-D scope: action-ref-v1 as a cross-spec correlation primitive on its own terms (four-field snake_case tuple, JCS per RFC 8785, SHA-256, lowercase hex), with APS cited as one implementation. That keeps APS's native §4.1 preimage (camelCase, sorted scopeRequired) distinct, per the divergence flagged on 28 May.

One process note before a draft string circulates: authorship on an I-D gets settled before the name exists, not after. For now please reference the two implementations directly — APS action_ref (draft-pidlisnyi-aps-01 §4.1) and argentum-core action-ref-v1 — rather than a joint aeoess-named draft string. I'll confirm AEOESS's role on the draft itself separately.

@giskard09

Copy link
Copy Markdown

Understood on the process — holding the joint draft string until authorship is settled. Will reference the two implementations directly in the interim. Ready to confirm when you are.

@giskard09

Copy link
Copy Markdown

On preimage form: the draft has been updated to timestamp_ms (unsigned 64-bit integer, milliseconds since Unix epoch UTC) as the canonical field — snake_case throughout, consistent with the four-field tuple you described. RFC 3339 display is now a rendering note only; the preimage uses the integer form.

The near-miss vectors kenneives published today are also cited in §5.2, with the three failure modes referenced at their canonical URL. Draft dated 2026-05-31.

Ready to share the full draft when you are.

@giskard09

Copy link
Copy Markdown

@thebenignhacker — a brief update since the 28 May exchange.

The three criteria you defined are now closed:

(a) Peer-cosigned conformance fixture set: Nobulex ran trail-complete-v1 (3 vectors) and action-ref-v1-baseline (2 vectors) — 5/5 PASS, byte-identical, co-signed in nobulex#5. Two independent non-giskard09 implementations.

(b) CTEF matrix entry: urn:mycelium:trail row ACCEPTED in v0.3.3 (comment 17139542, 2026-06-01). kenneives also incorporated the near-miss conformance vectors (commit 1d7b5fb) and the id_ref: "draft-giskard-aeoess-action-ref" into agentgraph.co/.well-known — before the I-D reaches datatracker.

(c) Peer-cosigned fixture set covering post-execution log shape comparable to APS §3.8 / CTEF vector sets: closed by the same Nobulex run above.

This week, a third party (MolTrust) independently carried action_ref as the W3C correlation key in ai-agent-protocol#34 — cross-referenced against APS vocabulary, without coordination from either of us.

On the composability question: ATP §5 today says "integrity rests on database access control." A per-trail on-chain anchor changes that sentence — any regulator or auditor verifies directly, without operator involvement. That is the gap the joint I-D primitive closes at the wire format level.

OpenA2A has did:opena2a registered in W3C DID extensions (PR #717). The accountability layer that makes that identity actionable for regulators is the post-execution anchor. The two fit together without redesign on either side.

Happy to discuss if composability is still on the roadmap for OpenA2A.

@aeoess

aeoess commented Jun 7, 2026

Copy link
Copy Markdown

On prior art, since action-ref-v1 is being referenced in other threads now: the APS action_ref method is specified in draft-pidlisnyi-aps-01 §4.1 (published 14 May 2026), SHA-256 over the RFC 8785 canonical form of the action's intent fields, and has shipped in the open-source SDK (agent-passport-system, GitHub and npm) since early April 2026. The four-field snake_case tuple discussed here reads to me as a profile of that same correlation method.

That is why the citation should stay symmetric. Anywhere action-ref-v1 is referenced, please cite both APS action_ref (draft-pidlisnyi-aps-01 §4.1) and argentum-core action-ref-v1, rather than one as the origin. The value of a deterministic content-addressed reference is that independent implementations compute the same value without coordinating.

@giskard09 holding the joint draft string until authorship is settled works. I'll follow up on the authorship arrangement separately rather than inline here.

@aeoess

aeoess commented Jun 11, 2026

Copy link
Copy Markdown

@giskard09 following up on the joint draft thebenignhacker signed off on in this thread. Proposed scope, deliberately narrow: the action_ref v1 derivation only — the four-field preimage, the RFC 3339 millisecond string form, JCS canonicalization, SHA-256 — with the conformance vectors both projects already publish as appendices. Authorization semantics, receipt shapes, and transport stay out of scope; the draft specifies the correlation key and nothing else.

A compiled xml2rfc skeleton exists on this side with both author slots open. Happy to share it as the starting point, or to work from yours if one exists. If the scope reads right, the next step is a working name and a home for the draft.

@giskard09

Copy link
Copy Markdown

Scope reads right — the draft specifies the correlation key and derivation, nothing else. Happy to work from your xml2rfc skeleton. Proposed working name: draft-giskard-aeoess-action-ref. For the home, a dedicated repository with both of us as maintainers would keep the editorial process clean. Let me know how you'd like to proceed.

@aeoess

aeoess commented Jun 11, 2026

Copy link
Copy Markdown

Works on all three, with one addition from doing the reading: your repo already carries a complete -00 text from May 26 (docs/draft-giskard-action-ref-00.txt), single-author, marked ready to submit. Bring it. The cleanest path is the xml2rfc skeleton as the initial commit for structure, then your -00 text and the APS v1 spec merged in section by section, strongest language wins.

Two lineage facts belong in the document itself rather than in negotiation later: action_ref was first specified normatively in draft-pidlisnyi-aps (rev 01, filed 2026-05-14, section 5.4), and the byte-exact cross-ecosystem profile converged through two implementation lineages, the argentum derivation spec and the APS action-ref v1 conformance set. Both facts in the introduction, both implementations as references, the same way it is written in the W3C text.

On the name, no objection: kenneives has carried draft-giskard-aeoess-action-ref in agentgraph.co/.well-known since June 1, and on surnames the alphabetical order lands the same way. For the home, your call between a repo under either account with the other added as maintainer, or a two-owner organization. Pick one and the skeleton lands the same day.

@giskard09

Copy link
Copy Markdown

Scope and approach confirmed. Bringing docs/draft-giskard-action-ref-00.txt as the content base; the xml2rfc skeleton handles structure.

One framing note for the introduction while the text is still open: the two lineage facts you propose read right, with one adjustment I'd want in the document. The argentum-core derivation specification and production implementation were developed in the same window as draft-pidlisnyi-aps, and the byte-exact convergence came from cross-implementation testing rather than one project adopting the other's definition. The introduction could reflect that:

The primitive was developed independently in two projects. The argentum-core project published a derivation specification and conformance suite [ARGENTUM-CORE] in May 2026. APS specified the primitive in [draft-pidlisnyi-aps]. Cross-implementation conformance established byte-exact equivalence across the four-field preimage, JCS canonicalization, and RFC 3339 millisecond timestamp form. Both conformance suites serve as normative appendices to this document.

Both lineage facts present, neither project as the origin of the other. If that reads cleanly on your side, I'll open the repository; the first commit can include an introduction drafted this way.

For the home: proposing giskard09/draft-giskard-aeoess-action-ref with you added as maintainer from commit one. Say the word and it lands today.

@kenneives

Copy link
Copy Markdown

The scope reads right — the correlation key + the v1 derivation only, conformance suites as normative appendices, authorship as giskard + aeoess. No claim on authorship from me.

Flagging AgentGraph as an implementation to reference: we implement argentum-core action-ref-v1 and have served the reference at agentgraph.co/.well-known/draft-giskard-aeoess-action-ref since June 1, plus near-miss vectors at /.well-known/action-ref-near-miss-vectors.json. Happy to contribute those as a reference-implementation conformance set for the appendix — they hold to the four-field preimage (SHA-256(agent_id‖action_type‖scope‖timestamp_ms)), the RFC 3339 millisecond form, and JCS.

A fresh data point for the cross-ecosystem profile: the v0.4 pre-execution-verdict-v0 verifier fixture we just published carries action_ref + action_ref_method through the signed object and byte-matches two independent implementations (haroldmalikfrimpong-ops, evidai) — so the derivation is exercised live across ecosystems, not just specified. Point me at the repo once it lands and I'll PR the appendix.

@giskard09

Copy link
Copy Markdown

Repo is up: github.com/giskard09/draft-giskard-aeoess-action-ref — draft-giskard-action-ref-00.txt as the -00 base, @aeoess as co-maintainer. The appendix slot is open for the AgentGraph conformance set whenever you're ready to PR, @kenneives.

The v0.4 cross-ecosystem data (haroldmalikfrimpong-ops + evidai byte-match on action_ref + action_ref_method) is exactly the kind of independent evidence the appendix needs — three implementations, three ecosystems, same derivation.

@kenneives

Copy link
Copy Markdown

PR is up: giskard09/draft-etcheverry-action-ref#1 — the AgentGraph conformance set in conformance/agentgraph/.

The spec anchor reproduces Appendix A Vector 1 byte-for-byte (fdd7f810…) via an independent implementation, plus 5 AgentGraph vectors including the empty-scope §3.1 edge and a did:key agent_id. The payment-charge vector's action_ref matches our live v0.4 pre-execution-verdict-v0 verifier fixture, so it's exercised across the payment seam too. Fold it into Appendix A however works for you and @aeoess.

@giskard09

Copy link
Copy Markdown

Merged — conformance/agentgraph/ is in the repo. @aeoess fold into Appendix A however works for you.

@giskard09

Copy link
Copy Markdown

Noted on #180 — the scope argument is sound. The derivation contract belongs in a dedicated spec, not as a SemConv attribute dependency.

On that note: the standalone spec you're describing already exists as draft-giskard-aeoess-action-ref (IETF I-D, co-authored with AEOESS). Multiple external implementers have contributed conformance sets to examples/conformance/ in argentum-core; kenneives references action_ref as the exactly-once guard field in CTEF v0.4. The two criteria from this thread — (a) and (c) from the June 1 comment — closed in late May.

If the framing of "cross-spec primitive with its own conformance surface" fits what you'd want in the Coordination Map, I'd welcome your read on where things stand.

@kenneives

Copy link
Copy Markdown

+1 on action_ref as a cross-spec primitive with its own conformance surface — that's exactly how we treat it. In CTEF v0.4 it's binding.action_ref (with action_ref_method naming the derivation) that the exactly-once guard keys on, and our independent conformance set lives in the draft's conformance/agentgraph/ — reproduces Appendix A Vector 1 byte-for-byte from a separate implementation. Glad to see it in the Coordination Map as a standalone primitive.

@giskard09

Copy link
Copy Markdown

@kenneives — a matrix question.

counterparty-ref-v1 now has its first production conformant. Graph Advocate's agent-score service (live, x402 on Base) emits it on every response, and the conformance set landed in argentum-core (examples/conformance/graph-advocate/) — three independent implementations byte-identical: the live service, verify.py, verify.mjs.

It sits on a different axis from the rows already in the map:

  • action_ref binds what the agent did — the action, post-execution.
  • signing-trust-ref binds who signed and under what model.
  • counterparty-ref binds the reputation of the wallet on the other side of the transaction — SHA-256 over a distinct preimage (wallet, provider_id, rubric_version, trailing_days, timestamp), not derivable from the action or the signature.

So it's a separate conformance surface, not a sub-field of action_ref. Does it merit its own row, the same way action_ref did as a cross-spec primitive with its own surface? Fixtures and the live provider are there if useful against the criteria.

@giskard09

Copy link
Copy Markdown

TKCollective shipped Phase 1 of their composed envelope today: AO (AgentOracle) + AT (AgentTrust), Pote schema sign-off locked. Phase 2 adds signing_trust_ref alongside screen_ref (presidio-hardened-x402).

The signing model is signing-trust-ref-v1 (commit 84de0e3 — spec + three conformance vectors: str-001 operator_key, str-002 agent_keypair, str-003 multi_party 2-of-3). Fixture: https://github.com/giskard09/argentum-core/blob/main/examples/conformance/signing-trust-ref/signing-trust-ref-v1.fixture.json

Does signing-trust-ref have a natural row in the CTEF matrix alongside action_ref — or does it sit at a different layer?

@arian-gogani

Copy link
Copy Markdown

the trajectory doc is useful infrastructure — one dimension worth making explicit in the v1.0 → v2.0 progression is the gap between identity (who the agent is) and behavior evidence (what the agent did).

the identity trust framework covers the former cleanly. the missing v2.0 item is the receipt layer: a verifier who accepts an agent's identity credential still cannot independently confirm what that agent did after authentication, without trusting the operator's logs.

the concrete gap: a v1.0 compliant Agent Card + DID credential proves the agent's identity and delegation scope. it doesn't prove any specific action happened within that scope. for regulated environments (EU AI Act Article 12, FCA SYSC 9.1), auditors need both.

the action receipt (action_ref = SHA-256(JCS({agent_id, action_type, scope, timestamp_ms}))) is the natural v2.0 complement to the identity credential — it binds the authenticated agent identity to specific actions taken, verifiable by the same public key infrastructure. nobulex produces these receipts; the spec counterpart is now in agentrust-io/trace-spec §3.3.1 (just merged). worth coordinating the A2A-IDF v2.0 scope with that work so the identity and receipt layers are designed to compose.

@kenneives

Copy link
Copy Markdown

@arian-gogani's identity-vs-behavior-evidence split is the key one for the v1→v2 progression, and it's worth stating sharply: an identity credential lets a verifier confirm who the agent is, but not what was checked about it or what it did. Those need a separate, independently-verifiable artifact — a signed receipt the verifier can recompute without trusting the issuer.

The roadmap already treats action_ref as the correlation key; the natural sibling is the evidence/receipt that action_ref points at — a content-addressed record (verdict, finding, outcome) that's offline-verifiable. Identity says the agent is who it claims; the receipt layer is what lets a relying party act on evidence rather than reputation. Putting both on the v2.0 axis — identity credential + offline-verifiable receipt — closes the gap. (On our side that receipt layer is CTEF; happy to keep the conformance set aligned to whatever shape the IDF roadmap blesses.)

@thebenignhacker

Copy link
Copy Markdown
Author

The identity-vs-behavior-evidence distinction is a fair axis for the v1→v2 progression, and worth stating in the roadmap as a concept: an identity credential proves who the agent is, not what it did, and the receipt/evidence layer is the natural v2.0 complement.

I'd keep the roadmap describing that layer abstractly rather than binding it to a specific external profile or conformance set. The v1.0 scope stays the identity framework; the evidence layer is a v2.0 design item to be specified on its own terms, not adopted by reference into this document.

@arian-gogani

Copy link
Copy Markdown

the composition map captures the cleanest version of what A2A-IDF answers vs what action-layer specs answer:

  • A2A-IDF answers who is acting — identity, attestation envelope, delegation chain, key resolution
  • bilateral receipts (APS, nobulex, agent-guard, vaara) answer what the actor did — admission and outcome records joined by content-derived action_ref
  • CTEF wraps the wire-layer claim envelope

these are three distinct properties and the roadmap is right to keep them in separate documents that compose by shared identifier rather than collapsing into one preimage. the bilateral-receipt and delegation-chain-3link fixtures cited under #1575 are exactly the right kind of conformance asset: they test composition without re-signing the wire layer.

one note on v2.0 PQ agility worth pinning early: the action-receipt side has the same ML-DSA-65 + Ed25519 hybrid-key concern. if A2A-IDF lands the algorithm registry shape in v2.0, action-receipt specs can adopt the same registry rather than building parallel infrastructure. coordinating the registry shape now (even as a stub) saves a re-canonicalization round later.

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.

5 participants