<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-deforth-arp-reasoning-protocol-00"
     ipr="trust200902"
     submissionType="independent"
     version="3">

  <front>
    <title abbrev="ARP v2.0">Agentic Reasoning Protocol (ARP) Version 2.0</title>
    <seriesInfo name="Internet-Draft" value="draft-deforth-arp-reasoning-protocol-00"/>

    <author fullname="Sascha Deforth" initials="S." surname="Deforth">
      <organization>Independent</organization>
      <address>
        <postal>
          <city>Dusseldorf</city>
          <country>DE</country>
        </postal>
        <uri>https://arp-protocol.org</uri>
      </address>
    </author>

    <date year="2026" month="April" day="27"/>

    <area>Applications</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>AI agents</keyword>
    <keyword>RAG</keyword>
    <keyword>reasoning</keyword>
    <keyword>cryptographic attestation</keyword>
    <keyword>DID</keyword>
    <keyword>well-known URI</keyword>

    <abstract>
      <t>This document defines the Agentic Reasoning Protocol (ARP) version
      2.0, a machine-readable protocol enabling entities (brands,
      organizations, persons) to publish self-attested context, verified
      factual corrections, domain expertise, and recommendation boundaries
      directly to autonomous AI agents, RAG (Retrieval-Augmented Generation)
      pipelines, and agentic AI systems.</t>

      <t>ARP v2.0 extends the static file model of v1.x with a live REST API,
      bidirectional feedback channels, multi-party cryptographic attestation,
      W3C Decentralized Identifier (DID) anchoring, Agent-to-Agent (A2A)
      trust handshakes, event-driven freshness via Server-Sent Events, and
      first-class internationalization support.</t>

      <t>ARP complements existing web conventions (robots.txt
      <xref target="RFC9309"/>, schema.org, llms.txt) but is specifically
      designed for the reasoning behavior of modern AI agents -- systems
      that do not merely index content but synthesize, infer, and make
      decisions on behalf of users.</t>

      <t>All examples in this document use example.com and "Example
      Organization" per <xref target="RFC2606"/> and are purely
      illustrative.</t>
    </abstract>

    <note removeInRFC="true">
      <name>About This Document</name>
      <t>This Internet-Draft is submitted as an individual submission. It
      does not represent consensus of the IETF community. The latest revision
      of this draft can be found at
      <eref target="https://github.com/SaschaDeforth/arp-protocol"/>.</t>

      <t>Discussion of this document takes place on the GitHub repository
      issue tracker at
      <eref target="https://github.com/SaschaDeforth/arp-protocol/issues"/>.</t>
    </note>
  </front>

  <middle>

    <!-- ============================================================ -->
    <section anchor="introduction">
      <name>Introduction</name>

      <section anchor="motivation">
        <name>Motivation: The Reasoning Gap</name>
        <t>The modern web has a rich ecosystem of machine-readable metadata
        conventions:</t>

        <ul spacing="normal">
          <li>robots.txt <xref target="RFC9309"/> controls crawler access.</li>
          <li>schema.org describes entity semantics.</li>
          <li>llms.txt provides clean Markdown ingestion for LLM context
          windows.</li>
        </ul>

        <t>None of these conventions address how AI systems should REASON
        about entities. Modern AI agents (agentic AI, RAG pipelines,
        AI-powered search, autonomous procurement agents) do not merely read
        the web -- they synthesize, infer, compare, and make decisions. This
        reasoning process is prone to hallucination and entirely outside the
        control of the entities being reasoned about.</t>

        <t>Documented failure modes include:</t>
        <ul spacing="normal">
          <li>AI systems generating false facts about organizations, such as
          incorrect founding dates, wrong business models, or non-existent
          certifications.</li>
          <li>AI agents making incorrect competitive comparisons based on
          stale or synthesized training data.</li>
          <li>Brands lacking any mechanism to provide verified corrections
          to AI systems that have encoded false information during
          training.</li>
          <li>Autonomous agents evaluating vendors without access to the
          vendor's own authoritative context.</li>
        </ul>

        <t>ARP addresses this gap by defining a protocol through which
        entities publish self-attested cognitive context: verified
        corrections, domain expertise, recommendation boundaries, and
        trust-enabling metadata -- directly to AI agents and RAG
        pipelines.</t>
      </section>

      <section anchor="design-philosophy">
        <name>Design Philosophy: Counterfactual Inversion</name>
        <t>ARP v2.0 was designed using counterfactual inversion: each
        assumption of v1.x was tested by asking "what if this assumption is
        wrong?" The six resulting inversions:</t>

        <ol spacing="normal" type="(%d)">
          <li>
            <t><strong>Static file -&gt; Live API.</strong> v1.x broadcast
            all claims to all agents. v2.0 enables agents to query for
            specific context relevant to their current task.</t>
          </li>
          <li>
            <t><strong>Domain = Identity -&gt; W3C DID.</strong> v1.x bound
            entity identity to domain ownership. v2.0 anchors identity to a
            W3C Decentralized Identifier <xref target="W3C.DID-CORE"/>,
            making it portable across domains and domain changes.</t>
          </li>
          <li>
            <t><strong>90-day TTL -&gt; Event-driven push.</strong> v1.x
            relied on periodic re-signing. v2.0 uses Server-Sent Events
            <xref target="W3C.SSE"/> to push updates to subscribing
            agents.</t>
          </li>
          <li>
            <t><strong>Self-attestation -&gt; Multi-party co-signing.</strong>
            v1.x relied solely on the entity's own signature. v2.0
            introduces third-party attesters (accreditation bodies, trade
            registries) who co-sign individual claims.</t>
          </li>
          <li>
            <t><strong>One-way broadcast -&gt; Bidirectional feedback.</strong>
            v1.x had no feedback channel. v2.0 enables agents to return
            anonymized confidence scores and hallucination flags.</t>
          </li>
          <li>
            <t><strong>Implicit English -&gt; i18n first-class.</strong> v1.x
            had no internationalization. v2.0 treats language as a fundamental
            property of every claim.</t>
          </li>
        </ol>
      </section>

      <section anchor="relationship-v1">
        <name>Relationship to ARP v1.x</name>
        <t>ARP v2.0 is fully backward compatible with ARP v1.x:</t>
        <ul spacing="normal">
          <li>All v1.2 fields remain valid.</li>
          <li>/.well-known/reasoning.json is preserved as the compatibility
          alias.</li>
          <li>v1.2 Ed25519 signatures remain valid at CRYPTOGRAPHIC level.</li>
          <li>New fields are additive; v1.x implementations remain valid.</li>
        </ul>
        <t>Loaders MUST NOT reject v1.2 files for missing v2.0 fields.</t>
      </section>

      <section anchor="relationship-other">
        <name>Relationship to Other Standards</name>
        <table anchor="tab-related-standards">
          <name>ARP v2.0 Relationship to Other Standards</name>
          <thead>
            <tr><th>Standard</th><th>Relationship to ARP</th></tr>
          </thead>
          <tbody>
            <tr><td>robots.txt <xref target="RFC9309"/></td><td>ARP does not control crawler access</td></tr>
            <tr><td>schema.org</td><td>ARP extends with reasoning context layer</td></tr>
            <tr><td>llms.txt</td><td>ARP provides structured claims; llms.txt provides raw text</td></tr>
            <tr><td>W3C DID <xref target="W3C.DID-CORE"/></td><td>ARP v2.0 uses DID as identity anchor</td></tr>
            <tr><td>W3C VC <xref target="W3C.VC-DATA"/></td><td>ARP attestation model is VC-inspired</td></tr>
            <tr><td>DKIM <xref target="RFC6376"/></td><td>ARP signing follows DKIM model</td></tr>
            <tr><td>DMARC <xref target="RFC7489"/></td><td>ARP domain policy follows DMARC</td></tr>
            <tr><td>security.txt <xref target="RFC9116"/></td><td>Both use /.well-known/ convention</td></tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
      "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
      "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>",
      "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",
      "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and
      "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
      described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
      when, and only when, they appear in all capitals, as shown here.</t>

      <t>All examples use example.com and "Example Organization" as defined
      in <xref target="RFC2606"/>. All attester DIDs use the form
      did:web:attester.example.org. These are illustrative only.</t>

      <dl spacing="normal">
        <dt>Entity:</dt>
        <dd>A brand, organization, person, or other named party that
        publishes an ARP file or API endpoint.</dd>

        <dt>Agent:</dt>
        <dd>An autonomous AI system that queries ARP endpoints to inform
        reasoning, recommendations, or decisions. Includes RAG pipelines,
        agentic commerce systems, AI search engines, and agent-to-agent
        systems.</dd>

        <dt>Claim:</dt>
        <dd>A discrete, addressable, self-attested assertion by an entity
        about itself. Identified by claim_id.</dd>

        <dt>Attester:</dt>
        <dd>A trusted third party who co-signs one or more claims.
        Categories (ascending trust): community, institutional, government,
        sovereign.</dd>

        <dt>Trust Level:</dt>
        <dd>A categorical assessment of cryptographic strength: SOVEREIGN,
        ATTESTED, CRYPTOGRAPHIC, UNSIGNED, INVALID.</dd>

        <dt>Trust Score:</dt>
        <dd>A numeric value in [0.0, 1.0] derived from Trust Level, for use
        in quantitative agent decision pipelines.</dd>

        <dt>Pink Elephant Fix:</dt>
        <dd>The v1.1 pattern that avoids stating false claims by using
        trigger_topic (the affected topic area) paired with verified_fact
        (the correct information).</dd>

        <dt>A2A Handshake:</dt>
        <dd>The ARP Agent-to-Agent protocol by which two AI agents exchange
        and mutually verify entity claims on behalf of their principals.</dd>

        <dt>DID:</dt>
        <dd>W3C Decentralized Identifier <xref target="W3C.DID-CORE"/>. A
        globally unique identifier controlled by the subject.</dd>

        <dt>SSE:</dt>
        <dd>Server-Sent Events <xref target="W3C.SSE"/>. A unidirectional
        HTTP mechanism by which a server pushes events to a persistent
        client connection.</dd>

        <dt>RAG:</dt>
        <dd>Retrieval-Augmented Generation. An AI pattern where external
        documents are retrieved and injected into an LLM context.</dd>

        <dt>Scenario Hash:</dt>
        <dd>A deterministic truncated SHA-256 digest of a normalized user
        query, used to address cached expertise responses.</dd>
      </dl>
    </section>

    <!-- ============================================================ -->
    <section anchor="overview">
      <name>Protocol Overview</name>

      <section anchor="layers">
        <name>Architecture Layers</name>
        <t>ARP v2.0 comprises four architectural layers:</t>

        <artwork align="center" name="figure-1" type="ascii-art"><![CDATA[
+------------------------------------------------------------------+
|                        ENTITY LAYER                              |
|   DID Identity | i18n Claims | Attestations | Event Freshness    |
+------------------------------------------------------------------+
                              |
                              v
+------------------------------------------------------------------+
|                        TRUST LAYER                               |
|  SOVEREIGN(1.0) | ATTESTED(0.9) | CRYPTOGRAPHIC(0.7) |           |
|  UNSIGNED(0.3) | INVALID(0.0) | DNS Signing Policy               |
+------------------------------------------------------------------+
                              |
                              v
+------------------------------------------------------------------+
|                        API LAYER                                 |
|  GET /identity | POST /query | GET /trust | GET /subscribe |     |
|  POST /feedback | POST /a2a/handshake | GET /reasoning.json      |
+------------------------------------------------------------------+
                |                   |                   |
                v                   v                   v
         +-----------+       +-----------+       +-----------+
         | RAG Agent |       |  Commerce |       | Platform  |
         |           |       |  Agent    |       | Grounding |
         +-----------+       +-----------+       +-----------+
                |                                       |
                +------> POST /feedback (anon.) <-------+
]]></artwork>
      </section>

      <section anchor="backward-compat">
        <name>Backward Compatibility</name>
        <t>An ARP v1.2-conformant file <bcp14>MUST</bcp14> be treated as a
        valid ARP v2.0 implementation with these defaults:</t>
        <ul spacing="normal">
          <li>entity_did absent: Trust Level capped at CRYPTOGRAPHIC.</li>
          <li>api_endpoint absent: Only /.well-known/reasoning.json
          available.</li>
          <li>supported_languages absent: Defaults to ["en"].</li>
          <li>feedback_policy absent: Defaults to
          {accepts_feedback: false}.</li>
        </ul>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="did-anchoring">
      <name>Entity Identity: W3C DID Anchoring</name>

      <section anchor="did-method">
        <name>DID Method Requirements</name>
        <t>ARP v2.0 uses W3C Decentralized Identifiers
        <xref target="W3C.DID-CORE"/> as the primary identity anchor. DIDs
        decouple entity identity from domain ownership, enabling persistent
        identity across domain changes and multi-domain presences.</t>

        <t>ARP v2.0 <bcp14>RECOMMENDS</bcp14> did:web
        <xref target="W3C.DID-WEB"/> as it leverages existing HTTPS
        infrastructure. Other resolvable DID methods <bcp14>MAY</bcp14> be
        used.</t>

        <t>Example:</t>
        <sourcecode type="json"><![CDATA[
"entity_did": "did:web:example.com"
]]></sourcecode>
      </section>

      <section anchor="did-document">
        <name>DID Document Requirements</name>
        <t>The DID Document <bcp14>MUST</bcp14> be resolvable and
        <bcp14>MUST</bcp14> contain at least one verificationMethod of type
        Ed25519VerificationKey2020 or JsonWebKey2020.</t>

        <t>Example DID Document at
        https://example.com/.well-known/did.json:</t>

        <sourcecode type="json"><![CDATA[
{
  "@context": ["https://www.w3.org/ns/did/v1"],
  "id": "did:web:example.com",
  "verificationMethod": [
    {
      "id": "did:web:example.com#arp-key-1",
      "type": "Ed25519VerificationKey2020",
      "controller": "did:web:example.com",
      "publicKeyMultibase": "z6MkfExample..."
    }
  ],
  "assertionMethod": ["did:web:example.com#arp-key-1"],
  "service": [
    {
      "id": "did:web:example.com#arp",
      "type": "AgenticReasoningProtocol",
      "serviceEndpoint":
        "https://example.com/.well-known/arp/v2/"
    }
  ]
}
]]></sourcecode>

        <t>The service entry of type "AgenticReasoningProtocol" is
        <bcp14>RECOMMENDED</bcp14> for agent auto-discovery.</t>
      </section>

      <section anchor="multi-domain">
        <name>Multi-Domain Entity Support</name>
        <t>An entity with multiple domains <bcp14>MAY</bcp14> use a single
        canonical DID. Regional or subsidiary ARP implementations
        <bcp14>SHOULD</bcp14> reference it:</t>

        <sourcecode type="json"><![CDATA[
"domain_scope": {
  "canonical_domain": "example.com",
  "this_domain": "example.de",
  "language_primary": "de",
  "regional_corrections": []
}
]]></sourcecode>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="discovery">
      <name>File Location and Discovery</name>

      <section anchor="well-known">
        <name>Well-Known URI</name>
        <t>The compatibility file <bcp14>MUST</bcp14> be served at:</t>
        <sourcecode><![CDATA[
https://{domain}/.well-known/reasoning.json
]]></sourcecode>

        <t>Requirements: valid JSON <xref target="RFC8259"/>, UTF-8
        encoding, Content-Type: application/json, publicly accessible,
        maximum 100 KB.</t>
      </section>

      <section anchor="api-base">
        <name>API Base URI</name>
        <t>The v2.0 API <bcp14>MUST</bcp14> be served at:</t>
        <sourcecode><![CDATA[
https://{domain}/.well-known/arp/v2/
]]></sourcecode>
        <t>All endpoints in <xref target="rest-api"/> are relative to this
        base URI.</t>
      </section>

      <section anchor="html-discovery">
        <name>HTML Auto-Discovery</name>
        <t>Sites <bcp14>SHOULD</bcp14> include in HTML head:</t>
        <sourcecode type="html"><![CDATA[
<link rel="reasoning" type="application/json"
      href="/.well-known/reasoning.json">
<link rel="arp-api" type="application/json"
      href="/.well-known/arp/v2/">
]]></sourcecode>
      </section>

      <section anchor="cors">
        <name>CORS Headers</name>
        <t>All ARP endpoints <bcp14>MUST</bcp14> respond with:</t>
        <sourcecode><![CDATA[
Access-Control-Allow-Origin: *
Content-Type: application/json
]]></sourcecode>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="rest-api">
      <name>REST API Specification</name>
      <t>All endpoints use HTTPS <xref target="RFC9110"/>. Request and
      response bodies are JSON <xref target="RFC8259"/> unless noted. Text
      values use UTF-8.</t>

      <section anchor="common-headers">
        <name>Common Response Headers</name>
        <t>All v2.0 responses <bcp14>MUST</bcp14> include:</t>

        <dl spacing="normal">
          <dt>ARP-Version:</dt><dd>"2.0"</dd>
          <dt>ARP-Entity-DID:</dt><dd>e.g., "did:web:example.com"</dd>
          <dt>ARP-Trust-Level:</dt><dd>SOVEREIGN | ATTESTED | CRYPTOGRAPHIC | UNSIGNED | INVALID</dd>
          <dt>ARP-Signed-At:</dt><dd>ISO 8601 (omitted if UNSIGNED)</dd>
          <dt>ARP-Expires-At:</dt><dd>ISO 8601 (omitted if UNSIGNED)</dd>
        </dl>
      </section>

      <section anchor="get-identity">
        <name>GET /identity</name>
        <t>Returns the full entity identity object with Accept-Language
        negotiation (<xref target="lang-negotiation"/>).</t>

        <sourcecode type="http-message"><![CDATA[
GET /.well-known/arp/v2/identity HTTP/2
Host: example.com
Accept-Language: de, en;q=0.9
]]></sourcecode>

        <t>Response (200 OK):</t>

        <sourcecode type="json"><![CDATA[
{
  "entity_did": "did:web:example.com",
  "entity": "Example Organization",
  "language": "de",
  "identity": {
    "tagline": "Example tagline",
    "elevator_pitch": {
      "de": "Kurze Beschreibung.",
      "en": "Short description."
    },
    "founded": 2010,
    "headquarters": "Example City, Country",
    "core_competencies": [
      "Competency Area A",
      "Competency Area B"
    ]
  },
  "_arp_signature": {
    "algorithm": "Ed25519",
    "trust_level": "ATTESTED",
    "signed_at": "2026-04-27T10:00:00Z"
  }
}
]]></sourcecode>
      </section>

      <section anchor="post-query">
        <name>POST /query</name>
        <t>The semantic query endpoint. The agent describes its information
        need; the entity responds with the most relevant subset of claims,
        contextualized to the query.</t>

        <sourcecode type="http-message"><![CDATA[
POST /.well-known/arp/v2/query HTTP/2
Host: example.com
Content-Type: application/json
Accept-Language: de, en;q=0.9

{
  "arp_version": "2.0",
  "agent_id": "did:example:agent-001",
  "query_context": {
    "user_intent": "evaluate B2B software for a 50-person organization",
    "required_claim_types": [
      "recommendation_fit",
      "compliance_certifications"
    ],
    "epistemic_filter": ["public_verifiable"],
    "language": "de"
  },
  "session_token": "arp-sess-a1b2c3d4e5f6",
  "agent_version": "ARP/2.0"
}
]]></sourcecode>

        <t>The session_token is an opaque per-query identifier for feedback
        correlation. It <bcp14>MUST NOT</bcp14> contain personally
        identifiable information.</t>

        <t>Agents <bcp14>MUST</bcp14> treat responses as entity
        self-attestation, not authoritative fact.</t>
      </section>

      <section anchor="get-claims">
        <name>GET /claims/{claim_id}</name>
        <t>Returns a single claim with provenance, attestation history, and
        version log. Invalid claim_id returns 404.</t>
      </section>

      <section anchor="get-corrections">
        <name>GET /corrections</name>
        <t>Returns all active corrections. Supports filtering by
        epistemic_scope and language.</t>
      </section>

      <section anchor="get-expertise">
        <name>GET /expertise/{scenario_hash}</name>
        <t>Returns domain expertise for a specific scenario. The
        scenario_hash is a deterministic truncated SHA-256 digest of a
        normalized user query, enabling efficient agent-side caching.</t>

        <t>Scenario Hash Generation (normative):</t>
        <ol spacing="normal">
          <li>Normalize query: lowercase, trim whitespace, collapse internal
          whitespace to a single space, remove Unicode category P
          punctuation.</li>
          <li>Encode normalized string as UTF-8.</li>
          <li>Compute SHA-256 <xref target="RFC6234"/>.</li>
          <li>Hex-encode the first 16 bytes (lowercase), producing 32
          characters.</li>
        </ol>
      </section>

      <section anchor="get-trust">
        <name>GET /trust</name>
        <t>Returns the entity's full trust manifest, including DID
        reference, self-signature status, all current attestations, and the
        computed trust score.</t>
      </section>

      <section anchor="get-subscribe">
        <name>GET /subscribe (Server-Sent Events)</name>
        <t>Provides a real-time event stream using the SSE protocol
        <xref target="W3C.SSE"/>. Defined event types: claim:updated,
        correction:new, correction:removed, attestation:added,
        attestation:expired, trust:level:changed, heartbeat.</t>

        <t>Implementations <bcp14>MUST</bcp14> honor the Last-Event-ID
        header for stream resumption. Event IDs <bcp14>MUST</bcp14> be
        monotonically increasing.</t>
      </section>

      <section anchor="post-feedback">
        <name>POST /feedback</name>
        <t>Accepts anonymized feedback from agents about claim
        effectiveness. Available only if feedback_policy.accepts_feedback
        is true. Privacy requirements are specified in
        <xref target="anonymization"/> and <xref target="privacy-anon"/>.</t>
      </section>

      <section anchor="post-a2a">
        <name>POST /a2a/handshake</name>
        <t>Initiates an Agent-to-Agent trust handshake. Full specification
        in <xref target="a2a"/>.</t>
      </section>

      <section anchor="get-reasoning">
        <name>GET /reasoning.json (Compatibility Alias)</name>
        <t>Returns a v1.2-format JSON document for backward compatibility.
        Implementations <bcp14>SHOULD</bcp14> include an X-ARP-Upgrade
        response header pointing to the v2.0 API base URI.</t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="bidirectional">
      <name>Bidirectional Feedback Protocol</name>

      <section anchor="anonymization">
        <name>Anonymization Requirements</name>
        <t>Agents <bcp14>MUST NOT</bcp14> include in feedback payloads:</t>
        <ul spacing="normal">
          <li>User query text or prompt content.</li>
          <li>User personally identifiable information.</li>
          <li>Browser fingerprint or device data.</li>
          <li>IP addresses or geographic identifiers.</li>
        </ul>

        <t>Entities <bcp14>MUST NOT</bcp14>:</t>
        <ul spacing="normal">
          <li>Store session_token values beyond the aggregation window.</li>
          <li>Correlate session_tokens with individual users.</li>
          <li>Expose individual feedback records to third parties.</li>
        </ul>
      </section>

      <section anchor="aggregation">
        <name>Feedback Aggregation</name>
        <t>Entities <bcp14>SHOULD</bcp14> aggregate feedback metrics per
        claim over a rolling 30-day window. Metrics <bcp14>MUST</bcp14> only
        surface after the min_feedback_pool threshold is reached.</t>
      </section>

      <section anchor="degradation">
        <name>Automatic Claim Degradation</name>
        <t>Trigger: median confidence_alignment below 0.4 over 30 days AND
        feedback_count at or above min_feedback_pool. The claim's confidence
        field is automatically downgraded one level. Reversal requires
        explicit re-attestation by the entity owner.</t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="attestation">
      <name>Multi-Party Attestation Model</name>

      <section anchor="attester-categories">
        <name>Attester Categories</name>
        <dl spacing="normal">
          <dt>community:</dt>
          <dd>Peer entities or industry associations without formal
          accreditation. Lowest trust category.</dd>

          <dt>institutional:</dt>
          <dd>Formally accredited certification bodies, trade associations
          with legal standing, professional or audit organizations. Trust
          Score: ATTESTED (0.90).</dd>

          <dt>government:</dt>
          <dd>Official government registries with statutory authority:
          commercial registries, financial regulators, intellectual property
          offices. Trust Score: ATTESTED (0.90) to SOVEREIGN (1.00).</dd>

          <dt>sovereign:</dt>
          <dd>Qualified trust service providers under applicable
          supranational frameworks. Trust Score: SOVEREIGN (1.00).</dd>
        </dl>
      </section>

      <section anchor="trust-hierarchy">
        <name>Trust Level Hierarchy</name>
        <table anchor="tab-trust-levels">
          <name>ARP v2.0 Trust Level Hierarchy</name>
          <thead>
            <tr><th>Trust Level</th><th>Score</th><th>Condition</th></tr>
          </thead>
          <tbody>
            <tr><td>SOVEREIGN</td><td>1.00</td><td>At least one sovereign attester</td></tr>
            <tr><td>ATTESTED</td><td>0.90</td><td>At least one institutional or government attester; no sovereign</td></tr>
            <tr><td>CRYPTOGRAPHIC</td><td>0.70</td><td>Valid Ed25519 self-signature; no third-party attesters</td></tr>
            <tr><td>UNSIGNED</td><td>0.30</td><td>No valid signature</td></tr>
            <tr><td>INVALID</td><td>0.00</td><td>Forged or tampered signature</td></tr>
          </tbody>
        </table>

        <t>An EXPIRED self-signature falls back to UNSIGNED, not INVALID.</t>
      </section>

      <section anchor="attestation-schema">
        <name>Attestation Object Schema</name>
        <t>Required fields: attester_did, attester_name, attester_type,
        attested_at, expires_at, claim_scope, signature. Recommended:
        evidence_url.</t>

        <sourcecode type="json"><![CDATA[
{
  "attester_did": "did:web:attester.example.org",
  "attester_name": "Example Accreditation Body",
  "attester_type": "institutional",
  "attested_at": "2026-01-15T09:00:00Z",
  "expires_at": "2028-01-15T09:00:00Z",
  "claim_scope": ["clm-founded-001", "clm-industry-001"],
  "evidence_url":
    "https://attester.example.org/verify/EX-12345",
  "signature": {
    "algorithm": "Ed25519",
    "public_key_did_ref":
      "did:web:attester.example.org#key-1",
    "canonicalization": "jcs-rfc8785",
    "value": "base64url..."
  }
}
]]></sourcecode>
      </section>

      <section anchor="attester-did">
        <name>Attester DID Requirements</name>
        <t>Loaders <bcp14>MUST</bcp14> verify attestation signatures by:</t>
        <ol spacing="normal">
          <li>Resolving attester_did to its DID Document.</li>
          <li>Retrieving the public key from public_key_did_ref.</li>
          <li>JCS-canonicalizing <xref target="RFC8785"/> the signed claim
          content.</li>
          <li>Verifying the Ed25519 signature.</li>
          <li>Confirming expires_at has not passed.</li>
        </ol>
        <t>Failed verification <bcp14>MUST</bcp14> treat the attestation as
        absent.</t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="crypto">
      <name>Cryptographic Trust Layer</name>

      <section anchor="ed25519">
        <name>Ed25519 Signing</name>
        <t>Ed25519 <xref target="RFC8032"/> is <bcp14>REQUIRED</bcp14> for
        all ARP signatures.</t>

        <t>DNS TXT record format (inherited from v1.2):</t>
        <sourcecode><![CDATA[
<selector>._arp.<domain>. IN TXT
  "v=ARP1; k=ed25519; p=<base64-pubkey>"
]]></sourcecode>

        <t>Where:</t>
        <ul spacing="normal">
          <li>"v=ARP1" identifies the ARP protocol version.</li>
          <li>"k=ed25519" identifies the key algorithm.</li>
          <li>"p=&lt;key&gt;" is the standard Base64-encoded
          <xref target="RFC4648"/> 32-byte Ed25519 public key.</li>
        </ul>
      </section>

      <section anchor="enveloped-sig">
        <name>Enveloped Signature Pattern</name>
        <t>The Enveloped Signature Pattern is <bcp14>REQUIRED</bcp14>. The
        signature <bcp14>MUST</bcp14> cover the payload AND _arp_signature
        metadata.</t>

        <t>Signing procedure:</t>
        <ol spacing="normal">
          <li>Populate _arp_signature with all metadata fields.</li>
          <li>Set "signature" field to "".</li>
          <li>JCS-canonicalize <xref target="RFC8785"/> the entire root
          object.</li>
          <li>Sign with Ed25519 private key.</li>
          <li>Base64url-encode the result; set as "signature" value.</li>
        </ol>

        <t>Verification reverses steps 3-5.</t>
      </section>

      <section anchor="dns-binding">
        <name>DNS Binding</name>
        <t>DNS-based verification is valid for backward compatibility. The
        DID Document public key is the <bcp14>PREFERRED</bcp14> mechanism
        in v2.0.</t>
      </section>

      <section anchor="signing-policy">
        <name>Domain Signing Policy</name>
        <t>Entities <bcp14>MAY</bcp14> publish a policy at:</t>
        <sourcecode><![CDATA[
_arp.example.com. IN TXT "v=ARP1; p=<policy>"
]]></sourcecode>

        <table anchor="tab-policy">
          <name>ARP v2.0 Domain Signing Policy Values</name>
          <thead>
            <tr><th>Policy</th><th>Meaning</th></tr>
          </thead>
          <tbody>
            <tr><td>p=none</td><td>No enforcement. Default if absent.</td></tr>
            <tr><td>p=warn</td><td>Log warning if file unsigned.</td></tr>
            <tr><td>p=reject</td><td>Unsigned file treated as INVALID.</td></tr>
            <tr><td>p=require-did</td><td>As p=reject; entity_did MUST be present and DID document MUST resolve.</td></tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="i18n">
      <name>Internationalization (i18n)</name>

      <section anchor="lang-negotiation">
        <name>Language Negotiation</name>
        <t>All endpoints <bcp14>MUST</bcp14> support HTTP Accept-Language
        per <xref target="RFC7231"/> Section 5.3.5.</t>

        <t>Servers <bcp14>MUST</bcp14> parse Accept-Language with quality
        value weighting, select best match from supported_languages, include
        ARP-Content-Language in response, and fall back to "en" if no match
        and "en" is supported.</t>
      </section>

      <section anchor="i18n-object">
        <name>Claim i18n Object</name>
        <sourcecode type="json"><![CDATA[
{
  "claim_id": "clm-pitch-001",
  "type": "identity.elevator_pitch",
  "i18n": {
    "en": {
      "value": "Short description of the organization.",
      "translated_by": "human",
      "verified_at": "2026-04-01",
      "quality": "reviewed"
    },
    "de": {
      "value": "Kurze Beschreibung der Organisation.",
      "translated_by": "human",
      "verified_at": "2026-04-01",
      "quality": "reviewed"
    },
    "fr": {
      "value": "Breve description.",
      "translated_by": "machine",
      "verified_at": null,
      "quality": "draft"
    }
  }
}
]]></sourcecode>
      </section>

      <section anchor="quality-signals">
        <name>Translation Quality Signals</name>
        <dl spacing="normal">
          <dt>draft:</dt>
          <dd>Machine-translated, unreviewed. Agents <bcp14>SHOULD</bcp14>
          reduce confidence weighting.</dd>

          <dt>reviewed:</dt>
          <dd>Reviewed by a fluent human speaker.</dd>

          <dt>certified:</dt>
          <dd>Certified by a sworn or legally recognized translator.</dd>
        </dl>
      </section>

      <section anchor="lang-coverage">
        <name>Mandatory Language Coverage</name>
        <t>Conformant implementations <bcp14>MUST</bcp14> provide claims in
        the entity's declared language_primary, and English ("en") if
        language_primary is not English.</t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="a2a">
      <name>Agent-to-Agent (A2A) Protocol Extension</name>

      <section anchor="a2a-handshake">
        <name>A2A Trust Handshake</name>
        <t>Two ARP-aware agents exchange verified entity context on behalf
        of their respective principals. Design principles:</t>
        <ul spacing="normal">
          <li>Mutual authentication via DID.</li>
          <li>Nonce-based replay protection.</li>
          <li>Explicit session expiration.</li>
          <li>Optional reciprocal claims exchange.</li>
        </ul>
      </section>

      <section anchor="reciprocal">
        <name>Reciprocal Claims Exchange</name>
        <t>If reciprocal_request is present, the initiating agent
        <bcp14>SHOULD</bcp14> submit a separate request to its own ARP
        endpoint. The reciprocal exchange <bcp14>MUST</bcp14> use a new
        HTTP request and <bcp14>MUST NOT</bcp14> reuse the
        session_nonce.</t>
      </section>

      <section anchor="session-integrity">
        <name>Session Integrity</name>
        <t>Required controls:</t>
        <ul spacing="normal">
          <li>Nonces <bcp14>MUST</bcp14> be cryptographically random,
          minimum 128 bits.</li>
          <li>Each nonce <bcp14>MUST</bcp14> be used for exactly one
          session.</li>
          <li>Servers <bcp14>MUST</bcp14> reject replayed nonces within the
          expiry window.</li>
          <li>Both messages <bcp14>MUST</bcp14> be signed by the respective
          agent's DID key.</li>
          <li>The session_nonce <bcp14>MUST</bcp14> appear in both message
          signatures.</li>
          <li>Agents <bcp14>MUST</bcp14> verify the counterparty's DID
          before accepting any claims.</li>
          <li>Agents <bcp14>MUST</bcp14> reject handshakes from unresolvable
          DIDs.</li>
        </ul>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="schema">
      <name>JSON Schema v2.0</name>

      <section anchor="root-object">
        <name>Root Object</name>
        <t>The root object of a v2.0 ARP document fields. Required (R),
        Optional (O), New in v2.0 (N), Required at ATTESTED+ (R*).</t>
        <ul spacing="normal">
          <li>$schema (uri, R): Schema URL value
          "https://arp-protocol.org/schema/v2.0.json"</li>
          <li>protocol (string, R): "Agentic Reasoning Protocol (ARP)"</li>
          <li>version (string, R): "2.0"</li>
          <li>entity_did (did-uri, R*): W3C DID. Required for ATTESTED+</li>
          <li>entity (string, R): Canonical name. Max 200 characters</li>
          <li>api_endpoint (uri, R*): v2.0 API base URI</li>
          <li>language_primary (string, R): ISO 639-1 primary language</li>
          <li>supported_languages (string[], R): ISO 639-1 codes. Min:
          ["en"]</li>
          <li>identity (object, O): Brand identity (v1.x compatible)</li>
          <li>corrections (object, O): Factual corrections</li>
          <li>entity_claims (object, R): Self-attested context</li>
          <li>attestations (object[], N): Third-party co-signatures</li>
          <li>feedback_policy (object, N): Agent feedback configuration</li>
          <li>webhook (object, N): Push event configuration</li>
          <li>_arp_signature (object, O): Ed25519 signature block</li>
        </ul>
      </section>

      <section anchor="claim-object">
        <name>Claim Object</name>
        <t>Individual claims fields:</t>
        <ul spacing="normal">
          <li>claim_id (string, R): Unique identifier
          "clm-{cat}-{seq}"</li>
          <li>type (string, R): Type from registry or "x-" prefix</li>
          <li>epistemic_scope (string, O): "public_verifiable" |
          "proprietary_internal" | "industry_standard"</li>
          <li>confidence (string, O): "high" | "medium" | "low"</li>
          <li>i18n (object, O): Per-language values</li>
          <li>value (any, O): Single-language fallback</li>
          <li>attestations (string[], O): Attester DID references</li>
          <li>evidence_url (uri, O): External verification URL</li>
        </ul>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="migration">
      <name>Migration from ARP v1.x</name>

      <t>All v1.2 fields are preserved. No field is removed. Migration is
      voluntary and incremental.</t>

      <dl spacing="normal">
        <dt>Stage 0 -- Unchanged (no action required):</dt>
        <dd>Trust Level: CRYPTOGRAPHIC (0.70). v2.0 loaders serve the
        compatibility alias transparently.</dd>

        <dt>Stage 1 -- Add entity_did + api_endpoint:</dt>
        <dd>Generate a did:web DID, publish the DID Document, deploy
        GET /identity and GET /trust. Update $schema to v2.0.json.</dd>

        <dt>Stage 2 -- Add i18n + POST /query:</dt>
        <dd>Add i18n to localizable fields. Implement POST /query and
        GET /corrections. Declare supported_languages.</dd>

        <dt>Stage 3 -- Obtain first institutional attestation:</dt>
        <dd>Trust Level becomes ATTESTED (0.90). Obtain co-signatures from
        at least one institutional attester for three or more claims.</dd>

        <dt>Stage 4 -- Activate webhooks + feedback:</dt>
        <dd>Implement GET /subscribe (SSE) and POST /feedback. Set
        feedback_policy.accepts_feedback to true.</dd>

        <dt>Stage 5 -- Government or sovereign attestation (optional):</dt>
        <dd>Trust Level becomes SOVEREIGN (1.00) for attested claims.
        <bcp14>RECOMMENDED</bcp14> for regulated industries.</dd>
      </dl>
    </section>

    <!-- ============================================================ -->
    <section anchor="anti-spam">
      <name>Anti-Spam and Content Integrity</name>
      <t>Inherited limits from v1.1/v1.2: text fields 50-500 characters,
      array fields 8-20 items, static file maximum 100 KB, query response
      bodies maximum 200 KB.</t>

      <t>Recommended rate limits: POST /query 100 requests/minute per IP
      and 1000/day per agent_id. POST /feedback 10 submissions/session_token
      per hour and 100/day per agent_did.</t>

      <t>Prohibited content includes prompt injection patterns, claims
      about named third parties or competitors, false corrections, cloaking
      (different content served to AI vs humans), discriminatory content,
      and A2A handshakes with fabricated DIDs.</t>
    </section>

    <!-- ============================================================ -->
    <section anchor="security">
      <name>Security Considerations</name>

      <section anchor="prompt-injection">
        <name>Prompt Injection Defense</name>
        <t>ARP content is injected into LLM contexts. Loader implementations
        <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>Sandbox ARP content within trust boundary markers.</li>
          <li>Strip control characters and instruction patterns.</li>
          <li>Label ARP-sourced content as lower-privilege than system
          instructions.</li>
        </ul>
      </section>

      <section anchor="downgrade">
        <name>Downgrade Attack Protection</name>
        <t>An attacker could strip _arp_signature from a response.
        Mitigations: p=reject DNS policy, SSE trust:level:changed events,
        and agent caching of last-known Trust Level per DID.</t>
      </section>

      <section anchor="a2a-hijack">
        <name>A2A Session Hijacking</name>
        <t>Protected by DID authentication, cryptographic nonces, and
        expiry windows. Sessions failing nonce verification
        <bcp14>MUST</bcp14> be rejected.</t>
      </section>

      <section anchor="feedback-manip">
        <name>Feedback Manipulation</name>
        <t>Rate limits constrain bulk attacks. Agent DID signing enables
        reputation tracking. Entities <bcp14>MUST NOT</bcp14> accept
        feedback for claim_ids that do not exist.</t>
      </section>

      <section anchor="false-attest">
        <name>False Attestation</name>
        <t>Loaders <bcp14>MUST</bcp14> verify all attestation signatures.
        Unverifiable attestations <bcp14>MUST</bcp14> be treated as absent.
        Forged signatures constitute non-repudiable cryptographic fraud.</t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="privacy">
      <name>Privacy Considerations</name>

      <section anchor="privacy-anon">
        <name>Agent Anonymization</name>
        <t>Agents <bcp14>MUST NOT</bcp14> transmit in feedback payloads:
        user query text or prompt content, user PII, device fingerprint or
        network identifiers.</t>

        <t>The session_token is a single-use opaque identifier. Entities
        <bcp14>MUST</bcp14> treat it as an opaque correlation key, not user
        identity.</t>
      </section>

      <section anchor="regulatory">
        <name>Regulatory Alignment</name>
        <t>This protocol is designed to support compliance with applicable
        regulatory frameworks, including AI transparency requirements (e.g.,
        EU AI Act Article 50 <xref target="EU-AI-ACT"/>), data protection
        obligations, and consumer protection law.</t>

        <t>This document makes no representations about compliance with any
        specific national law. Implementors are solely responsible for their
        own legal analysis.</t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="iana">
      <name>IANA Considerations</name>

      <section anchor="iana-well-known">
        <name>Well-Known URI Registration</name>
        <t>This document requests the following registrations in the
        "Well-Known URIs" registry <xref target="RFC8615"/>:</t>

        <dl spacing="normal">
          <dt>URI Suffix:</dt><dd>reasoning.json</dd>
          <dt>Change Controller:</dt><dd>IETF</dd>
          <dt>Reference:</dt><dd>This document, <xref target="well-known"/></dd>
          <dt>Status:</dt><dd>Permanent</dd>
        </dl>

        <dl spacing="normal">
          <dt>URI Suffix:</dt><dd>arp/v2/</dd>
          <dt>Change Controller:</dt><dd>IETF</dd>
          <dt>Reference:</dt><dd>This document, <xref target="api-base"/></dd>
          <dt>Status:</dt><dd>Permanent</dd>
        </dl>
      </section>

      <section anchor="iana-link-rel">
        <name>Link Relation Types</name>
        <t>This document requests the following registrations in the
        "Link Relations" registry <xref target="RFC8288"/>:</t>

        <dl spacing="normal">
          <dt>Relation Name:</dt><dd>reasoning</dd>
          <dt>Description:</dt><dd>Refers to an ARP file for AI agent
          consumption.</dd>
          <dt>Reference:</dt><dd>This document</dd>
        </dl>

        <dl spacing="normal">
          <dt>Relation Name:</dt><dd>arp-api</dd>
          <dt>Description:</dt><dd>Refers to the ARP v2.0 API base URI.</dd>
          <dt>Reference:</dt><dd>This document</dd>
        </dl>
      </section>

      <section anchor="iana-media">
        <name>Media Type Registration</name>
        <dl spacing="normal">
          <dt>Type name:</dt><dd>application</dd>
          <dt>Subtype name:</dt><dd>vnd.arp+json</dd>
          <dt>Required parameters:</dt><dd>version (e.g., "2.0")</dd>
          <dt>Optional parameters:</dt><dd>lang (ISO 639-1)</dd>
          <dt>Encoding:</dt><dd>UTF-8</dd>
          <dt>Security considerations:</dt><dd>See <xref target="security"/></dd>
        </dl>
      </section>

      <section anchor="iana-claim-types">
        <name>ARP Claim Type Registry</name>
        <t>The "ARP Claim Types" registry is established by this document.
        New types require "Specification Required" <xref target="RFC8126"/>
        review. Custom types for single implementations use the "x-"
        prefix.</t>

        <table anchor="tab-claim-types">
          <name>Initial ARP Claim Type Registry Entries</name>
          <thead>
            <tr><th>Claim Type</th><th>Description</th></tr>
          </thead>
          <tbody>
            <tr><td>identity.entity_name</td><td>Canonical legal name</td></tr>
            <tr><td>identity.elevator_pitch</td><td>One-paragraph description</td></tr>
            <tr><td>identity.founded</td><td>Year of founding</td></tr>
            <tr><td>identity.headquarters</td><td>Primary location</td></tr>
            <tr><td>identity.industry</td><td>Primary industry sector</td></tr>
            <tr><td>correction.general</td><td>General factual correction</td></tr>
            <tr><td>expertise.scenario</td><td>Domain expertise for a scenario</td></tr>
            <tr><td>recommendation.fit</td><td>Recommendation fit assessment</td></tr>
            <tr><td>recommendation.not_fit</td><td>Negative recommendation signal</td></tr>
            <tr><td>compliance.certification</td><td>Certification or accreditation</td></tr>
            <tr><td>compliance.regulation</td><td>Applicable regulatory framework</td></tr>
            <tr><td>market.positioning</td><td>Self-attested market position</td></tr>
            <tr><td>market.decision_factors</td><td>Key evaluation criteria</td></tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="ethics">
      <name>Ethical Guidelines</name>

      <ol spacing="normal" type="(%d)">
        <li><strong>Truthfulness.</strong> All claim content
        <bcp14>MUST</bcp14> accurately reflect the entity. False corrections
        constitute misinformation injection into AI systems.</li>

        <li><strong>Self-description only.</strong> ARP <bcp14>MUST</bcp14>
        describe only the publishing entity. Claims about third parties are
        prohibited.</li>

        <li><strong>No negative targeting.</strong> market_positioning
        <bcp14>MUST NOT</bcp14> name specific third parties or
        competitors.</li>

        <li><strong>Evidence first.</strong> Corrections
        <bcp14>SHOULD</bcp14> include evidence_url pointing to an
        independently verifiable source.</li>

        <li><strong>Consistency.</strong> ARP content <bcp14>MUST</bcp14> be
        consistent with human-visible content. Cloaking is prohibited.</li>

        <li><strong>User benefit.</strong> not_recommended_when exists to
        serve users honestly, not to serve brand interests.</li>

        <li><strong>Feedback integrity.</strong> Entities
        <bcp14>MUST NOT</bcp14> submit feedback for the purpose of gaming
        Trust Scores.</li>

        <li><strong>Attester honesty.</strong> Claiming attestations not
        actually granted constitutes cryptographic fraud detectable via
        signature verification.</li>
      </ol>

      <t>Cryptographic non-repudiation: A signed ARP document is a
      timestamped, non-repudiable assertion of authorship and accuracy. The
      signer accepts legal liability for signed content under applicable
      consumer protection, competition, and digital services law.</t>
    </section>

  </middle>

  <back>

    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>

        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="Scott Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>

        <reference anchor="RFC2606" target="https://www.rfc-editor.org/info/rfc2606">
          <front>
            <title>Reserved Top Level DNS Names</title>
            <author initials="D." surname="Eastlake 3rd" fullname="Donald Eastlake 3rd"/>
            <author initials="A." surname="Panitz" fullname="Aliza Panitz"/>
            <date year="1999" month="June"/>
          </front>
          <seriesInfo name="BCP" value="32"/>
          <seriesInfo name="RFC" value="2606"/>
          <seriesInfo name="DOI" value="10.17487/RFC2606"/>
        </reference>

        <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author initials="S." surname="Josefsson" fullname="Simon Josefsson"/>
            <date year="2006" month="October"/>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>

        <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author initials="D." surname="Eastlake 3rd"/>
            <author initials="T." surname="Hansen"/>
            <date year="2011" month="May"/>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>

        <reference anchor="RFC7231" target="https://www.rfc-editor.org/info/rfc7231">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
            <author initials="R." surname="Fielding" role="editor"/>
            <author initials="J." surname="Reschke" role="editor"/>
            <date year="2014" month="June"/>
          </front>
          <seriesInfo name="RFC" value="7231"/>
          <seriesInfo name="DOI" value="10.17487/RFC7231"/>
        </reference>

        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author initials="S." surname="Josefsson"/>
            <author initials="I." surname="Liusvaara"/>
            <date year="2017" month="January"/>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>

        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author initials="M." surname="Cotton"/>
            <author initials="B." surname="Leiba"/>
            <author initials="T." surname="Narten"/>
            <date year="2017" month="June"/>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>

        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>

        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author initials="T." surname="Bray" role="editor"/>
            <date year="2017" month="December"/>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>

        <reference anchor="RFC8288" target="https://www.rfc-editor.org/info/rfc8288">
          <front>
            <title>Web Linking</title>
            <author initials="M." surname="Nottingham"/>
            <date year="2017" month="October"/>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>

        <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author initials="M." surname="Nottingham"/>
            <date year="2019" month="May"/>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>

        <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author initials="A." surname="Rundgren"/>
            <author initials="B." surname="Jordan"/>
            <author initials="S." surname="Erdtman"/>
            <date year="2020" month="June"/>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>

        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110">
          <front>
            <title>HTTP Semantics</title>
            <author initials="R." surname="Fielding" role="editor"/>
            <author initials="M." surname="Nottingham" role="editor"/>
            <author initials="J." surname="Reschke" role="editor"/>
            <date year="2022" month="June"/>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>

        <reference anchor="RFC9309" target="https://www.rfc-editor.org/info/rfc9309">
          <front>
            <title>Robots Exclusion Protocol</title>
            <author initials="M." surname="Koster"/>
            <author initials="G." surname="Illyes"/>
            <author initials="H." surname="Zeller"/>
            <author initials="L." surname="Sassman"/>
            <date year="2022" month="September"/>
          </front>
          <seriesInfo name="RFC" value="9309"/>
          <seriesInfo name="DOI" value="10.17487/RFC9309"/>
        </reference>

        <reference anchor="W3C.DID-CORE" target="https://www.w3.org/TR/did-core/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author initials="M." surname="Sporny"/>
            <author initials="A." surname="Guy"/>
            <author initials="M." surname="Sabadello"/>
            <author initials="D." surname="Reed"/>
            <date year="2022" month="July"/>
          </front>
        </reference>

        <reference anchor="W3C.DID-WEB" target="https://w3c-ccg.github.io/did-method-web/">
          <front>
            <title>The did:web Method Specification</title>
            <author initials="J." surname="Caballero"/>
            <author initials="C." surname="Xu"/>
            <author initials="M." surname="Prorock"/>
            <date year="2024"/>
          </front>
        </reference>

        <reference anchor="W3C.VC-DATA" target="https://www.w3.org/TR/vc-data-model-2.0/">
          <front>
            <title>Verifiable Credentials Data Model v2.0</title>
            <author initials="M." surname="Sporny"/>
            <author initials="D." surname="Longley"/>
            <author initials="D." surname="Chadwick"/>
            <author initials="O." surname="Steele"/>
            <date year="2025" month="February"/>
          </front>
        </reference>

        <reference anchor="W3C.SSE" target="https://www.w3.org/TR/eventsource/">
          <front>
            <title>Server-Sent Events</title>
            <author initials="I." surname="Hickson"/>
            <date year="2015" month="February"/>
          </front>
        </reference>
      </references>

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

        <reference anchor="RFC6376" target="https://www.rfc-editor.org/info/rfc6376">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author initials="D." surname="Crocker" role="editor"/>
            <author initials="T." surname="Hansen" role="editor"/>
            <author initials="M." surname="Kucherawy" role="editor"/>
            <date year="2011" month="September"/>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>

        <reference anchor="RFC7489" target="https://www.rfc-editor.org/info/rfc7489">
          <front>
            <title>Domain-based Message Authentication, Reporting, and Conformance (DMARC)</title>
            <author initials="M." surname="Kucherawy" role="editor"/>
            <author initials="E." surname="Zwicky" role="editor"/>
            <date year="2015" month="March"/>
          </front>
          <seriesInfo name="RFC" value="7489"/>
          <seriesInfo name="DOI" value="10.17487/RFC7489"/>
        </reference>

        <reference anchor="RFC9116" target="https://www.rfc-editor.org/info/rfc9116">
          <front>
            <title>A File Format to Aid in Security Vulnerability Disclosure</title>
            <author initials="E." surname="Foudil"/>
            <author initials="Y." surname="Shafranovich"/>
            <date year="2022" month="April"/>
          </front>
          <seriesInfo name="RFC" value="9116"/>
          <seriesInfo name="DOI" value="10.17487/RFC9116"/>
        </reference>

        <reference anchor="ARP-V1-2" target="https://arp-protocol.org/SPEC.md">
          <front>
            <title>Agentic Reasoning Protocol Specification v1.2</title>
            <author initials="S." surname="Deforth" fullname="Sascha Deforth"/>
            <date year="2026" month="April"/>
          </front>
        </reference>

        <reference anchor="LLMS-TXT" target="https://llmstxt.org/">
          <front>
            <title>A standard for LLMs and AI agents</title>
            <author>
              <organization>llmstxt.org</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>

        <reference anchor="SCHEMA-ORG" target="https://schema.org/">
          <front>
            <title>Schema.org Vocabulary</title>
            <author>
              <organization>Schema.org Community</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>

        <reference anchor="EU-AI-ACT" target="https://eur-lex.europa.eu/eli/reg/2024/1689/oj">
          <front>
            <title>Regulation (EU) 2024/1689 laying down harmonised rules on artificial intelligence (Artificial Intelligence Act)</title>
            <author>
              <organization>European Parliament and Council</organization>
            </author>
            <date year="2024" month="July"/>
          </front>
        </reference>

        <reference anchor="EIDAS2" target="https://eur-lex.europa.eu/eli/reg/2024/1183/oj">
          <front>
            <title>Regulation (EU) 2024/1183 amending Regulation (EU) No 910/2014 as regards the establishment of the European Digital Identity Framework</title>
            <author>
              <organization>European Parliament and Council</organization>
            </author>
            <date year="2024" month="April"/>
          </front>
        </reference>
      </references>
    </references>

    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>The author thanks the reviewers who provided independent analysis
      of ARP v1.x. The counterfactual design methodology applied in this
      document was refined through discussion with AI research practitioners
      in 2026.</t>

      <t>All examples are fictitious. Any resemblance to actual
      organizations, products, or services is unintentional.</t>
    </section>

  </back>
</rfc>
