TheQuilt Working draft

Overview

What is Corroborated Discovery

The fit, the method, and the atomic verifiable object for agent discovery.

How it fits NANDA

NANDA's discovery is a quilt of registries: the NANDA Index and AgentFacts alongside the Agent Name Service (ANS), DNS-AID, and other registries — so an agent can be found across many sources rather than one. That breadth is the strength, and the exposure: the more sources point at an agent, the more places a wrong answer can enter, and no single record proves the others agree.

Corroborated Discovery spans that quilt and proves it. The bridge (sm-bridge) reaches every substrate — NANDA, ANS, DNS-AID — and corroboration asks them the same question and checks that their answers hold together. It does not replace discovery; it makes the quilt self-checking.

  NANDA — the internet of AI agents
    │
    ├─  NANDA Index · AgentFacts · ANS · DNS-AID     the quilt of registries
    │        └── reached by sm-bridge ──┘           "who is this agent, where, across many sources"
    │
    └─  Corroborated Discovery                       the proof layer
                                                     "do the sources agree — or is one lying?"

The index points, the registry proves. Discovery finds candidate answers; corroboration decides whether to believe them.

The method

A sweep takes a watch set of subjects and, for each, queries every configured registry the same way, from every configured vantage. Each answer is classified — the source serves the record, positively denies it, or fails to answer (which is no claim, never a denial). The classified claims are then compared:

Present vs. absent

Omission

A subject one source serves and another confirms absent. An unreachable source is excluded from the comparison — a timeout is not a claim that a record is gone.

Field disagreement

Endpoint / identity divergence

Sources agree a subject exists but disagree on a field — the endpoint it serves, or the key identity (DID) a valid attestation binds. Tampering and equivocation surface here.

Vantage disagreement

Source equivocation

One source's own answers, seen from different vantages, contradict each other — the tell that a registry is giving different callers different answers.

Declared divergence

Not every difference between two registries is a lie. A registry under a data-residency obligation serves a different endpoint in one region than another, by design and often by law. A procedure that reports every such difference as equivocation fires during normal operation, and a detector that fires during normal operation gets switched off.

So a source may publish an Answer Scope: a signed statement, made in advance, of which fields it varies and along which context. Three properties keep that from becoming an exemption.

An axis, not a mapping

What can be declared

“Endpoint varies by region” is checkable: a verifier observes from another region and compares. “EU callers get this address” would be a promise about values, made by the party doing the varying, and adds a label to a finding without adding any way to test it.

Occupiable only

What cannot

The context must be one a third party can construct and observe from. Region and network qualify. Caller identity, tenant and subscription tier do not — a declaration about one could only be believed, and a corroborator crediting it would be repeating the source's own assertion back as evidence.

Annotate, never absolve

What it changes

The finding is still raised and the verdict is unchanged. The declaration marks it, and records which revision was matched. Whether a declared difference is acceptable is the consumer's judgement, not the corroborator's.

Why it never removes a comparison. A source that disagrees with itself normally contributes nothing to the cross-source comparison — a source that contradicts itself cannot corroborate. Suppressing its finding while leaving that exclusion in place would let a registry declare variation, serve one region a forged address, and be reported as agreement, because nothing would remain to compare it against. A declaration therefore redirects the comparison into that context rather than removing it: the EU answer is checked against other sources' EU answers.

What is specified and not yet built. A source that varies contrary to a scope it published itself has broken a rule it set, which is a stronger finding than an undeclared difference. -01 specifies it and also forbids raising it without evidence that the scope predates the observation — otherwise a narrower scope published after the fact manufactures an accusation against an honest source. Establishing that order needs a witnessed record of what each source published and when. Nothing in the reference implementation provides one yet, so the finding is defined and not emitted.

The atomic object: the Corroboration Record

A sweep produces one signed, content-addressed Corroboration Record per subject — a self-contained verdict a third party re-verifies offline, without trusting the party that swept. It is signed with Ed25519 over the JCS-canonical body, the same canonical path the records it compares already use.

corroboration_record {
  subject
  observed_at
  claims:          [ per source, per vantage: present | absent | error ]
  verdict:         AGREE | DIVERGENT | INSUFFICIENT
  findings:        [ omission | endpoint | did | source_equivocation ]
  staleness_window
  sweeping_party_identity
  sig                                (Ed25519 over JCS(record sans sig))
}

A finding is suspected when first seen and confirmed once re-observed past the staleness window — so legitimate propagation delay is not mistaken for a lie. Two records from one sweeping party that disagree about the same subject at the same instant are themselves evidence.

What it consumes, produces, and does not do

Consumes

Registry answers

What each configured registry and name service claims about the watch set — the raw by-id records, attestations included.

Produces

The Corroboration Record

One signed, content-addressed verdict per subject, re-verifiable offline — the artifact that turns an assumed answer into a corroborated one.

Does not do

Merit, capability, behavior

It does not rank agents, judge capabilities, or vouch for conduct. It attests only whether the sources describing a subject agree.

Ecosystem positioning: Corroborated Discovery is NANDA's proof layer — it makes the quilt of registries self-checking, complementing the discovery and identity the Index and AgentFacts already provide. A layer above the registries, not a competitor to any of them.