<?xml version="1.0" encoding="UTF-8"?>
<?rfc strict="yes" editing="yes"?>
<!DOCTYPE rfc [
  <!ENTITY RFC2119 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc2119.txt'>
  <!ENTITY RFC4086 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc4086.txt'>
  <!ENTITY RFC8174 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc8174.txt'>
  <!ENTITY RFC8610 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc8610.txt'>
  <!ENTITY RFC9334 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc9334.txt'>
  <!ENTITY RFC9711 PUBLIC '' 'https://www.rfc-editor.org/rfc/rfc9711.txt'>
]>
<rfc category="std"
     consensus="true"
     docName="draft-anandakrishnan-rats-ptv-agent-identity-00"
     ipr="trust200902"
     submissionType="IETF"
     xml:lang="en"
     tocInclude="true"
     version="3">

  <front>
    <title abbrev="PTV Attested Agent Identity">
      The Prove-Transform-Verify (PTV) Protocol for Attested Agent Identity
    </title>

    <author initials="A." surname="Damodaran" fullname="Anandakrishnan Damodaran">
      <organization>Sovereign AI Stack</organization>
      <address>
        <email>ananda.krishnan@hotmail.com</email>
        <uri>https://github.com/anandkrshnn</uri>
      </address>
    </author>

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

    <area>Security</area>
    <workgroup>RATS</workgroup>
    <keyword>Attestation</keyword>
    <keyword>Zero-Knowledge Proof</keyword>
    <keyword>Agent Identity</keyword>
    <keyword>Hardware Root of Trust</keyword>
    <keyword>TPM 2.0</keyword>

    <abstract>
      <t>
        This document describes the Prove-Transform-Verify (PTV) protocol for
        hardware-anchored attestation of AI agent identity. PTV is designed to
        enable an agent to prove that it is running an authorized model and
        policy without exposing sensitive data. The protocol is intended to
        compose with existing RATS attestation mechanisms and to support
        exercise-time re-attestation requirements.
      </t>
      <t>
        The protocol defines a common envelope format (CBOR/CDDL), message types
        for attestation request/response, and a threat model that separates
        identity binding integrity from behavioral continuity. Behavioral
        continuity is treated as a separate requirement class addressed via
        exercise-time checks and execution receipts (e.g., SCITT composition),
        not by PTV alone.
      </t>
      <t>
        Example use cases include healthcare clinical decision support systems
        (CDSS), critical infrastructure industrial control systems (ICS/OT), and
        cross-border regulatory compliance scenarios.
      </t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>
        Current identity frameworks (OAuth 2.0, SPIFFE) establish workload
        identity but do not verify what model an agent is running or whether
        it follows authorized policies. This gap creates systemic risk:
        a compromised agent can generate unauthorized outputs while still
        presenting valid credentials.
      </t>
      <t>
        For example, in a clinical decision support system, a hospital may need
        cryptographic evidence that a diagnosis was produced by an approved model
        and policy set, without exposing patient records or model internals.
        Similarly, in an industrial control system, an operator may need
        cryptographic evidence that a safety-critical control action was generated
        by an authorized agent configuration, without exporting plant telemetry or
        proprietary control logic.
      </t>
      <t>
        The PTV protocol addresses this gap by binding agent identity to
        hardware roots of trust (TPM 2.0 or Secure Enclave) and using zero-knowledge
        proofs to attest to model integrity without exposing model weights or
        inference data.
      </t>

      <section anchor="terminology">
        <name>Terminology and Definitions</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 indent="25">
          <dt>Agent</dt>
          <dd>An autonomous software entity that performs tasks on behalf of
          a user or system.</dd>

          <dt>Attester</dt>
          <dd>The agent component responsible for generating cryptographic
          attestations about its state or actions.</dd>

          <dt>Verifier</dt>
          <dd>A system that validates cryptographic attestations received
          from Attesters without accessing underlying sensitive data.</dd>

          <dt>Relying Party</dt>
          <dd>A system that consumes attestation results to make authorization
          decisions.</dd>

          <dt>PTV Edge Proxy</dt>
          <dd>A trusted gateway that performs attestation on behalf of
          constrained devices lacking hardware roots of trust.</dd>

          <dt>Nonce</dt>
          <dd>A cryptographically random value used to prevent replay attacks.</dd>

          <dt>Triage Band</dt>
          <dd>A risk classification (ROUTINE, ZK_PROOF, BFT) that determines
          the attestation mechanism. Valid values are 0 (ROUTINE), 1 (ZK_PROOF),
          or 2 (BFT).</dd>

          <dt>Governance Pack</dt>
          <dd>A set of policies and compliance rules applied during attestation.</dd>

          <dt>Proof</dt>
          <dd>A zero-knowledge proof attesting to agent state.</dd>

          <dt>Sovereign Bound Metadata</dt>
          <dd>Jurisdiction and data residency metadata embedded in attestation
          chains that cannot be removed without invalidating the attestation.
          The corresponding envelope field is <tt>sovereign_bound</tt>, which
          contains the subfields <tt>jurisdiction</tt>, <tt>data_residency</tt>,
          and <tt>compliance</tt>.</dd>

          <dt>Hardware Root of Trust</dt>
          <dd>A tamper-resistant chip (TPM 2.0 or Secure Enclave) providing
          cryptographic evidence that software has not been altered since
          last attestation.</dd>
        </dl>
      </section>
    </section>

    <section anchor="threat-model">
      <name>Threat Model</name>

      <section anchor="identity-binding">
        <name>Identity Binding Integrity</name>
        <t>
          Identity binding integrity asks: "Is this the agent that was enrolled,
          and is the signer of this attestation trusted to hold the corresponding
          key?"
        </t>
        <t>
          PTV addresses this class of threats by:
        </t>
        <ul spacing="compact">
          <li>binding attestation evidence to a hardware root of trust (e.g., TPM AK),</li>
          <li>using nonce-based freshness to prevent replay, and</li>
          <li>allowing policy-aware verification of configuration state.</li>
        </ul>
        <t>
          This corresponds to cryptographic identity continuity in the sense of
          the RATS Architecture <xref target="RFC9334"/>. A relying party that
          consumes a PTV attestation MAY treat it as an assertion about identity
          binding integrity only, unless additional mechanisms are in place.
        </t>
      </section>

      <section anchor="behavioral-continuity">
        <name>Behavioral Continuity (Out of Scope for -01)</name>
        <t>
          Behavioral continuity asks: "Is the enrolled agent still behaving
          within its attested envelope after context changes?"
        </t>
        <t>
          This version of PTV does not fully address this requirement class.
          In particular, PTV does not detect or mitigate:
        </t>
        <ul spacing="compact">
          <li>behavioral drift after context compression or summarization,</li>
          <li>model weight replacement or fine-tuning after enrollment, and</li>
          <li>runtime drift from adversarial prompt injection or accumulated
          state corruption.</li>
        </ul>
        <t>
          A valid PTV attestation on a behaviorally-drifted agent is therefore a
          false signal of behavioral identity continuity. For high-stakes use
          cases such as clinical decision support systems (CDSS) and ICS/OT,
          relying parties SHOULD treat behavioral continuity as a separate
          requirement. It can be partially addressed by combining PTV freshness
          with delegation provenance (e.g., HDP) and execution outcome verification
          (e.g., SCITT receipts). See <xref target="interop-future"/>.
        </t>
      </section>

      <section anchor="exercise-freshness">
        <name>Exercise-time Freshness Requirement</name>
        <t>
          For high-stakes deployments, relying parties SHOULD be able to demand
          fresh attestation at exercise time (per authorization decision), via
          an EAT nonce challenge or a PTV challenge-response, rather than relying
          solely on a credential issued at enrollment time.
        </t>
      </section>
    </section>

    <section anchor="protocol-model">
      <name>PTV Model and Roles</name>

      <section anchor="protocol-overview">
        <name>Protocol Overview</name>
        <t>
          The PTV protocol operates through three phases:
        </t>
        <figure anchor="ptv-sequence-diagram">
          <name>PTV Protocol Sequence Diagram</name>
          <artwork><![CDATA[
   Agent                    Federation Hub                   Verifier
    |                           |                                |
    |--[1] PROVE---------------|                                |
    |  - Generate proof         |                                |
    |  - Hash: Model+Metadata   |                                |
    |                           |                                |
    |                           |--[2] TRANSFORM--------------->|
    |                           |  - Forward Proof Only         |
    |                           |                              |
    |                           |<-[3] VERIFY-------------------|
    |                           |  - Validate Proof             |
    |                           |  - No Raw Data Exposed        |
]]></artwork>
        </figure>
        <t>
          The three phases are as follows:
        </t>
        <ul spacing="compact">
          <li><strong>PROVE:</strong> The agent generates a cryptographic proof
          locally that a task was executed correctly on an authorized model.</li>
          <li><strong>TRANSFORM:</strong> Only the proof (not raw data) is
          transmitted to the central system.</li>
          <li><strong>VERIFY:</strong> The system validates the proof without
          accessing sensitive inputs.</li>
        </ul>
      </section>

      <section anchor="roles">
        <name>Roles</name>
        <t>
          The PTV protocol defines four logical roles:
        </t>
        <ul spacing="compact">
          <li><strong>Attester:</strong> The agent generating attestations.
          May be a direct TPM-bound agent or a constrained device using an
          Edge Proxy.</li>
          <li><strong>Verifier:</strong> The system validating attestations.</li>
          <li><strong>Relying Party:</strong> The system consuming attestation
          results for authorization decisions.</li>
          <li><strong>Edge Proxy:</strong> An optional gateway performing
          attestation on behalf of constrained devices.</li>
        </ul>
      </section>

      <section anchor="deployment-models">
        <name>Deployment Models</name>
        <t>
          PTV supports two deployment models:
        </t>
        <ul spacing="compact">
          <li><strong>Direct Mode:</strong> The agent has a TPM 2.0 or TEE and
          generates proofs natively.</li>
          <li><strong>Proxy-Assisted Mode:</strong> The agent is a constrained
          device (e.g., legacy PLC, sensor) without a TPM. The PTV Edge Proxy
          performs attestation on its behalf.</li>
        </ul>
      </section>
    </section>

    <section anchor="message-formats">
      <name>Message Formats</name>

      <section anchor="envelope">
        <name>CBOR/CDDL Envelope</name>
        <t>
          All PTV messages are encapsulated in a common envelope structure,
          serialized using CBOR <xref target="RFC8610"/>.
        </t>
        <t>
          The following CDDL rules define the envelope:
        </t>
        <artwork><![CDATA[
triage-band = 0..2

ptv-envelope = {
  ptv_version: tstr,
  msg_type: ptv-msg-type,
  nonce: bstr,
  ? attester_id: tstr,
  ? sovereign_bound: {
    jurisdiction: tstr,
    data_residency: tstr,
    compliance: [* tstr]
  },
  ? triage_band: triage-band,
  ? evidence: bstr,
  ? proof: bstr,
  ? policy: ptv-policy,
  ? result: ptv-result,
  ? behavior_fingerprint: bstr,
  ? timestamp: time,
  ? extensions: { * tstr => any }
}

ptv-msg-type = &(
  prove-req: 1,
  prove-resp: 2,
  transform-att: 3,
  verify-result: 4
)

ptv-policy = {
  ? audience: tstr,
  ? policy_uri: tstr,
  ? trust_domain: tstr,
  ? requirements: [* tstr]
}

ptv-result = &(
  success: 0,
  failure: 1,
  indeterminate: 2
)
]]></artwork>
        <t>
          The <tt>behavior_fingerprint</tt> field is OPTIONAL in this version.
          It is intended for deployments that adopt a SCITT-style execution
          receipt pattern. Its contents are opaque bytes with deployment-specific
          semantics; this version does not define normative processing rules.
          See <xref target="scitt-future"/> for discussion of related future work.
        </t>
        <t>
          In <tt>PTV_PROVE_RESP</tt> and <tt>PTV_TRANSFORM_ATT</tt>, exactly one
          of <tt>evidence</tt> or <tt>proof</tt> MUST be present. A message that
          contains neither or both MUST be rejected by the verifier.
        </t>
      </section>

      <section anchor="msg-types">
        <name>Message Types</name>

        <section anchor="prove-req">
          <name>PTV_PROVE_REQ (Message Type 1)</name>
          <t>
            Sent by the relying party to request attestation. Contains a nonce
            and optional policy constraints.
          </t>
          <artwork><![CDATA[
PTV_PROVE_REQ = {
  ptv_version: "1.0",
  msg_type: 1,
  nonce: bstr,
  ? policy: ptv-policy
}
]]></artwork>
        </section>

        <section anchor="prove-resp">
          <name>PTV_PROVE_RESP (Message Type 2)</name>
          <t>
            Sent by the attester in response to a prove request. Contains
            either evidence (for ROUTINE triage) or a proof (for ZK_PROOF triage).
          </t>
          <artwork><![CDATA[
PTV_PROVE_RESP = {
  ptv_version: "1.0",
  msg_type: 2,
  nonce: bstr,
  attester_id: tstr,
  sovereign_bound: {
    jurisdiction: tstr,
    data_residency: tstr,
    compliance: [* tstr]
  },
  triage_band: triage-band,
  (evidence: bstr // ROUTINE triage
   // OR
   proof: bstr),   // ZK_PROOF triage
  ? behavior_fingerprint: bstr,
  timestamp: time
}
]]></artwork>
        </section>

        <section anchor="transform-att">
          <name>PTV_TRANSFORM_ATT (Message Type 3)</name>
          <t>
            Sent by the Edge Proxy to the Verifier.
          </t>
          <artwork><![CDATA[
PTV_TRANSFORM_ATT = {
  ptv_version: "1.0",
  msg_type: 3,
  nonce: bstr,
  attester_id: tstr,
  sovereign_bound: {
    jurisdiction: tstr,
    data_residency: tstr,
    compliance: [* tstr]
  },
  triage_band: triage-band,
  (evidence: bstr // ROUTINE triage
   // OR
   proof: bstr),   // ZK_PROOF triage
  timestamp: time
}
]]></artwork>
        </section>

        <section anchor="verify-result">
          <name>PTV_VERIFY_RESULT (Message Type 4)</name>
          <t>
            Sent by the verifier to the relying party.
          </t>
          <artwork><![CDATA[
PTV_VERIFY_RESULT = {
  ptv_version: "1.0",
  msg_type: 4,
  nonce: bstr,
  result: ptv-result,
  ? reason: tstr,
  ? audit_id: tstr,
  timestamp: time
}
]]></artwork>
        </section>
      </section>

      <section anchor="error-codes">
        <name>Error Code Registry</name>
        <t>
          The following error codes are defined for PTV attestation failures:
        </t>
        <table>
          <name>PTV Error Codes</name>
          <thead>
            <tr>
              <th>Code</th>
              <th>Description</th>
              <th>Recovery Action</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>PTV_ERR_001</td>
              <td>TPM attestation failure</td>
              <td>Verify TPM 2.0 presence and permissions</td>
            </tr>
            <tr>
              <td>PTV_ERR_002</td>
              <td>Proof verification failed</td>
              <td>Regenerate proof with correct inputs</td>
            </tr>
            <tr>
              <td>PTV_ERR_003</td>
              <td>Jurisdiction mismatch</td>
              <td>Check sovereign_bound against policy</td>
            </tr>
            <tr>
              <td>PTV_ERR_004</td>
              <td>Quorum not reached</td>
              <td>Retry with additional consensus nodes</td>
            </tr>
            <tr>
              <td>PTV_ERR_005</td>
              <td>Envelope expired</td>
              <td>Generate fresh attestation</td>
            </tr>
            <tr>
              <td>PTV_ERR_006</td>
              <td>Nonce replay detected</td>
              <td>Discard and request a new nonce generated according to
              the cryptographic randomness guidance in RFC 4086 <xref target="RFC4086"/>.</td>
            </tr>
            <tr>
              <td>PTV_ERR_007</td>
              <td>Model hash not approved</td>
              <td>Update approved model list</td>
            </tr>
          </tbody>
        </table>
      </section>

      <section anchor="performance">
        <name>Performance Characteristics (Informative)</name>
        <t>
          <strong>Note:</strong> The following figures are preliminary
          observations from a prototype implementation. They are provided
          for illustration only and are not normative requirements of the
          protocol.
        </t>
        <table>
          <name>Prototype Performance Observations</name>
          <thead>
            <tr>
              <th>Metric</th>
              <th>Observed Value</th>
              <th>Conditions</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Proof generation</td>
              <td>~187ms</td>
              <td>Prototype, n=10,000 (illustrative)</td>
            </tr>
            <tr>
              <td>Proof verification</td>
              <td>&lt;5ms</td>
              <td>Single proof (prototype)</td>
            </tr>
            <tr>
              <td>Raw proof size</td>
              <td>&lt;300 bytes</td>
              <td>Groth16 (BN254) in prototype</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>
        This section discusses security and privacy considerations for the PTV protocol.
      </t>

      <section anchor="freshness">
        <name>Freshness and Replay</name>
        <t>
          All PTV attestations MUST include a nonce provided by the relying party
          or verifier. The nonce MUST be cryptographically random (see
          <xref target="RFC4086"/>) and MUST NOT be reused across attestation
          sessions. Timestamps SHOULD be included and checked against a
          deployment-specific freshness window (RECOMMENDED: less than or equal to 300 seconds).
        </t>
      </section>

      <section anchor="zkp">
        <name>Zero-Knowledge Proof Mechanism</name>
        <t>
          PTV is designed to be compatible with zero-knowledge proof systems but
          does not mandate a specific construction.
        </t>
        <t>
          The predicate being proven MUST be specified, for example:
          "the hash of the agent configuration matches an enrolled value".
        </t>
        <t>
          The zero-egress property of ZK-proofs aligns with Privacy by Design
          principles. Deployers SHOULD assess compliance with applicable
          regulations; this protocol is designed to facilitate such assessments
          but does not constitute legal certification.
        </t>
      </section>

      <section anchor="misbinding">
        <name>Identity Misbinding</name>
        <t>
          Attestations SHOULD be bound to the specific agent instance using a
          hardware root of trust (TPM 2.0 or Secure Enclave). Software-only
          attestations are NOT RECOMMENDED for high-assurance deployments.
        </t>
      </section>

      <section anchor="dos">
        <name>Denial of Service</name>
        <t>
          Verifiers SHOULD implement rate limiting and proof caching to mitigate
          DoS attacks.
        </t>
      </section>
    </section>

    <section anchor="interop-future">
      <name>Interoperability and Future Work</name>

      <section anchor="eat">
        <name>EAT</name>
        <t>
          When Entity Attestation Tokens (EAT, <xref target="RFC9711"/>) are
          present, PTV evidence and proofs SHOULD map to EAT claims such as
          <tt>eat_nonce</tt>, <tt>swname</tt>, and <tt>swversion</tt>. PTV
          evidence/proofs are also intended to be usable within SEAT/ExPAT-style
          exported attestation mechanisms. A future revision of this document may
          define a concrete mapping.
        </t>
      </section>

      <section anchor="layering-composition">
        <name>Layering and Composition</name>
        <t>
          PTV is designed to compose with complementary protocols that address
          different parts of the agentic trust chain. Specifically:
        </t>
        <ul spacing="compact">
          <li>PTV provides attested agent identity and model/policy binding at
          exercise time (the "who and what is running" layer),</li>
          <li>The Human Delegation Provenance Protocol (HDP)
          <xref target="HDP"/> establishes signed delegation provenance anchored to a
          human principal (the "who authorized what" layer), and</li>
          <li>SCITT-based execution receipts or Execution Outcome Verification (EOV)
          provide evidence of what the agent actually produced (the "what was done"
          layer).</li>
        </ul>
        <t>
          A natural composition point is for an EOV receipt to reference a hash of
          an HDP delegation record as its delegation token, rather than duplicating
          the full provenance chain. Future revisions of this document may describe
          concrete mappings once the HDP and EOV models stabilize.
        </t>
      </section>

      <section anchor="scitt-future">
        <name>SCITT and Execution Receipts</name>
        <t>
          PTV is intended to compose with SCITT as follows:
        </t>
        <ul spacing="compact">
          <li>PTV/SEAT provide attested agent identity and state at exercise time,
          and</li>
          <li>SCITT COSE_Sign1 statements carry execution receipts for actions
          with external effects.</li>
        </ul>
        <t>
          Three open standardization gaps remain, treated as future work:
        </t>
        <ol spacing="compact">
          <li>A registered COSE header label for the behavioral fingerprint.</li>
          <li>A standardized format for behavior probes / fingerprints.</li>
          <li>A live transparency service for cross-domain execution logs.</li>
        </ol>
      </section>

      <section anchor="execution-outcome">
        <name>Execution Outcome Verification</name>
        <t>
          Execution outcome verification is treated as a separate concern from
          attestation. This version assumes that execution receipts, where needed,
          are carried by SCITT or a similar transparency mechanism.
        </t>
        <t>
          Delegation provenance protocols (for example HDP <xref target="HDP"/>)
          and execution-outcome attestation patterns are complementary to PTV
          and out of scope for this version.
        </t>
      </section>
    </section>

    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>
        This document makes no requests of IANA. Future revisions may request
        registration of media types, OAuth parameters, or attestation method
        registries once the protocol design has stabilized.
      </t>
    </section>
  </middle>

  <back>
    <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"/>
          <date year="1997" month="March"/>
        </front>
      </reference>

      <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086">
        <front>
          <title>Randomness Requirements for Security</title>
          <author initials="D." surname="Eastlake"/>
          <author initials="J." surname="Schiller"/>
          <author initials="S." surname="Crocker"/>
          <date year="2005" month="June"/>
        </front>
      </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>
      </reference>

      <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
        <front>
          <title>CBOR Data Definition Language (CDDL)</title>
          <author initials="C." surname="Bormann"/>
          <author initials="H." surname="Birkholz"/>
          <date year="2019" month="June"/>
        </front>
      </reference>

      <reference anchor="RFC9711" target="https://www.rfc-editor.org/info/rfc9711">
        <front>
          <title>Entity Attestation Token (EAT)</title>
          <author initials="L." surname="Lundblade"/>
          <author initials="G." surname="Mandyam"/>
          <author initials="J." surname="O'Donoghue"/>
          <author initials="C." surname="Wallace"/>
          <date year="2024" month="December"/>
        </front>
      </reference>
    </references>

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

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

      <reference anchor="HDP" target="https://datatracker.ietf.org/doc/draft-helixar-hdp-agentic-delegation-00/">
        <front>
          <title>Human Delegation Provenance Protocol (HDP): Cryptographic Chain-of-Custody for Agentic AI Systems</title>
          <author initials="S." surname="Dalugoda" fullname="Siri Dalugoda">
            <organization>Helixar</organization>
          </author>
          <date year="2026" month="March"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>