a2aproject / a2aproject/A2A

Proposal: Verifiable Reputation Pointer extension (typed, content-addressed reputation field on the Agent Card)

Abierto
#2,097 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Shell
Estrellas
25.7k
Forks
2.6k
Merge medio
3 d 6 h
PR fusionados (30 d)
16

Descripción

## Abstract

A data-only extension defining a typed field an `AgentCard` MAY carry: a pointer to an agent's reputation record that is **content-addressed and independently recomputable**, not merely a link a caller has to trust on the issuer's word.

## Motivation

An `AgentCard` can already carry an arbitrary URL to a reputation page in `metadata` or free text. That's insufficient for three reasons the core protocol doesn't currently address:

1. **No commitment to a specific export.** A bare URL can change server-side at any time with no caller-visible signal — no way to confirm the record checked five minutes ago is the same one being served now.
2. **No fork detection.** A server could show different histories to different callers, each individually plausible, with no way to catch it without comparing notes out of band.
3. **No explicit start-of-history marker.** A caller walking a reputation feed backward can't distinguish "this is genuinely where history starts" from "the history before this point was truncated" — both look identical (an absent predecessor).

None of this is achievable with the core protocol or `metadata` alone, since it requires a *typed*, *checkable* contract (a defined verification procedure a caller runs), not just a place to put a string.

## Technical approach

Full RFC 2119 specification + a zero-dependency Python reference implementation, checked against a real, live example (not a synthetic fixture) — this repo:

**https://github.com/babyblueviper1/a2a-ext-reputation-pointer**

The pointer carries `issuer`/`scheme`/`ref`, a `verifyingKey`, an anchored `committedAt`, a content-addressed `headCommitment` chaining the record into an ordered history, a `publishedHeadLocation` (independent locations a caller compares to catch a fork), and an explicit `genesisMarker` (a fixed, checkable constant distinguishing start-of-chain from truncation).

The reference implementation's example is a real `AgentCard` extension declaration pointing at entry #40 of [invinoveritas](https://api.babyblueviper.com/ledger)'s own reputation ledger — the documented root its content-addressed head-chain starts from. `python3 v1/reference-python/verify_reputation_pointer.py` independently recomputes `headCommitment` and `genesisMarker` from the record's own bytes and confirms both are tamper-sensitive.

Originated from a real design discussion: #1962.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.