<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp "&#160;">
  <!ENTITY zwsp "&#8203;">
  <!ENTITY nbhy "&#8209;">
  <!ENTITY wj "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     version="3"
     category="info"
     docName="draft-gupta-mih-maprg-nfc-agent-evidence-00"
     ipr="trust200902"
     submissionType="IETF"
     consensus="false"
     tocInclude="true"
     sortRefs="true"
     symRefs="true">

  <front>
    <title abbrev="Tap-to-Record Agent Evidence">From Tap to Record: Layered Evidence for Agent Discovery and Payment over Near-Field Communication</title>
    <seriesInfo name="Internet-Draft" value="draft-gupta-mih-maprg-nfc-agent-evidence-00"/>

    <author fullname="Manu Sheel Gupta" initials="M. S." surname="Gupta">
      <organization>libp2p</organization>
      <address>
        <email>manu@libp2p.io</email>
      </address>
    </author>

    <author fullname="Steven Mih" initials="S." surname="Mih">
      <organization>Action State Group, Inc.</organization>
      <address>
        <email>steven@actionstate.ai</email>
      </address>
    </author>

    <date year="2026" month="November" day="2"/>

    <workgroup>Network Working Group</workgroup>
    <keyword>NFC</keyword>
    <keyword>agents</keyword>
    <keyword>evidence</keyword>
    <keyword>libp2p</keyword>
    <keyword>measurement</keyword>

    <abstract>
      <t>When an AI agent finds a counterparty, interacts with it, and pays it, the interaction crosses every layer of the stack: a physical tap between two devices, the hardware that holds their keys, a transport session, peer discovery and gossip, and finally an application record of what was agreed, paid, and delivered. Each layer produces its own evidence, and today nothing joins them. This document puts the near-field tap at the center and follows one progression, from tap to rendezvous, authenticated session, interaction, payment, and evidence record. For each layer it states what evidence the layer can contribute, what a verifier has to trust, and how a single verifiable record can cite all of it by digest. It treats hardware attestation and a transparency log checked by independent witnesses as complementary roots of evidence that answer different questions, describes how light nodes can check one interaction through evidence requests instead of replicating a swarm, and asks which measurable observations can independently corroborate such a record. It is a problem statement and research agenda for discussion in MAPRG, not a protocol specification.</t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro">
      <name>Introduction</name>
      <t>Agents are starting to meet and transact in person as well as online. Two people's agents find each other across a table and exchange a credential; a delivery robot hands a parcel to a building's concierge agent; a phone agent pays a vending agent. The natural first step in each case is a near-field tap. The tap is short-range, needs physical presence, and can carry a key.</t>
      <t>The first thing a tap does is let two agents find each other. After the tap the interaction moves up the stack along one progression:</t>
      <figure anchor="fig-progression">
        <name>From tap to evidence record</name>
        <artwork type="ascii-art"><![CDATA[
  tap -> rendezvous -> authenticated session -> interaction
      -> payment -> evidence record
]]></artwork>
      </figure>
      <t>The two devices use what the tap carried to open an encrypted transport session to each other, possibly find other peers through a distributed hash table, share state over gossip, interact, and, in some cases, pay and deliver. Afterwards someone who was not present, such as an auditor, a dispute handler, or the payer's own employer, may need to check what happened.</t>
      <t>Evidence exists at every one of those layers. A secure element can sign what it read. A processor can trace what it executed. A transport handshake binds a session to a key. A DHT record and a gossip message can be signed. An application can seal a record of the agreement. What is missing is the connection: a checker today gets either every layer's raw logs or nothing, and has no way to know that the key in the tap is the key in the session is the key that signed the payment record.</t>
      <t>This document argues that the tap is the right anchor to build that connection from, because it is the one moment where both parties are physically present. Discovery is the general case and the one this document leads with; payment is the second scenario, and the one that shows most clearly why knowing that a tap occurred is not enough. The contribution is the layered evidence model, not an NFC payment protocol.</t>
      <t><xref target="tap"/> through <xref target="record"/> walk the stack. <xref target="light"/> covers checkers who cannot hold everything. <xref target="example"/> gives two end-to-end cases. <xref target="measure"/> asks what can be measured, which is the reason this belongs in MAPRG.</t>
      <t>This document marks each component as implemented, prototype, or future work. The core of this revision is the tap, the tap record, secure-element evidence, the move from the tap to an authenticated transport session, the record and bundle that cite them, and how these layers relate. Processor tracing, richer attestation, witnessed logs beyond the basics, gossip, and most of the light-node work are future work and are described only so the model shows where they fit.</t>
    </section>

    <section anchor="terms">
      <name>Terminology</name>
      <dl newline="false">
        <dt>Tap:</dt>
        <dd>A near-field exchange between two devices in physical proximity, carrying at least one public key and one nonce.</dd>
        <dt>Record:</dt>
        <dd>A signed, digest-committed statement by one party about an action it took or observed, such as an Agent Action Capsule <xref target="I-D.mih-scitt-agent-action-capsule"/>.</dd>
        <dt>Tap record:</dt>
        <dd>A record of a tap, made by one of the two parties to it. It is an ordinary record with a tap-specific field (<xref target="tap-record"/>).</dd>
        <dt>Citation:</dt>
        <dd>A typed digest reference from a record to an artifact produced at another layer: the artifact's type, a digest algorithm, and the digest.</dd>
        <dt>Checker:</dt>
        <dd>Any party that verifies an interaction after the fact without having been part of it.</dd>
        <dt>Light node:</dt>
        <dd>A checker or peer that verifies specific records on request rather than holding a full copy of a swarm's state.</dd>
      </dl>
    </section>

    <section anchor="tap">
      <name>The Tap</name>

      <section anchor="tap-carry">
        <name>What a Tap Can Carry</name>
        <t>A tap is small, so what it carries has to be chosen. The useful minimum:</t>
        <ul>
          <li>the initiating device's transport public key, which becomes its identity in the session that follows (<xref target="transport"/>);</li>
          <li>a fresh nonce from each side, so that a record of the tap cannot be replayed into a different interaction;</li>
          <li>optionally an endpoint hint for reaching the device off the near-field link;</li>
          <li>optionally a monotonic counter, where the hardware keeps one; and</li>
          <li>optionally a signature from the device's secure element over the above, for example as an NFC Forum Signature record <xref target="NFC-SIG-RTD"/>.</li>
        </ul>
        <t>For payments, the tap may additionally carry the payment terms, or start a contactless payment whose cryptogram is itself evidence produced by hardware.</t>
      </section>

      <section anchor="tap-establishes">
        <name>What a Tap Establishes, and What It Does Not</name>
        <t>A recorded tap establishes that a device holding a given key took part in a near-field exchange that included a given nonce. With a secure-element signature, it also establishes which hardware produced that statement, to the extent the signing key's provenance is known.</t>
        <t>It does not establish distance. A relay attack can stretch a near-field exchange across any distance unless the protocol bounds round-trip time. It does not establish who the person is, or that the key holder was authorized to act for anyone. It does not by itself establish trust in the peer. Each record that cites a tap has to say which of these it relies on.</t>
      </section>

      <section anchor="tap-discovery">
        <name>The Tap as Discovery and Rendezvous</name>
        <t>For two agents in the same place, a tap replaces a lookup. Instead of asking a DHT for a peer, the device already has the peer's key and can dial it directly. This removes one source of manipulation (a poisoned lookup) and one privacy leak (announcing interest in a peer to the swarm), at the cost of requiring presence. The tap exchanges the minimum needed to set up a rendezvous; everything stronger happens in the authenticated session that follows.</t>
      </section>

      <section anchor="tap-record">
        <name>Recording the Tap</name>
        <t>A tap record is an ordinary record with a tap-specific field. No new record type is needed. Each side seals its own tap record: its own key, the peer's key, both nonces, and the time by its own clock. Neither signs the other's record. A checker that holds both records can confirm they name the same keys and nonces; a checker that holds one has one party's account. This is the same two-sided pattern used for settlement in <xref target="I-D.mih-agent-settlement-records"/>.</t>
        <t>The tap-specific field separates two kinds of content:</t>
        <dl newline="true">
          <dt>Intrinsic to the tap:</dt>
          <dd>what the near-field exchange itself carried: the keys, both nonces, the counter where there is one, and the secure-element signature where there is one.</dd>
          <dt>Corroborated later:</dt>
          <dd>what another layer establishes afterwards and the record cites by digest: that the authenticated session was bound to the tapped key (<xref target="transport"/>), a hardware attestation (<xref target="hw-attest"/>), or an execution trace (<xref target="hw-trace"/>).</dd>
        </dl>
        <t>Keeping these apart is what makes the security analysis in <xref target="security"/> tractable. Replay, relay, and substitution attacks act on different parts: a replay reuses intrinsic content in a new interaction, a relay stretches the intrinsic exchange across distance, and a substitution swaps the corroborating artifact. A checker can see which part a given claim rests on.</t>
      </section>
    </section>

    <section anchor="below">
      <name>Below the Tap: Hardware</name>

      <section anchor="hw-attest">
        <name>Platform and Secure-Element Attestation</name>
        <t>A trusted execution environment, a TPM, or a secure element can sign a statement about its own state, in the RATS sense <xref target="RFC9334"/>, for example as an Entity Attestation Token <xref target="RFC9711"/>. A record cites such a statement by digest, and a checker verifies it with the issuer's own verifier. The runtime extension for Agent Action Capsules <xref target="I-D.palanisamy-scitt-aac-runtime"/> already defines this citation (attestation_refs), and a verifier there never reports a grade higher than the foreign verifier's result. Secure-element evidence for the tap is in scope for this revision; richer platform attestation is future work.</t>
      </section>

      <section anchor="hw-trace">
        <name>Processor-Level Tracing (Future Work)</name>
        <t>Processor trace facilities can record the control flow a core actually executed. As evidence, a trace answers "what code ran" more directly than any software log, but traces are large, and tying a trace to one interaction needs the same nonce discipline as the tap. A record can cite a trace, or a digest of a trace summary, without carrying it.</t>
      </section>

      <section anchor="hw-witness">
        <name>Complementary Roots of Evidence: Hardware Attestation and a Witnessed Log</name>
        <t>Hardware attestation and a witnessed transparency log are complementary roots of evidence that answer different questions. They are not interchangeable roots of trust.</t>
        <t>Hardware attestation answers what ran, under keys whose provenance runs back to a manufacturer. Not every device has such hardware, and not every checker trusts the manufacturer.</t>
        <t>A witnessed log answers a different question. Each record is appended to a log whose checkpoints are cosigned by independent witnesses, or registered with more than one transparency service <xref target="RFC9943"/>. That does not say what ran. It says that a record existed by a certain time and has not changed since, and it depends on no single operator.</t>
        <t>The two compose. A record can cite a hardware statement and also be covered by a witnessed log; the first speaks to the device, the second to the record's history. A checker should report each claim against the root that supports it and should not present one as a substitute for the other.</t>
      </section>
    </section>

    <section anchor="above">
      <name>Above the Tap: Network</name>

      <section anchor="transport">
        <name>From Tap to Authenticated Session: Transports Dialed by Key</name>
        <t>With a transport that dials peers by public key, such as libp2p or Iroh <xref target="IROH"/> over QUIC <xref target="RFC9000"/>, the key exchanged in the tap is the address and the session's authenticated identity. The handshake then binds the session to the same key the tap carried. A record that names its counterparty by that key is naming the peer it physically tapped, if the tap record is available. This step is in scope for this revision.</t>
      </section>

      <section anchor="dht">
        <name>Discovery Beyond the Tap: DHTs in Private Swarms</name>
        <t>Beyond the tapped peer, agents find others through a Kademlia-style DHT <xref target="KADEMLIA"/>, often within a private swarm. A signed provider record says what a peer advertised, not what it later did. Lookups are a privacy cost (they reveal interest) and an integrity risk (a poisoned routing table returns attacker-chosen peers). The tap avoids both for local peers; the DHT remains for everyone else.</t>
      </section>

      <section anchor="gossip">
        <name>Dissemination: Gossip and Pub/Sub (Future Work)</name>
        <t>Gossip protocols such as gossipsub <xref target="GOSSIPSUB"/> spread state through a swarm. Signed messages give per-message authenticity, but full gossip means every node receives every message, which is the resource cost light nodes (<xref target="light"/>) are meant to avoid. Gossip is also where operational telemetry about the network itself can be published in a verifiable form, the subject of <xref target="MAPRG-126"/>.</t>
      </section>
    </section>

    <section anchor="record">
      <name>The Evidence Layer: One Record That Cites Every Layer</name>
      <t>At the top, each party seals a record of the action itself: what was agreed, paid, or delivered <xref target="I-D.mih-scitt-agent-action-capsule"/> <xref target="I-D.mih-agent-settlement-records"/>. Each party appends its records to its own checkpointed log <xref target="I-D.mih-scitt-checkpointed-local-log"/>, so that removing or rewriting one later is detectable. The record cites the lower layers by digest. The last column marks what is in scope for this revision.</t>
      <table anchor="tab-layers">
        <name>Layers, artifacts, citations, and scope</name>
        <thead>
          <tr><th>Layer</th><th>Artifact</th><th>Cited as</th><th>Scope</th></tr>
        </thead>
        <tbody>
          <tr><td>Tap</td><td>each side's tap record</td><td>typed digest reference to the record</td><td>core</td></tr>
          <tr><td>Secure element</td><td>signed NFC record or attestation token</td><td>attestation_refs entry</td><td>core</td></tr>
          <tr><td>Transport</td><td>peer's public key</td><td>counterparty key in the record</td><td>core</td></tr>
          <tr><td>Log</td><td>checkpoint and inclusion proof</td><td>carried in an evidence bundle</td><td>core</td></tr>
          <tr><td>Discovery</td><td>provider record, when the peer was not tapped</td><td>typed digest reference</td><td>future</td></tr>
          <tr><td>Gossip</td><td>message identifier</td><td>typed digest reference</td><td>future</td></tr>
          <tr><td>Processor</td><td>trace or trace summary</td><td>typed digest reference</td><td>future</td></tr>
        </tbody>
      </table>
      <t>An evidence bundle <xref target="I-D.mih-zhang-agent-disclosure-bundle"/> packages a record with the artifacts it cites that the holder chooses to disclose, plus the proofs a checker needs, so the whole chain can be checked offline.</t>
    </section>

    <section anchor="light">
      <name>Light Nodes: Checking One Interaction Without the Swarm</name>
      <t>A checker rarely needs the whole swarm. It needs one interaction. Rather than downloading every message, a light node asks for evidence about the specific records it cares about, using the request model of <xref target="I-D.mih-agent-evidence-request"/>: a request names the records, the holder answers with a bundle, refuses, or reports that the records do not exist, and each of those outcomes is itself recorded.</t>
      <t>The minimum a light node needs to check one record is the record, its inclusion proof, the checkpoint that covers it, and either a witness cosignature on that checkpoint or a transparency service receipt <xref target="RFC9942"/>. That is small and fixed in size, whatever the size of the swarm. Partial messages in the gossip layer and evidence requests at the record layer are two forms of the same idea.</t>
      <t>A partial verifier establishes a bounded claim about one interaction. It never establishes the global state of the swarm, and its result must not be presented as if it had.</t>
    </section>

    <section anchor="example">
      <name>Worked Examples</name>

      <section anchor="example-discovery">
        <name>Discovery: Two Agents Meet</name>
        <t>Two people's agents tap phones. The tap carries each device's transport key and a nonce from each side. Each phone dials the other by key over an authenticated QUIC session, and the session handshake binds the session to the tapped key. The agents exchange a credential over that session. Each side seals its own tap record and a record of the exchange that cites the tap record by digest, and appends both to its own log. A checker who later holds both sides' records can confirm that the key in the tap is the key in the session is the key that signed the exchange record. It cannot confirm, from these records alone, that the two devices were near each other unless the tap bounded round-trip time.</t>
      </section>

      <section anchor="example-payment">
        <name>Payment: Tap to Pay Between Two Agents</name>
        <t>A phone agent taps a vending agent. The tap carries the vending agent's key, both nonces, and the price terms. The phone dials the vending agent over a key-addressed QUIC session; the phone pays (for example x402 on a testnet, as in <xref target="I-D.mih-agent-settlement-records"/>); the vending agent delivers. Each side seals its own records of the tap, the terms, the payment it observed, and the delivery, and appends them to its log. A light node later requests the payee's records and checks them offline.</t>
        <t>Payment shows why knowing that a tap occurred is not enough: a checker has to connect the payment to the identities, the transport session, and the record of what was delivered, and the citations in <xref target="tab-layers"/> are what make that connection checkable.</t>
      </section>

      <section anchor="example-status">
        <name>What Exists Today</name>
        <t>The payment rail has run end to end in a reference implementation (implemented). The tap record, the secure-element signature, and the binding of the session to the tapped key have not yet run together (prototype at best). The processor trace has not been built (future). Both devices in any run the authors show will be operated by the authors, so the examples demonstrate separate devices, not separate parties.</t>
      </section>
    </section>

    <section anchor="measure">
      <name>Measurement Questions</name>
      <t>The central question for MAPRG is which measurable observations can independently corroborate a record made at the tap or the application layer, and what limits those observations have. A record is one party's statement. A network observation made by someone else can support it, contradict it, or say nothing about it. The questions below are organized around that.</t>
      <ol>
        <li>Session corroboration: can transport-level observations (handshakes, connection events, peer identifiers) confirm that an authenticated session to the tapped key took place when a record says it did?</li>
        <li>Tap-to-session latency: how long from the tap to an authenticated transport session, with and without a secure-element signature?</li>
        <li>Evidence size per layer: bytes added by each citation, and by the bundle a light node receives for one interaction.</li>
        <li>Light node versus full replication: bandwidth and time to check one interaction through an evidence request, against receiving the same state by gossip.</li>
        <li>Tap discovery versus DHT discovery: success rate, latency, and lookup leakage for local peers.</li>
        <li>Relay exposure: how often a tap without round-trip bounding can be relayed in realistic settings, and what bounding costs.</li>
        <li>Witness coverage: how many independent witnesses a checkpoint gets in practice, and how quickly.</li>
        <li>Trace cost (future work): overhead of processor tracing for an agent workload, and the size of a trace summary that is still useful as evidence.</li>
      </ol>
      <t>Which of these existing libp2p telemetry can already collect, using the framework in <xref target="MAPRG-126"/>, and with what limitations, is an open item for the next revision. None of the questions above is answered by this document.</t>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <t>The main threats follow the layers. Near-field relay attacks defeat proximity unless round-trip time is bounded. A replayed tap reuses intrinsic tap content in a new interaction; fresh nonces from both sides and, where available, a counter limit this. A substitution swaps a corroborating artifact; citing it by digest makes the swap detectable but does not make the artifact true. A compromised secure element signs whatever it is told. A poisoned DHT returns the wrong peer. A party can withhold records; the evidence-request model makes a refusal visible but cannot force disclosure.</t>
      <t>Throughout, a citation only says that a record named an artifact. A checker has to verify the artifact itself, with that layer's own verifier, before relying on it, and must not report a stronger result than that verifier gave.</t>
    </section>

    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>A tap can expose a stable hardware identifier; devices should use per-interaction keys and randomized identifiers. DHT lookups reveal interest. Gossip metadata reveals who talks to whom. Processor traces can contain secrets. Records should carry digests of these artifacts, never the artifacts, and bundles should disclose only what a given checker needs.</t>
    </section>

    <section anchor="impl">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations at the time of posting, per <xref target="RFC7942"/>, and is to be removed before publication.</t>
      <t>The evidence layer has reference implementations, and the settlement records have run end to end on two payment rails. No implementation of the tap record, the secure-element citation, or the processor-trace citation described here is known to the authors.</t>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

  </middle>

  <back>
    <references>
      <name>Informative References</name>

      <reference anchor="GOSSIPSUB" target="https://github.com/libp2p/specs/tree/master/pubsub/gossipsub">
        <front>
          <title>gossipsub: An extensible baseline pubsub protocol</title>
          <author><organization>libp2p</organization></author>
        </front>
      </reference>

      <reference anchor="I-D.mih-agent-evidence-request" target="https://datatracker.ietf.org/doc/draft-mih-agent-evidence-request/">
        <front>
          <title>An Interaction Model for Requesting Verifiable Evidence</title>
          <author fullname="Steven Mih" initials="S." surname="Mih"/>
          <date year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mih-agent-evidence-request-02"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.mih-agent-settlement-records" target="https://datatracker.ietf.org/doc/draft-mih-agent-settlement-records/">
        <front>
          <title>Two-Party Settlement Records for Agent Payments</title>
          <author fullname="Steven Mih" initials="S." surname="Mih"/>
          <date year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mih-agent-settlement-records-00"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.mih-scitt-agent-action-capsule" target="https://datatracker.ietf.org/doc/draft-mih-scitt-agent-action-capsule/">
        <front>
          <title>An Agent Action Capsule Profile for SCITT</title>
          <author fullname="Steven Mih" initials="S." surname="Mih"/>
          <date year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mih-scitt-agent-action-capsule-05"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.mih-scitt-checkpointed-local-log" target="https://datatracker.ietf.org/doc/draft-mih-scitt-checkpointed-local-log/">
        <front>
          <title>The Checkpointed Local Log (CLL)</title>
          <author fullname="Steven Mih" initials="S." surname="Mih"/>
          <date year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mih-scitt-checkpointed-local-log-02"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.mih-zhang-agent-disclosure-bundle" target="https://datatracker.ietf.org/doc/draft-mih-zhang-agent-disclosure-bundle/">
        <front>
          <title>AAC Evidence Bundle</title>
          <author fullname="Steven Mih" initials="S." surname="Mih"/>
          <author initials="Y." surname="Zhang"/>
          <date year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mih-zhang-agent-disclosure-bundle-02"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.palanisamy-scitt-aac-runtime" target="https://datatracker.ietf.org/doc/draft-palanisamy-scitt-aac-runtime/">
        <front>
          <title>The model_attestation Block for Agent Action Capsules: Model, Runtime, and Hardware Claims</title>
          <author initials="G." surname="Palanisamy"/>
          <author fullname="Steven Mih" initials="S." surname="Mih"/>
          <date year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-palanisamy-scitt-aac-runtime-00"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="IROH" target="https://github.com/n0-computer/iroh">
        <front>
          <title>iroh: peer-to-peer QUIC connections dialed by public key</title>
          <author><organization>number 0</organization></author>
        </front>
      </reference>

      <reference anchor="KADEMLIA" target="https://doi.org/10.1007/3-540-45748-8_5">
        <front>
          <title>Kademlia: A Peer-to-Peer Information System Based on the XOR Metric</title>
          <author initials="P." surname="Maymounkov"/>
          <author initials="D." surname="Mazieres"/>
          <date year="2002"/>
        </front>
        <refcontent>IPTPS 2002, LNCS 2429</refcontent>
      </reference>

      <reference anchor="MAPRG-126" target="https://datatracker.ietf.org/meeting/126/materials/slides-126-maprg-maprg-towards-a-common-measurement-framework-for-large-scale-libp2p-deployments-using-cbor-based-verifiable-telemetry--johanna-m-01">
        <front>
          <title>From Operational Exhaust to Verifiable Evidence: A Common Measurement Framework for Large-Scale libp2p Deployments</title>
          <author initials="J." surname="Moran"/>
          <author initials="M. S." surname="Gupta"/>
          <date year="2026" month="July"/>
        </front>
        <refcontent>IRTF MAPRG, IETF 126</refcontent>
      </reference>

      <reference anchor="NFC-SIG-RTD" target="https://nfc-forum.org/build/specifications/signature-record-type-definition-technical-specification/">
        <front>
          <title>Signature Record Type Definition Technical Specification</title>
          <author><organization>NFC Forum</organization></author>
        </front>
      </reference>

      <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942">
        <front>
          <title>Improving Awareness of Running Code: The Implementation Status Section</title>
          <author initials="Y." surname="Sheffer"/>
          <author initials="A." surname="Farrel"/>
          <date year="2016" month="July"/>
        </front>
        <seriesInfo name="BCP" value="205"/>
        <seriesInfo name="RFC" value="7942"/>
        <seriesInfo name="DOI" value="10.17487/RFC7942"/>
      </reference>

      <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author initials="J." surname="Iyengar" role="editor"/>
          <author initials="M." surname="Thomson" role="editor"/>
          <date year="2021" month="May"/>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>

      <reference anchor="RFC9334" target="https://www.rfc-editor.org/info/rfc9334">
        <front>
          <title>Remote ATtestation procedureS (RATS) Architecture</title>
          <author initials="H." surname="Birkholz"/>
          <author initials="D." surname="Thaler"/>
          <author initials="M." surname="Richardson"/>
          <author initials="N." surname="Smith"/>
          <author initials="W." surname="Pan"/>
          <date year="2023" month="January"/>
        </front>
        <seriesInfo name="RFC" value="9334"/>
        <seriesInfo name="DOI" value="10.17487/RFC9334"/>
      </reference>

      <reference anchor="RFC9711" target="https://www.rfc-editor.org/info/rfc9711">
        <front>
          <title>The Entity Attestation Token (EAT)</title>
          <author initials="L." surname="Lundblade"/>
          <author initials="G." surname="Mandyam"/>
          <author initials="J." surname="O'Donoghue"/>
          <author initials="C." surname="Wallace"/>
          <date year="2025" month="April"/>
        </front>
        <seriesInfo name="RFC" value="9711"/>
        <seriesInfo name="DOI" value="10.17487/RFC9711"/>
      </reference>

      <reference anchor="RFC9942" target="https://www.rfc-editor.org/info/rfc9942">
        <front>
          <title>CBOR Object Signing and Encryption (COSE) Receipts</title>
          <author initials="O." surname="Steele"/>
          <author initials="H." surname="Birkholz"/>
          <author initials="A." surname="Delignat-Lavaud"/>
          <author initials="C." surname="Fournet"/>
          <date year="2026" month="June"/>
        </front>
        <seriesInfo name="RFC" value="9942"/>
        <seriesInfo name="DOI" value="10.17487/RFC9942"/>
      </reference>

      <reference anchor="RFC9943" target="https://www.rfc-editor.org/info/rfc9943">
        <front>
          <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
          <author initials="H." surname="Birkholz"/>
          <author initials="A." surname="Delignat-Lavaud"/>
          <author initials="C." surname="Fournet"/>
          <author initials="Y." surname="Deshpande"/>
          <author initials="S." surname="Lasker"/>
          <date year="2026" month="June"/>
        </front>
        <seriesInfo name="RFC" value="9943"/>
        <seriesInfo name="DOI" value="10.17487/RFC9943"/>
      </reference>
    </references>

    <section anchor="ack" numbered="false">
      <name>Acknowledgments</name>
      <t>The authors thank Johanna Moran (libp2p) for her contributions to the ideas in this document, in particular the work on verifiable telemetry and measurement for libp2p deployments on which <xref target="measure"/> builds.</t>
    </section>
  </back>
</rfc>
