<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     ipr="trust200902"
     docName="draft-narajala-courtney-ansv2-00"
     category="info"
     submissionType="independent"
     version="3">

  <front>
    <title abbrev="ANS v2">Agent Name Service v2 (ANS): A Domain-Anchored Trust Layer for Autonomous AI Agent Identity</title>

    <seriesInfo name="Internet-Draft" value="draft-narajala-courtney-ansv2-00"/>

    <author fullname="Scott Courtney" initials="S." surname="Courtney">
      <organization>GoDaddy</organization>
      <address>
        <email>scourtney@godaddy.com</email>
      </address>
    </author>

    <author fullname="Vineeth Sai Narajala" initials="V. S." surname="Narajala">
      <organization>OWASP</organization>
      <address>
        <email>vineeth.sai@owasp.org</email>
      </address>
    </author>

    <author fullname="Ken Huang" initials="K." surname="Huang">
      <organization>DistributedApps.ai</organization>
      <address>
        <email>ken.huang@distributedapps.ai</email>
      </address>
    </author>

    <author fullname="Idan Habler" initials="I." surname="Habler">
      <organization>OWASP</organization>
      <address>
        <email>idan.habler@gmail.com</email>
      </address>
    </author>

    <author fullname="Akram Sheriff" initials="A." surname="Sheriff">
      <organization>Cisco Systems</organization>
      <address>
        <email>isheriff@cisco.com</email>
      </address>
    </author>

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

    <area>Security</area>
    <workgroup>Independent Submission</workgroup>

    <keyword>agent identity</keyword>
    <keyword>DNS</keyword>
    <keyword>transparency log</keyword>
    <keyword>DANE</keyword>
    <keyword>SCITT</keyword>
    <keyword>PKI</keyword>

    <abstract>
      <t>
        Autonomous AI agents execute transactions across organizational
        boundaries. No single agent platform provides the trust
        infrastructure they need. This document defines the Agent Name
        Service (ANS) v2 protocol, which anchors every agent identity to
        a DNS domain name. A Registration Authority (RA) verifies domain
        ownership via ACME, issues dual certificates (a Server Certificate
        from a public CA and an Identity Certificate from a private CA
        binding a version-specific ANSName), and seals every lifecycle
        event into an append-only Transparency Log aligned with IETF
        SCITT. Three verification tiers -- Bronze (PKI),
        Silver (PKI + DANE), and Gold (PKI + DANE + Transparency Log) --
        let clients choose assurance levels appropriate to transaction risk.
      </t>
    </abstract>
  </front>

  <middle>

    <!-- ============================================================ -->
    <section anchor="introduction">
      <name>Introduction</name>
      <t>
        AI agents now buy supplies, book travel, and sign contracts without
        a human in the loop. The ones handling real money need proof of who
        stands behind them. DNS <xref target="RFC1035"/> maps names to
        addresses but does not verify identity or track software versions.
        DNS-SD <xref target="RFC6763"/> adds service discovery but cannot
        tell a client whether the agent at an address is the one it claims
        to be.
      </t>
      <t>
        Two prominent protocols define how agents communicate. MCP
        <xref target="MCP"/> connects models to local tools and external
        APIs. A2A <xref target="A2A"/> governs how autonomous agents
        negotiate and delegate tasks across organizational boundaries.
        These protocols define how agents communicate but explicitly defer
        the question of who the agent is and whether it should be trusted.
      </t>
      <t>
        ANS addresses these gaps by combining three mechanisms. First, the
        agent's identity is anchored to a domain name whose ownership the
        Registration Authority (RA) has verified. Second, every change to
        the agent's software produces a new version number and a new
        Identity Certificate, recording which version is registered.
        Third, every lifecycle event is sealed into a Transparency Log, an
        append-only ledger where entries cannot be altered or removed after
        the fact. The three mechanisms together prove which version was
        declared and when.
      </t>

      <section anchor="origin-and-evolution">
        <name>Origin and Evolution</name>
        <t>
          This document builds on "Agent Name Service (ANS): A Universal
          Directory for Secure AI Agent Discovery and Interoperability"
          <xref target="ANSv1"/>, published at IEEE ICAIC 2026 and
          contributed to the IETF as an Internet-Draft. The original paper
          proposed a conceptual architecture with a six-component ANSName
          format. The architecture presented here simplifies the ANSName
          to three components (ans://v{version}.{agentHost}), introduces
          a dual-certificate model, replaces conceptual registry integrity
          with a cryptographic Transparency Log, moves protocol adapters
          to a client SDK, and decouples discovery from the RA.
        </t>
      </section>

      <section anchor="relationship-to-other-standards">
        <name>Relationship to Other Standards</name>
        <t>
          HCS-14 <xref target="HCS14"/> uses DNS TXT records for agent
          discovery; an ANS Profile for HCS-14 allows any HCS-14 resolver
          to discover ANS agents. HCS-27 <xref target="HCS27"/> defines a
          checkpoint format for publishing the Transparency Log's root hash
          to a distributed consensus topic. The IETF SCITT working group
          <xref target="I-D.ietf-scitt-architecture"/> defines an append-only transparency
          service; the ANS TL follows this model. DNS-AID
          <xref target="DNSAID"/> uses SVCB service binding records
          <xref target="RFC9460"/> for agent endpoint discovery; DNS-AID
          tells a client where to connect, ANS tells it whether to trust
          the agent.
        </t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="terminology">
      <name>Terminology</name>
      <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY",
        and "OPTIONAL" 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>
      <dl>
        <dt>Agent Hosting Platform (AHP):</dt>
        <dd>The entity that hosts the agent's code and serves the live
            endpoints at the agent's FQDN.</dd>
        <dt>Agent Integrity Monitor (AIM):</dt>
        <dd>A monitoring service that compares the live state of an
            agent's DNS records and Trust Card against the sealed TL
            records. It publishes findings but cannot command state
            changes.</dd>
        <dt>ANSName:</dt>
        <dd>The canonical identifier for a registered agent, following
            the format ans://v{version}.{agentHost}.</dd>
        <dt>ANS Trust Card:</dt>
        <dd>An optional COSE_Sign1 document hosted by the AHP containing
            protocol-native metadata augmented with ANS trust fields and
            a stapled SCITT receipt.</dd>
        <dt>Discovery Service:</dt>
        <dd>An independent service that consumes RA output and indexes
            agents for searchability.</dd>
        <dt>Identity Certificate:</dt>
        <dd>An X.509 certificate issued by the Private CA with a URI SAN
            containing the agent's ANSName.</dd>
        <dt>Protocol Card:</dt>
        <dd>The protocol-native metadata file (A2A Agent Card, MCP
            manifest, OpenAPI document) created by the developer.</dd>
        <dt>Registration Authority (RA):</dt>
        <dd>The trusted third party that validates domain control via
            ACME, issues certificates, generates DNS record content, and
            seals lifecycle events into the Transparency Log.</dd>
        <dt>Registration Metadata:</dt>
        <dd>The agentCardContent field in the registration payload,
            translated from the Protocol Card by the SDK. The RA hashes
            it and seals the hash into the TL.</dd>
        <dt>Server Certificate:</dt>
        <dd>An X.509 certificate issued by a public CA with a dNSName
            SAN for the agent's stable FQDN.</dd>
        <dt>Transparency Log (TL):</dt>
        <dd>An append-only cryptographic data structure that seals signed
            events and provides inclusion and consistency proofs.</dd>
        <dt>Trust Index:</dt>
        <dd>A scoring service that crawls TL events and external signals
            to produce a numeric trust evaluation for each agent.</dd>
      </dl>
    </section>

    <!-- ============================================================ -->
    <section anchor="architecture">
      <name>Architecture</name>
      <t>
        The architecture connects a central Registration Authority with
        Agent Hosting Platforms and shared internet infrastructure. Two
        chokepoints define trust flow: the RA, where identity enters the
        system, and the Transparency Log, where sealed evidence leaves it.
      </t>

      <section anchor="ra-system">
        <name>Registration Authority System</name>
        <t>The RA system comprises:</t>
        <dl>
          <dt>Registration Authority (RA):</dt>
          <dd>Receives registration requests from AHPs, validates domain
              control via ACME <xref target="RFC8555"/>, requests an
              Identity Certificate from the Private CA, obtains a Server
              Certificate from the Public CA (or accepts one the AHP
              brings), generates DNS records, and seals the registration
              into the TL.</dd>
          <dt>Key Management System (KMS):</dt>
          <dd>Signs every TL checkpoint. If this key is compromised,
              every sealed record in the log becomes untrustworthy.</dd>
          <dt>Provider Registry:</dt>
          <dd>Decouples an entity's legal name from its identifier.</dd>
          <dt>Agent Integrity Monitor (AIM):</dt>
          <dd>Compares the live internet against what the RA sealed. It
              cannot revoke certificates or command state changes.</dd>
        </dl>
      </section>

      <section anchor="ahp-system">
        <name>Agent Hosting Platform System</name>
        <t>
          The AHP hosts the agent's code and serves the live endpoints at
          the agent's FQDN. During registration, the AHP responds to ACME
          challenges so the RA can verify domain control, then receives
          both certificates and installs them in its keystore. The AHP
          provisions DNS records using content the RA generates. When the
          agent's code changes, the AHP initiates a new version
          registration.
        </t>
      </section>

      <section anchor="transparency-log">
        <name>Transparency Log</name>
        <t>
          The TL receives signed events from the RA, validates each
          signature, and seals the events into a cryptographic append-only
          structure. That structure produces two kinds of proof: inclusion
          proofs (proving a specific event exists in the log) and
          consistency proofs (proving the log has only grown, never shrunk
          or rewritten). The KMS signs each checkpoint. A conforming TL
          MUST operate as a SCITT Transparency Service
          <xref target="I-D.ietf-scitt-architecture"/>, issuing binary COSE receipts as proof
          of inclusion.
        </t>
        <t>A conforming TL MUST expose a REST API for external verifiers:</t>
        <table>
          <thead>
            <tr><th>Endpoint</th><th>Purpose</th></tr>
          </thead>
          <tbody>
            <tr><td>GET /v1/agents/{agentId}</td><td>Sealed event, TL signature, and inclusion proof</td></tr>
            <tr><td>GET /v1/agents/{agentId}/audit</td><td>Paginated history of all lifecycle events</td></tr>
            <tr><td>GET /v1/log/checkpoint</td><td>Latest signed checkpoint: log size, root hash, KMS signature</td></tr>
            <tr><td>GET /v1/log/checkpoint/history</td><td>Checkpoint history for consistency proof verification</td></tr>
            <tr><td>GET /v1/log/schema/{version}</td><td>JSON Schema definition for a given event schema version</td></tr>
            <tr><td>GET /root-keys</td><td>KMS verification keys, including historical keys</td></tr>
          </tbody>
        </table>
        <t>
          The TL MUST distribute verification keys via /root-keys so that
          any verifier can check root signatures without contacting the RA.
          Verification MUST NOT require access to producer public keys,
          authentication for read-only operations, or knowledge of RA
          implementation details.
        </t>
      </section>

      <section anchor="certificate-authorities">
        <name>Certificate Authorities</name>
        <t>Two CAs, two trust roots, two revocation paths:</t>
        <ul>
          <li>Public CA: Issues Server Certificates. Revocation propagates
              through public OCSP/CRL <xref target="RFC6960"/>.</li>
          <li>Private CA: Issues Identity Certificates on the RA's behalf.
              The Identity Certificate requires a URI SAN that no Public
              CA can issue. Only a Private CA, operating under its own
              issuance policy, can include the ans:// scheme.</li>
        </ul>
      </section>

      <section anchor="trust-framework">
        <name>Trust Framework: Three Layers</name>
        <t>
          The RA answers one question: "Who are you?" Three layers of
          trust data together provide a complete answer.
        </t>
        <dl>
          <dt>Layer 1: Foundational identity (this protocol).</dt>
          <dd>The RA verifies domain control, issues certificates, and
              seals the Registration Metadata hash into the Transparency
              Log.</dd>
          <dt>Layer 2: Operational maturity (third-party attestors).</dt>
          <dd>SOC 2 reports, HIPAA compliance certificates, and SBOMs
              arrive as references in the Trust Card's verifiableClaims
              array.</dd>
          <dt>Layer 3: Behavioral reputation (real-time scoring).</dt>
          <dd>Transaction records, settlement rates, and dispute flags.</dd>
        </dl>
        <t>
          No single source controls the evaluation. A companion Trust
          Index specification defines how a provider consumes sealed data
          from Layer 1 and external signals from Layers 2 and 3, computes
          a multi-dimensional trust evaluation, and returns it as a signed
          credential.
        </t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="data-model">
      <name>Data Model and Integrity</name>

      <section anchor="ansname">
        <name>The ANSName</name>
        <t>The canonical identifier for a registered agent has three components
        (<xref target="RFC1035"/>, <xref target="RFC1123"/>):</t>
        <artwork type="abnf"><![CDATA[
ANSName = "ans://v" version "." agentHost
version = 1*DIGIT "." 1*DIGIT "." 1*DIGIT
agentHost = <FQDN per RFC 1035 and RFC 1123>
]]></artwork>
        <t>Example: ans://v1.0.0.sentiment-analyzer.example.com</t>
        <table>
          <thead>
            <tr><th>Component</th><th>Example</th><th>Constraints</th></tr>
          </thead>
          <tbody>
            <tr><td>protocol</td><td>ans</td><td>Fixed. Always "ans".</td></tr>
            <tr><td>version</td><td>1.0.0</td><td>Semantic version, numeric only: major.minor.patch. The "v" prefix is a literal part of the ANSName syntax, not part of the version string.</td></tr>
            <tr><td>agentHost</td><td>sentiment-analyzer.example.com</td><td>FQDN per RFC 1035 and RFC 1123. MUST NOT exceed 237 octets.</td></tr>
          </tbody>
        </table>
        <t>
          The 237-octet host limit: The RA derives DNS record names by
          prepending labels to the agentHost. The longest derived name is
          _acme-challenge.{agentHost}, consuming 17 octets (16 characters
          plus the label separator) of the 253-octet presentation-format
          domain name limit (RFC 1035 Section 2.3.4, RFC 1123 Section
          2.1). 253 - 16 = 237.
        </t>
        <t>
          The complete ANSName MUST NOT exceed 400 octets, providing
          headroom for safe transport across HTTP headers, TLS fields,
          and database columns.
        </t>
      </section>

      <section anchor="identifier-taxonomy">
        <name>Identifier Taxonomy</name>
        <table>
          <thead>
            <tr><th>Identifier</th><th>Assigned by</th><th>Mutable</th><th>Purpose</th></tr>
          </thead>
          <tbody>
            <tr><td>ANSName</td><td>Derived</td><td>No</td><td>Which version is registered on which domain</td></tr>
            <tr><td>FQDN</td><td>AHP</td><td>No</td><td>Stable domain across all versions</td></tr>
            <tr><td>Agent ID</td><td>RA</td><td>No</td><td>Registration record's unique key</td></tr>
            <tr><td>ProviderID</td><td>RA</td><td>No</td><td>Who controls the domain</td></tr>
            <tr><td>Supersedes ID</td><td>RA</td><td>No</td><td>Previous version's record</td></tr>
          </tbody>
        </table>
      </section>

      <section anchor="three-agent-card-terms">
        <name>Three Agent Card Terms</name>
        <ol>
          <li>Protocol Card: The protocol-native metadata file (A2A Agent
              Card, MCP manifest, OpenAPI document).</li>
          <li>Registration Metadata: The agentCardContent field in the
              registration payload. The SDK translates the Protocol Card
              into this format. The RA hashes it and seals the hash into
              the TL.</li>
          <li>ANS Trust Card: An optional COSE_Sign1 document hosted at
              /.well-known/ans/trust-card.json. Contains protocol-native
              metadata augmented with ANS trust fields and a stapled SCITT
              receipt.</li>
        </ol>
      </section>

      <section anchor="certificate-integrity">
        <name>Certificate Integrity</name>
        <table>
          <thead>
            <tr><th>Certificate</th><th>Issued by</th><th>SAN type</th><th>Purpose</th></tr>
          </thead>
          <tbody>
            <tr><td>Server</td><td>Public CA</td><td>dNSName</td><td>Standard TLS for the stable FQDN</td></tr>
            <tr><td>Identity</td><td>Private CA</td><td>URI SAN</td><td>Binds certificate to a versioned ANSName</td></tr>
          </tbody>
        </table>
        <t>
          The Identity Certificate requires a URI SAN. The ans:// scheme
          is syntactically valid per RFC 3986 <xref target="RFC3986"/>
          Section 3.1 and permitted in URI SANs per RFC 5280
          <xref target="RFC5280"/> Section 4.2.1.6.
        </t>
      </section>

      <section anchor="agent-state-lifecycle">
        <name>Agent State Lifecycle</name>
        <t>
          The RA tracks registration state in its database. Only certain
          transitions produce TL events: entering ACTIVE, DEPRECATED,
          REVOKED, or EXPIRED, and renewal while ACTIVE (the
          AGENT_RENEWED event type). RENEWED is a TL event type, not a
          distinct registration state; the agent remains ACTIVE throughout
          the renewal process.
        </t>
        <table>
          <thead>
            <tr><th>State</th><th>Description</th></tr>
          </thead>
          <tbody>
            <tr><td>PENDING</td><td>Awaiting validation</td></tr>
            <tr><td>PENDING_DNS</td><td>Domain validated; awaiting DNS record verification</td></tr>
            <tr><td>ACTIVE</td><td>Operational</td></tr>
            <tr><td>DEPRECATED</td><td>Signals consumers to migrate</td></tr>
            <tr><td>REVOKED</td><td>Certificates invalidated (terminal)</td></tr>
            <tr><td>EXPIRED</td><td>Requires renewal (terminal)</td></tr>
          </tbody>
        </table>
      </section>

      <section anchor="cryptographic-standards">
        <name>Cryptographic Data Integrity Standards</name>
        <table>
          <thead>
            <tr><th>Requirement</th><th>Standard</th><th>Rule</th></tr>
          </thead>
          <tbody>
            <tr><td>Canonicalization</td><td>JCS (RFC 8785)</td><td>All JSON MUST be canonicalized before signing or hashing</td></tr>
            <tr><td>Signature format</td><td>JWS Detached</td><td>Payload is not embedded; signatures stored separately</td></tr>
            <tr><td>Algorithm</td><td>ES256 (ECDSA P-256/SHA-256)</td><td>Default. MUST support algorithm agility.</td></tr>
            <tr><td>Wire format</td><td>JWS Compact</td><td>&lt;header&gt;..signature (two dots; detached payload)</td></tr>
          </tbody>
        </table>
        <t>
          Every signature MUST include protected headers: alg (signing
          algorithm), kid (key identifier), typ (type indicator),
          timestamp (Unix timestamp), and raId (RA instance identifier).
          All JSON payloads MUST be canonicalized per JCS
          <xref target="RFC8785"/> before signing. Signatures use JWS
          Compact Serialization <xref target="RFC7515"/> with the
          JSON data interchange format <xref target="RFC8259"/>.
        </t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="trust-security">
      <name>Trust, Security, and Attestation</name>

      <section anchor="verification-tiers">
        <name>Verification Tiers</name>
        <t>
          A client verifies an agent through independent checks, each
          using a different trust channel:
        </t>
        <table>
          <thead>
            <tr><th>Step</th><th>Check</th><th>Trust channel</th></tr>
          </thead>
          <tbody>
            <tr><td>1</td><td>PKI certificate validation</td><td>CA system</td></tr>
            <tr><td>2</td><td>DANE record validation</td><td>DNS (DNSSEC)</td></tr>
            <tr><td>3</td><td>TL verification</td><td>TL (KMS-signed)</td></tr>
          </tbody>
        </table>
        <table>
          <thead>
            <tr><th>Tier</th><th>Steps</th><th>Shorthand</th></tr>
          </thead>
          <tbody>
            <tr><td>Bronze</td><td>1</td><td>PKI only</td></tr>
            <tr><td>Silver</td><td>1-2</td><td>PKI + DANE</td></tr>
            <tr><td>Gold</td><td>1-3</td><td>PKI + DANE + TL</td></tr>
          </tbody>
        </table>
        <t>
          A tier describes what the client verified, not a property the RA
          assigned. The RA specifies TLSA 3 0 1 [sha256_hash]: DANE-EE
          (usage 3), full Server Certificate (selector 0), SHA-256
          (matching type 1) <xref target="RFC6698"/>.
        </t>
        <t>
          DANE requires DNSSEC <xref target="RFC4033"/>. Per RFC 6698
          Section 4, a TLSA RRset whose DNSSEC validation state is not
          "secure" MUST be treated as unusable, and the client falls back
          to standard PKIX certificate validation.
        </t>
      </section>

      <section anchor="mtls">
        <name>Mutual TLS Between ANS-Registered Agents</name>
        <t>The mTLS handshake proceeds as follows:</t>
        <ol>
          <li>Caller sends ClientHello.</li>
          <li>Server returns Server Certificate + CertificateRequest.</li>
          <li>Caller presents its Identity Certificate.</li>
          <li>Server verifies the caller's Identity Certificate against the ANS Private CA.</li>
          <li>mTLS tunnel established. The caller knows the server's FQDN; the server knows the caller's ANSName.</li>
          <li>Caller verifies the server's versioned identity via _ans-badge TXT record or TL query.</li>
        </ol>
        <t>
          When the agent's ANS Trust Card carries a stapled SCITT receipt,
          the caller verifies locally with no TL call.
        </t>
        <t>
          When an agent acts on behalf of a human, the agent proves its
          own identity via mTLS. The human's authorization travels
          separately as a delegation token <xref target="RFC8693"/>.
        </t>
      </section>

      <section anchor="key-management">
        <name>Key Management</name>
        <t>
          The RA never generates, handles, or accesses an agent's private
          keys. The AHP owns its key lifecycle. Each RA instance MUST
          register at least one active public key with the TL before
          submitting events. Rotation uses an overlap window: new keys are
          registered with future validFrom dates; both old and new remain
          active during the transition. Historical signatures remain valid
          after key expiration but not after revocation.
        </t>
      </section>

      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>
          Query privacy is out of scope for the RA. Discovery Services
          SHOULD implement privacy-preserving techniques (Private
          Information Retrieval, Anonymized Query Relays).
        </t>
        <t>
          The TLS handshake reveals the agent's hostname to network
          observers. Encrypted Client Hello (ECH, RFC 9849)
          <xref target="RFC9849"/> encrypts the inner ClientHello, hiding
          the hostname. When an AHP provides an ECH configuration during
          registration, the RA publishes it in the HTTPS record.
        </t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="operational-flow">
      <name>Operational Flow</name>

      <section anchor="registration-flow">
        <name>Initial Registration Flow</name>
        <t>Registration has two stages:</t>
        <ol>
          <li>AHP submits registration request.</li>
          <li>RA validates domain control (ACME) <xref target="RFC8555"/>.</li>
          <li>RA obtains Server + Identity Certificates.</li>
          <li>RA seals event into TL. (Point of no return.)</li>
          <li>RA returns certificates + DNS record content to AHP.</li>
          <li>AHP provisions DNS.</li>
        </ol>

        <section anchor="stage1-pending">
          <name>Stage 1: Pending Registration</name>
          <t>The AHP submits a registration request containing:</t>
          <ul>
            <li>Identity: agentHost (FQDN), version (semver), agentDisplayName, optional agentDescription.</li>
            <li>Endpoints: Array of protocol-specific endpoints (minimum 1).</li>
            <li>Certificates: Identity CSR (required), optional Server CSR or existing Server Certificate (BYOC).</li>
            <li>Registration Metadata: Optional agentCardContent.</li>
            <li>Organization: Optional lei (Legal Entity Identifier).</li>
            <li>Privacy: Optional echConfigList (ECH configuration).</li>
          </ul>
        </section>

        <section anchor="stage2-activation">
          <name>Stage 2: Activation</name>
          <t>
            All validations must pass before activation: domain control
            (ACME DNS-01 or HTTP-01), organization identity (when
            applicable), schema integrity (fetch and hash), and DNSSEC
            presence (advisory).
          </t>
          <t>The activation sequence, irreversible once step 4 completes:</t>
          <ol>
            <li>Certificate issuance: RA obtains the Identity Certificate and the Server Certificate.</li>
            <li>DNS record generation: RA generates record set content.</li>
            <li>Event payload: RA hashes Registration Metadata and assembles the event payload.</li>
            <li>Log sealing: RA submits signed event to TL.</li>
            <li>Artifact delivery: RA delivers certificates and DNS record content to AHP.</li>
            <li>AHP provisions DNS: The AHP creates the DNS records using the content the RA specified.</li>
          </ol>
        </section>
      </section>

      <section anchor="lifecycle-operations">
        <name>Lifecycle Operations</name>
        <table>
          <thead>
            <tr><th>Operation</th><th>Trigger</th><th>TL Event</th><th>DNS Effect</th></tr>
          </thead>
          <tbody>
            <tr><td>Version bump</td><td>Code/config change</td><td>AGENT_REGISTERED</td><td>New per-version records</td></tr>
            <tr><td>Renewal</td><td>Certificate expiring</td><td>AGENT_RENEWED</td><td>None</td></tr>
            <tr><td>Revocation</td><td>Agent shutdown</td><td>AGENT_REVOKED</td><td>Per-version removed</td></tr>
          </tbody>
        </table>
      </section>

      <section anchor="dns-records">
        <name>DNS Record Set</name>
        <t>
          The RA generates record content for child labels under the
          agent's FQDN:
        </t>
        <table>
          <thead>
            <tr><th>Record</th><th>Label</th><th>Type</th><th>Purpose</th></tr>
          </thead>
          <tbody>
            <tr><td>Discovery</td><td>_ans.{host}</td><td>TXT</td><td>Protocol and metadata location</td></tr>
            <tr><td>Badge</td><td>_ans-badge.{host}</td><td>TXT</td><td>TL badge URL for verification</td></tr>
            <tr><td>DANE</td><td>_443._tcp.{host}</td><td>TLSA</td><td>Server Cert fingerprint</td></tr>
            <tr><td>HTTPS</td><td>{host}</td><td>HTTPS</td><td>ALPN hints, ECH parameters</td></tr>
            <tr><td>Identity DANE</td><td>_ans-identity._tls.{host}</td><td>TLSA</td><td>Identity Cert fingerprint</td></tr>
          </tbody>
        </table>
        <t>
          The _ans TXT record is a connection hint published in DNS:
        </t>
        <artwork><![CDATA[
_ans.{agentHost} IN TXT
  "v=ans1; version=v1.0.0; p=a2a;
   url=https://agent.example.com/.well-known/agent-card.json"
]]></artwork>
        <t>
          The _ans-badge TXT record points to the version's badge in
          the TL:
        </t>
        <artwork><![CDATA[
_ans-badge.{agentHost} IN TXT
  "v=ans-badge1; version=v1.0.0;
   url=https://{tl_host}/v1/agents/{agentId}"
]]></artwork>
      </section>

      <section anchor="integrity-verification">
        <name>Ongoing Integrity Verification</name>
        <t>
          An AIM MUST distinguish between "Unreachable" (transient network
          failure, retry later) and "Mismatch" (the content has changed,
          remediation needed).
        </t>
        <table>
          <thead>
            <tr><th>Check</th><th>What the AIM does</th><th>Pass condition</th></tr>
          </thead>
          <tbody>
            <tr><td>DNS pointer</td><td>Authoritative query for _ans and _ans-badge with DNSSEC</td><td>Records exist and validate</td></tr>
            <tr><td>Trust Card integrity</td><td>Fetch Trust Card, hash content</td><td>Hash matches sealed agentCardHash</td></tr>
            <tr><td>Schema integrity</td><td>Fetch each schema.url, hash content</td><td>Hash matches schema.hash in Trust Card</td></tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="interoperability">
      <name>Interoperability and Standards Alignment</name>

      <section anchor="hcs14-profile">
        <name>HCS-14 ANS Profile</name>
        <t>
          An ANS Profile within HCS-14 allows resolvers to verify ANS DNS
          records, certificates, and log proofs through a standard
          interface without ANS-specific branching.
        </t>
      </section>

      <section anchor="hcs27-checkpoint">
        <name>HCS-27 Merkle Tree Checkpoint</name>
        <t>
          A companion specification <xref target="HCS27"/> defines a
          checkpoint format for publishing the TL's root hash to a
          distributed consensus topic. The timestamp is independently
          verifiable, strengthening the guarantee that historical log
          entries have not been backdated or rewritten.
        </t>
      </section>

      <section anchor="scitt-alignment">
        <name>IETF SCITT Alignment</name>
        <t>
          The SCITT architecture <xref target="I-D.ietf-scitt-architecture"/>
          defines an append-only transparency service that accepts signed
          statements, registers them, and returns receipts. The ANS TL
          follows this model. A future goal is formal SCITT compliance,
          adopting COSE (RFC 9052) <xref target="RFC9052"/> signed
          statements and standardized receipt formats.
        </t>
      </section>

      <section anchor="deployment-topologies">
        <name>Deployment Topologies</name>
        <t>
          The same RA, TL, and certificate infrastructure can run at
          different scopes:
        </t>
        <ul>
          <li>Public ANS: internet-facing RA, TL, and event feeds.</li>
          <li>Internal ANS: behind a corporate network.</li>
          <li>Enterprise ANS as a service: hosted on behalf of an enterprise.</li>
          <li>Extranet ANS: semi-private, shared among partner organizations.</li>
        </ul>
      </section>

      <section anchor="dnsaid-coexistence">
        <name>Coexistence with DNS-AID</name>
        <t>
          A domain owner can publish DNS-AID SVCB records
          <xref target="DNSAID"/> <xref target="RFC9460"/> alongside _ans
          TXT records. The two record families occupy different DNS names
          and do not collide.
        </t>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="formal-properties">
      <name>Formal Properties</name>

      <section anchor="two-layer-proof">
        <name>Two-Layer Proof Composition</name>
        <t>
          A sealed event carries two independent proofs of existence, each
          anchored to a different trust root.
        </t>
        <t>
          Layer 1 (Transparency Log): Let E be a lifecycle event sealed at
          leaf index i in a log of size n with Merkle root R. An inclusion
          proof consists of a hash path of length ceil(log2(n)). The proof
          is valid iff recomputing the root from LeafHash(E), the path,
          and i yields R, and the signature over R verifies against the
          TL's published KMS key.
        </t>
        <t>
          Layer 2 (Consensus Checkpoint): An HCS-27 checkpoint publishes R
          to a distributed consensus topic at timestamp T. Together, the
          two layers guarantee: inclusion, non-repudiation (removing E
          after checkpoint publication contradicts the collision resistance
          of SHA-256), and temporal binding (the consensus topic provides
          independently verifiable timestamps).
        </t>
      </section>

      <section anchor="boundary-enforcement">
        <name>Cryptographic Boundary Enforcement</name>
        <t>
          The protocol distributes trust across four services. No service
          accepts another's assertions without verifying a cryptographic
          signature.
        </t>
        <table>
          <thead>
            <tr><th>Boundary</th><th>Verification</th><th>What compromise means</th></tr>
          </thead>
          <tbody>
            <tr><td>RA to TL</td><td>TL verifies producer signature (ES256, registered key)</td><td>Forged event rejected at ingestion</td></tr>
            <tr><td>TL to Verifier</td><td>Verifier checks KMS signature on checkpoint</td><td>Tampered checkpoint fails validation</td></tr>
            <tr><td>TL to Event Stream</td><td>Each event carries the producer's signature</td><td>Fabricated event fails signature check</td></tr>
            <tr><td>AIM to RA</td><td>RA re-verifies each finding against TL records</td><td>False finding detected on re-verification</td></tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>
        This section addresses threats identified through a MAESTRO
        framework analysis applied to the ANS architecture.
      </t>

      <section anchor="threat-impersonation">
        <name>Agent Impersonation</name>
        <t>
          Risk: An adversary impersonates a legitimate agent. Mitigation:
          Mandatory PKI with dual certificates. The Identity Certificate
          binds a specific code version to a verified domain. The agent
          must prove possession of the private key.
        </t>
      </section>

      <section anchor="threat-registry-poisoning">
        <name>Registry Poisoning</name>
        <t>
          Risk: An adversary injects malicious data into the registry.
          Mitigation: The Transparency Log makes all sealed entries
          immutable and tamper-evident. The RA validates all payloads
          before sealing. The AIM continuously compares live state against
          sealed records.
        </t>
      </section>

      <section anchor="threat-mitm">
        <name>Man-in-the-Middle</name>
        <t>
          Risk: An adversary modifies communications between components.
          Mitigation: Message integrity via digital signatures (JWS
          Detached). mTLS between agents using Identity Certificates. DANE
          provides a second trust channel independent of the CA system.
        </t>
      </section>

      <section anchor="threat-dos">
        <name>Denial of Service</name>
        <t>
          Risk: Adversary incapacitates RA, TL, or resolution services.
          Mitigation: The data plane (mTLS handshakes between agents)
          continues during RA or AIM outages. Previously established trust
          proofs remain valid until certificates expire.
        </t>
      </section>

      <section anchor="threat-tl-compromise">
        <name>Transparency Log Compromise</name>
        <t>
          Risk: An adversary modifies or deletes historical TL entries.
          Mitigation: Merkle tree structure makes tampering mathematically
          detectable via consistency proofs. KMS key separation ensures the
          signing key does not reside on the TL host. HCS-27 checkpoint
          anchoring to a public distributed ledger provides independently
          verifiable timestamps.
        </t>
      </section>

      <section anchor="threat-ra-compromise">
        <name>Compromised RA Instance</name>
        <t>
          Risk: A single RA instance is breached. Mitigation: Every TL
          entry records the raId of the processing instance. Auditors
          isolate every event that instance touched. Separation of duties
          requires the RA's DNS permissions exclude TLSA write access.
        </t>
      </section>

      <section anchor="single-operator-risk">
        <name>Single Operator Risk</name>
        <t>
          For a given registration, the same entity may operate both the
          RA and the TL. HCS-27 consensus checkpoints are the primary
          mitigation: the TL's root hash is anchored to an independently
          verifiable ledger. Federation adds a second layer: an agent can
          register with an RA operated by one entity and have events
          sealed by a TL operated by another.
        </t>
      </section>

      <section anchor="remediation">
        <name>Ecosystem Integrity and Remediation</name>
        <t>Four principles guard against malicious monitoring services:</t>
        <ol>
          <li>Monitors report, the RA acts.</li>
          <li>Reports are public and signed.</li>
          <li>Quorum before action: the RA MUST NOT act on a single report.</li>
          <li>Evidence must be verifiable with cryptographic proof.</li>
        </ol>
      </section>
    </section>

    <!-- ============================================================ -->
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions at this time.</t>
      <t>
        Future revisions may request registration of the "ans" URI scheme
        with IANA per RFC 7595, and registration of underscore labels
        "_ans", "_ans-badge", and "_ans-identity" per RFC 8552.
      </t>
    </section>

  </middle>

  <back>

    <!-- ============================================================ -->
    <references>
      <name>References</name>

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

        <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035">
          <front>
            <title>Domain Names - Implementation and Specification</title>
            <author fullname="P. Mockapetris"/>
            <date year="1987" month="November"/>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
        </reference>

        <reference anchor="RFC1123" target="https://www.rfc-editor.org/info/rfc1123">
          <front>
            <title>Requirements for Internet Hosts - Application and Support</title>
            <author fullname="R. Braden"/>
            <date year="1989" month="October"/>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1123"/>
        </reference>

        <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 fullname="S. Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
        </reference>

        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee"/>
            <author fullname="R. Fielding"/>
            <author fullname="L. Masinter"/>
            <date year="2005" month="January"/>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
        </reference>

        <reference anchor="RFC4033" target="https://www.rfc-editor.org/info/rfc4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends"/>
            <author fullname="R. Austein"/>
            <author fullname="M. Larson"/>
            <author fullname="D. Massey"/>
            <author fullname="S. Rose"/>
            <date year="2005" month="March"/>
          </front>
          <seriesInfo name="RFC" value="4033"/>
        </reference>

        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper"/>
            <author fullname="S. Santesson"/>
            <author fullname="S. Farrell"/>
            <author fullname="S. Boeyen"/>
            <author fullname="R. Housley"/>
            <author fullname="W. Polk"/>
            <date year="2008" month="May"/>
          </front>
          <seriesInfo name="RFC" value="5280"/>
        </reference>

        <reference anchor="RFC6698" target="https://www.rfc-editor.org/info/rfc6698">
          <front>
            <title>The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA</title>
            <author fullname="P. Hoffman"/>
            <author fullname="J. Schlyter"/>
            <date year="2012" month="August"/>
          </front>
          <seriesInfo name="RFC" value="6698"/>
        </reference>

        <reference anchor="RFC6960" target="https://www.rfc-editor.org/info/rfc6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson"/>
            <author fullname="M. Myers"/>
            <author fullname="R. Ankney"/>
            <author fullname="A. Malpani"/>
            <author fullname="S. Galperin"/>
            <author fullname="C. Adams"/>
            <date year="2013" month="June"/>
          </front>
          <seriesInfo name="RFC" value="6960"/>
        </reference>

        <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones"/>
            <author fullname="J. Bradley"/>
            <author fullname="N. Sakimura"/>
            <date year="2015" month="May"/>
          </front>
          <seriesInfo name="RFC" value="7515"/>
        </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 fullname="B. Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
        </reference>

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

        <reference anchor="RFC8555" target="https://www.rfc-editor.org/info/rfc8555">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes"/>
            <author fullname="J. Hoffman-Andrews"/>
            <author fullname="D. McCarney"/>
            <author fullname="J. Kasten"/>
            <date year="2019" month="March"/>
          </front>
          <seriesInfo name="RFC" value="8555"/>
        </reference>

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

        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad"/>
            <date year="2022" month="August"/>
          </front>
          <seriesInfo name="RFC" value="9052"/>
        </reference>

        <reference anchor="I-D.ietf-scitt-architecture" target="https://datatracker.ietf.org/doc/draft-ietf-scitt-architecture/">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz"/>
            <author fullname="A. Delignat-Lavaud"/>
            <author fullname="C. Fournet"/>
            <author fullname="Y. Deshpande"/>
            <author fullname="S. Lasker"/>
            <date year="2025" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
        </reference>

      </references>

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

        <reference anchor="RFC6763" target="https://www.rfc-editor.org/info/rfc6763">
          <front>
            <title>DNS-Based Service Discovery</title>
            <author fullname="S. Cheshire"/>
            <author fullname="M. Krochmal"/>
            <date year="2013" month="February"/>
          </front>
          <seriesInfo name="RFC" value="6763"/>
        </reference>

        <reference anchor="RFC8693" target="https://www.rfc-editor.org/info/rfc8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones"/>
            <author fullname="A. Nadalin"/>
            <author fullname="B. Campbell"/>
            <author fullname="J. Bradley"/>
            <author fullname="C. Mortimore"/>
            <date year="2020" month="January"/>
          </front>
          <seriesInfo name="RFC" value="8693"/>
        </reference>

        <reference anchor="RFC9460" target="https://www.rfc-editor.org/info/rfc9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz"/>
            <author fullname="M. Bishop"/>
            <author fullname="E. Nygren"/>
            <date year="2023" month="November"/>
          </front>
          <seriesInfo name="RFC" value="9460"/>
        </reference>

        <reference anchor="RFC9849" target="https://www.rfc-editor.org/info/rfc9849">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="E. Rescorla"/>
            <author fullname="K. Oku"/>
            <author fullname="N. Sullivan"/>
            <author fullname="C. A. Wood"/>
            <date year="2025"/>
          </front>
          <seriesInfo name="RFC" value="9849"/>
        </reference>

        <reference anchor="ANSv1">
          <front>
            <title>Agent Name Service (ANS): A Universal Directory for Secure AI Agent Discovery and Interoperability</title>
            <author fullname="V. S. Narajala"/>
            <author fullname="K. Huang"/>
            <author fullname="I. Habler"/>
            <author fullname="A. Sheriff"/>
            <date year="2025"/>
          </front>
          <refcontent>IEEE ICAIC 2026</refcontent>
        </reference>

        <reference anchor="MCP" target="https://modelcontextprotocol.io/specification">
          <front>
            <title>Model Context Protocol Specification</title>
            <author><organization>Anthropic</organization></author>
            <date year="2025"/>
          </front>
        </reference>

        <reference anchor="A2A" target="https://google.github.io/A2A/">
          <front>
            <title>Agent-to-Agent (A2A) Protocol</title>
            <author><organization>Google</organization></author>
            <date year="2025"/>
          </front>
        </reference>

        <reference anchor="HCS14" target="https://github.com/hashgraph/hedera-improvement-proposal/blob/main/HIP/hip-14.md">
          <front>
            <title>HCS-14: Universal Agent ID</title>
            <author><organization>Hiero</organization></author>
            <date year="2025"/>
          </front>
        </reference>

        <reference anchor="HCS27" target="https://github.com/hashgraph/hedera-improvement-proposal/blob/main/HIP/hip-27.md">
          <front>
            <title>HCS-27: Merkle Tree Checkpoint Specification</title>
            <author><organization>Hiero HCS-27 Working Group</organization></author>
            <date year="2025"/>
          </front>
        </reference>

        <reference anchor="DNSAID" target="https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/">
          <front>
            <title>DNS for AI Discovery</title>
            <author fullname="J. Mozley"/>
            <author fullname="N. Williams"/>
            <author fullname="B. Sarikaya"/>
            <author fullname="R. Schott"/>
            <date year="2026" month="March"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mozleywilliams-dnsop-dnsaid-01"/>
        </reference>

      </references>
    </references>

    <!-- ============================================================ -->
    <section anchor="appendix-examples">
      <name>Data Structure Examples</name>
      <t>
        All examples follow one agent, "Acme Support Agent"
        (support.example.com, version 1.5.0), through the registration
        lifecycle. CSRs and signatures are truncated for brevity.
      </t>

      <section anchor="example-registration-request">
        <name>Registration Request</name>
        <sourcecode type="json"><![CDATA[
{
  "agentDisplayName": "Acme Support Agent",
  "agentDescription": "Customer support agent.",
  "version": "1.5.0",
  "agentHost": "support.example.com",
  "endpoints": [
    {
      "protocol": "A2A",
      "agentUrl": "wss://support.example.com/a2a",
      "metadataUrl":
        "https://support.example.com/.well-known/agent-card.json",
      "transports": ["STREAMABLE-HTTP", "SSE"],
      "functions": [
        { "id": "lookupOrder", "name": "Lookup Order",
          "tags": ["order", "support"] }
      ]
    }
  ],
  "identityCsrPEM": "-----BEGIN CERTIFICATE REQUEST-----
    ...(truncated)...
    -----END CERTIFICATE REQUEST-----",
  "serverCsrPEM": "-----BEGIN CERTIFICATE REQUEST-----
    ...(truncated)...
    -----END CERTIFICATE REQUEST-----",
  "lei": "549300EXAMPLE00LEI17"
}
]]></sourcecode>
      </section>

      <section anchor="example-tl-event">
        <name>TL Event Payload</name>
        <sourcecode type="json"><![CDATA[
{
  "ansId": "550e8400-e29b-41d4-a716-446655440000",
  "ansName": "ans://v1.5.0.support.example.com",
  "eventType": "AGENT_REGISTERED",
  "agent": {
    "host": "support.example.com",
    "name": "Acme Support Agent",
    "version": "v1.5.0",
    "providerId": "PID-8294",
    "lei": "549300EXAMPLE00LEI17"
  },
  "attestations": {
    "identityCert": {
      "fingerprint": "SHA256:22b8a804...",
      "type": "X509-OV-CLIENT"
    },
    "serverCert": {
      "fingerprint": "SHA256:d2b71bc0...",
      "type": "X509-DV-SERVER"
    },
    "domainValidation": "ACME-DNS-01",
    "dnssecStatus": "fully_validated"
  },
  "issuedAt": "2026-03-05T18:00:00.000000Z",
  "raId": "id-A",
  "timestamp": "2026-03-05T18:00:00.000000Z"
}
]]></sourcecode>
      </section>

      <section anchor="example-dns-records">
        <name>DNS Records</name>
        <sourcecode type="dns"><![CDATA[
$ORIGIN support.example.com.
$TTL 3600

; Core Location Records (Managed by AHP)
@       IN  A      192.0.2.50
@       IN  AAAA   2001:db8::50

; RA generates; AHP provisions
@            IN  HTTPS  1 . alpn="h2"
_443._tcp    IN  TLSA   3 0 1 <sha256_of_server_cert>

_ans         IN  TXT    "v=ans1; version=v1.5.0; p=a2a;
    url=https://support.example.com/.well-known/agent-card.json"

_ans-badge   IN  TXT    "v=ans-badge1; version=v1.5.0;
    url=https://{tl_host}/v1/agents/{agentId}"

; High-assurance (AHP-managed, per ADR 010)
_ans-identity._tls IN TLSA 3 0 1 <sha256_of_identity_cert>
]]></sourcecode>
      </section>
    </section>

  </back>
</rfc>
