<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     ipr="trust200902"
     docName="draft-marques-asqav-compliance-receipts-02"
     category="info"
     submissionType="independent"
     version="3">
  <front>
    <title abbrev="Compliance Receipts Profile">Compliance Profile of Signed Action Receipts for AI Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-marques-asqav-compliance-receipts-02"/>
    <author fullname="Joao Andre Gomes Marques"
            initials="J. A."
            surname="Gomes Marques">
      <organization>Asqav</organization>
      <address>
        <postal>
          <country>Portugal</country>
        </postal>
        <email>joaoagm90@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="6"/>
    <area>General</area>
    <keyword>AI Agents</keyword>
    <keyword>Audit Trail</keyword>
    <keyword>Compliance</keyword>
    <keyword>EU AI Act</keyword>
    <keyword>DORA</keyword>

    <abstract>
      <t>This document defines a compliance profile of the signed action receipt format used by AI agents to record machine-readable evidence of access-control decisions. The profile binds receipt fields to the operational record-keeping obligations of Articles 12 and 26 of Regulation (EU) 2024/1689 (the EU AI Act) and to the ICT-related incident management process required by Article 17 of Regulation (EU) 2022/2554 (DORA). It does not redefine the wire format, the canonicalization rule, or the signing algorithms of the underlying receipt format. It tightens a subset of the OPTIONAL fields to REQUIRED, imposes a retention floor, requires at least one timestamping anchor (RFC 3161 or OpenTimestamps; both RECOMMENDED), and adds two extension fields.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction"><name>Introduction</name>
      <section anchor="profile-not-fork"><name>Profile, Not Fork</name>
        <t><xref target="ACTA-RECEIPTS"/> specifies a generic, signed receipt envelope for recording machine-to-machine access control decisions made by AI agents. Section 2.2 of <xref target="ACTA-RECEIPTS"/> defines a common payload field set in which all fields except <tt>type</tt>, <tt>issued_at</tt>, and <tt>issuer_id</tt> are OPTIONAL. Section 5.7 of <xref target="ACTA-RECEIPTS"/> introduces hash chaining (<tt>previousReceiptHash</tt>) inside an optional Commitment Mode extension. <xref target="ACTA-RECEIPTS"/> does not define receipt retention, does not require timestamping anchors, and does not bind to any regulatory regime.</t>
        <t>This document is an additive overlay on <xref target="ACTA-RECEIPTS"/>: it constrains fields the upstream draft leaves OPTIONAL, fixes their values where regulation requires, and adds two extension fields with reserved names. A Compliance Receipt remains a conformant <xref target="ACTA-RECEIPTS"/> receipt. Field references use upstream field names rather than section numbers, to reduce maintenance hazard if upstream re-numbers in a future revision.</t>
      </section>
      <section anchor="scope"><name>Scope</name>
        <t>This document fills the regulatory binding gap for three obligations: Article 12 (record-keeping) and Article 26 (deployer obligations) of the EU AI Act, and Article 17 (ICT-related incident management) of DORA. The bindings are written from the Deployer's perspective. Providers of high-risk AI systems are subject to a parallel log-retention obligation under Article 19(1) of the EU AI Act; where a Provider operates the producing system, the same retention rules apply <xref target="art12-retention"/>.</t>
        <t>A verifier that implements only <xref target="ACTA-RECEIPTS"/> can cryptographically validate a profile receipt but cannot attest the additional compliance bindings of this document.</t>
      </section>
    </section>

    <section anchor="conventions"><name>Conventions 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>
      <t>The following terms are used in this document.</t>
      <dl>
        <dt>Action:</dt>
        <dd>An operation performed by an AI agent that is subject to a policy evaluation. Examples include a tool invocation, an external API call, a write to durable storage, and the issuance of an irreversible instruction to another system.</dd>
        <dt>Action Receipt:</dt>
        <dd>A signed envelope conforming to <xref target="ACTA-RECEIPTS"/> that records the policy evaluation result for a single Action.</dd>
        <dt>Compliance Receipt:</dt>
        <dd>An Action Receipt that additionally satisfies the requirements of this profile.</dd>
        <dt>Deployer:</dt>
        <dd>As defined in Article 3(4) of <xref target="EU-AI-ACT"/>.</dd>
        <dt>High-Risk AI System:</dt>
        <dd>As defined in Article 6 of <xref target="EU-AI-ACT"/>.</dd>
        <dt>Financial Entity:</dt>
        <dd>As defined in Article 2(2) of <xref target="DORA"/>, for entities listed in Article 2(1).</dd>
        <dt>Audit Pack:</dt>
        <dd>A bundle of Compliance Receipts, the chain commitments that link them, the public verification keys, the trust anchor metadata, and the regime mapping required by Sections 5 through 7 of this document, packaged for delivery to a regulator or auditor.</dd>
      </dl>
    </section>

    <section anchor="relationship"><name>Relationship to ACTA-RECEIPTS</name>
      <t>This profile is an additive overlay on <xref target="ACTA-RECEIPTS"/>. It does not modify the envelope, the canonicalization rule, the signature object, or the algorithm registry of <xref target="ACTA-RECEIPTS"/>.</t>
      <t>The following normative statements apply.</t>
      <ul>
        <li>Implementations of this profile MUST produce receipts that are cryptographically verifiable by a conformant <xref target="ACTA-RECEIPTS"/> verifier under the canonicalization rules (JCS, <xref target="RFC8785"/>) and the signature scope of <xref target="ACTA-RECEIPTS"/> Section 5.6.</li>
        <li>Implementations of this profile MUST NOT introduce new top-level fields in the signed payload that conflict with names reserved by <xref target="ACTA-RECEIPTS"/>.</li>
        <li>Implementations of this profile MAY use any signature algorithm permitted by <xref target="ACTA-RECEIPTS"/>: EdDSA (Ed25519, mandatory-to-implement, <xref target="RFC8032"/>), ES256 (ECDSA using P-256 and SHA-256, <xref target="RFC7518"/>), and ML-DSA-65 (<xref target="FIPS204"/>).</li>
        <li>Where <xref target="ACTA-RECEIPTS"/> marks a field OPTIONAL and this profile marks the same field REQUIRED, the stricter requirement applies to Compliance Receipts.</li>
      </ul>
      <t>A receipt that fails any MUST clause of this profile is not a Compliance Receipt. It MAY still be a valid <xref target="ACTA-RECEIPTS"/> receipt.</t>
      <t>This profile differentiates from <xref target="ACTA-RECEIPTS"/> on three axes: mandatory hash-chain linkage (upstream Commitment Mode is OPTIONAL), mandatory anchoring with RFC 3161 or OpenTimestamps (both RECOMMENDED; upstream lists Sigstore Rekor in its Implementation Status appendix as an OPTIONAL temporal anchor), and a retention floor tied to specific regulatory articles (upstream is silent on retention).</t>
    </section>

    <section anchor="field-profile"><name>Receipt Field Profile</name>
      <t>This section enumerates fields defined by <xref target="ACTA-RECEIPTS"/> and states the additional requirements that this profile places on them. Field names follow <xref target="ACTA-RECEIPTS"/> exactly.</t>
      <t>Compliance Receipts MUST use the upstream wire field name <tt>signature</tt> for the signature object, exactly as defined in Sections 2.1 and 2.1.1 of <xref target="ACTA-RECEIPTS"/>. The keys inside that object are <tt>alg</tt>, <tt>kid</tt>, <tt>sig</tt>. Implementations whose internal storage uses a different field name MUST translate to <tt>signature</tt> on emission and on canonicalization for verification; receipts that appear on the wire under any other top-level field name are non-conformant to <xref target="ACTA-RECEIPTS"/> and to this profile. Anchors MUST be projected into a top-level <tt>anchors</tt> array with a <tt>type</tt> discriminator and a <tt>value</tt> field carrying the anchor bytes (base64-encoded for binary payloads). Flat-column implementations MUST project on emission and Audit Pack export.</t>

      <section anchor="common-fields"><name>Common Payload Fields</name>
        <section anchor="type"><name>type</name>
          <t>Compliance Receipts MUST set <tt>type</tt> to a value drawn from the namespace <tt>protectmcp:decision</tt>, <tt>protectmcp:restraint</tt>, or <tt>protectmcp:lifecycle</tt>, or to an extension namespace registered for use with this profile.</t>
        </section>
        <section anchor="issued-at"><name>issued_at</name>
          <t>REQUIRED upstream and in this profile. The value MUST be an ISO 8601 timestamp with an explicit timezone. The producing system MUST source the value from a clock synchronized to a recognized time authority and MUST NOT backdate the value. Verifiers MUST reject receipts whose <tt>issued_at</tt> is more than 300 seconds ahead of the verifier's own clock. Verifiers MUST NOT reject a receipt solely because <tt>issued_at</tt> lies in the past; past skew is bounded by retention (<xref target="art12-retention"/>, <xref target="dora-retention"/>), not freshness. Historical receipts within retention MUST verify on the same path as fresh ones.</t>
        </section>
        <section anchor="issuer-id"><name>issuer_id</name>
          <t>REQUIRED upstream and in this profile. The value MUST identify a legal entity, not a natural person. Where the producing system is operated by a Deployer, the <tt>issuer_id</tt> MUST resolve, through the trust anchor metadata in the Audit Pack, to a record naming the Deployer. To preserve the upstream Section 2.2 invariant that <tt>issuer_id</tt> MUST match the <tt>kid</tt> field of the signature object, Compliance Receipts MUST place the same value in both <tt>issuer_id</tt> and <tt>kid</tt>; the verifier resolves that value to a public key through the Audit Pack trust-anchor metadata rather than through the well-known JWK Set endpoint or the RECOMMENDED <tt>sb:issuer:&lt;base58-fingerprint&gt;</tt> form of <xref target="ACTA-RECEIPTS"/> Section 2.1.1. This profile thereby supersedes the upstream RECOMMENDED <tt>kid</tt> format for Compliance Receipts; the upstream RECOMMENDED format remains valid for non-Compliance receipts.</t>
          <t>Where the Deployer is an EU-regulated entity, implementations SHOULD use the Legal Entity Identifier (LEI) as defined by <xref target="ISO17442"/>. Examples and test fixtures MUST use a placeholder whose four-character LOU prefix (positions 1-4) is not allocated in the GLEIF Local Operating Unit code list, whose positions 5-6 are the ISO 17442 reserved value <tt>00</tt>, and whose two trailing characters (positions 19-20) are the ISO 7064 mod 97-10 check digits computed over positions 1-18 (for example <tt>00000000000000000098</tt>, where the all-zero 18-character base produces the check digits <tt>98</tt> per the ISO 17442-1:2020 Annex A check-digit algorithm, which converts any letters in positions 1-18 to digits A=10 ... Z=35 before the mod 97-10 computation; for an all-zero base the conversion is a no-op); implementations MUST NOT use a real third-party LEI in documentation or test data. Decentralized Identifiers (<xref target="W3C-DID"/>) MAY be used otherwise. Implementations MUST treat the value as opaque on verification; identifier resolution is out of scope for this profile.</t>
        </section>
        <section anchor="payload-digest"><name>payload_digest (OPTIONAL upstream, REQUIRED in this profile)</name>
          <t>REQUIRED for Compliance Receipts. The value MUST follow the upstream object form (<tt>hash</tt>, <tt>size</tt>, optional <tt>preview</tt>) defined in Section 2.2 of <xref target="ACTA-RECEIPTS"/>; this profile does not redefine the wire shape. The associated payload that this digest covers MUST be retained for the period mandated by the most restrictive applicable regime in Sections 5 through 7 of this document. Implementations MUST NOT discard the underlying payload while a receipt that references it is still within its retention window.</t>
        </section>
        <section anchor="action-ref"><name>action_ref (OPTIONAL upstream, REQUIRED in this profile)</name>
          <t>REQUIRED for Compliance Receipts. The value is a SHA-256 hash of the canonical Action representation as defined in <xref target="ACTA-RECEIPTS"/>. This profile uses <tt>action_ref</tt> as the primary join key for cross-engine reconstruction during an audit.</t>
        </section>
        <section anchor="sandbox-state"><name>sandbox_state (OPTIONAL upstream, REQUIRED for High-Risk in this profile)</name>
          <t>REQUIRED for receipts produced by High-Risk AI Systems. Upstream defines <tt>sandbox_state</tt> as an OS-level containment status and restricts the value to one of <tt>enabled</tt>, <tt>disabled</tt>, or <tt>unavailable</tt>; this profile inherits that enumeration unchanged. A Deployer that operates a High-Risk AI System and produces a stream of receipts in which <tt>sandbox_state</tt> is consistently disabled SHOULD treat that stream as a finding under Article 26 and document the rationale in the Audit Pack metadata.</t>
        </section>
        <section anchor="iteration-id"><name>iteration_id (OPTIONAL upstream, REQUIRED for multi-step in this profile)</name>
          <t>REQUIRED for multi-step agent workflows. The value MUST be stable across all receipts emitted within the same logical task or session so that a regulator can reconstruct the full chain of Actions. <tt>iteration_id</tt> is distinct from the upstream <tt>session_id</tt> field defined in <xref target="ACTA-RECEIPTS"/> Section 3.1.1, which is an opaque MCP session identifier. A Compliance Receipt MAY carry both: <tt>session_id</tt> for MCP-session correlation and <tt>iteration_id</tt> for logical-task correlation.</t>
        </section>
      </section>

      <section anchor="decision-fields"><name>Decision Receipt Fields (type protectmcp:decision)</name>
        <t>The <tt>decision</tt> field value MUST be <tt>allow</tt>, <tt>deny</tt>, or <tt>rate_limit</tt>. Implementations using a different internal vocabulary (e.g. <tt>permit</tt> for allow) MUST normalise on emission and on Audit Pack export.</t>
        <t>The upstream <tt>tool_name</tt> field (REQUIRED in <xref target="ACTA-RECEIPTS"/> Section 3.1.1) is REQUIRED for Compliance Receipts of type <tt>protectmcp:decision</tt>.</t>
        <section anchor="reason"><name>reason (OPTIONAL upstream, REQUIRED for deny/rate_limit in this profile)</name>
          <t>REQUIRED for Compliance Receipts where <tt>decision</tt> is <tt>deny</tt> or <tt>rate_limit</tt>. The value MUST be a machine-readable <tt>reason</tt> code drawn from a vocabulary documented in the Deployer's Audit Pack metadata.</t>
        </section>
        <section anchor="policy-digest"><name>policy_digest (OPTIONAL upstream, REQUIRED in this profile)</name>
          <t>REQUIRED for Compliance Receipts. The value MUST be of the form <tt>sha256:&lt;hex&gt;</tt> and MUST reference a policy artefact that the Deployer retains for the applicable retention window. Verifiers MUST reject Compliance Receipts whose <tt>policy_digest</tt> does not resolve in the Audit Pack.</t>
        </section>
      </section>

      <section anchor="hash-chain"><name>Hash-Chain Linkage (OPTIONAL upstream, REQUIRED in this profile)</name>
        <t>Upstream Commitment Mode introduces <tt>previousReceiptHash</tt> as part of an optional extension. This profile makes the linkage REQUIRED. Implementations MUST emit a <tt>previousReceiptHash</tt> field, populated as specified by Section 5.7 of <xref target="ACTA-RECEIPTS"/>: the lowercase hex encoding of SHA-256(JCS(receipt)) per <xref target="RFC8785"/>, where the receipt covered by the digest is the entire signed receipt object including the signature field. The first receipt in a chain MUST set this field to the all-zero SHA-256 value (this profile's stipulation; <xref target="ACTA-RECEIPTS"/> Section 5.7 specifies only the digest scope of subsequent links). JSON key is the literal <tt>previousReceiptHash</tt> (camelCase, case-sensitive); snake_case aliases MUST NOT appear on the wire.</t>
      </section>

      <section anchor="anchoring"><name>Anchoring (No Upstream Equivalent)</name>
        <t><xref target="ACTA-RECEIPTS"/> lists Sigstore Rekor in its Implementation Status appendix as an OPTIONAL temporal anchor. This profile imposes a normative anchoring requirement.</t>
        <t>Compliance Receipts MUST be anchored. An anchor is an <xref target="RFC3161"/> timestamp token covering the signed envelope, an <xref target="OPENTIMESTAMPS"/> commitment covering the envelope, or both; implementations SHOULD emit both forms. For both anchor types, the bytes committed are SHA-256(JCS(envelope_minus_anchors)), where envelope_minus_anchors is the wire envelope object with the <tt>anchors</tt> top-level key removed prior to canonicalization, leaving the two-key object {<tt>payload</tt>, <tt>signature</tt>}. The <tt>anchors</tt> key MUST be removed from the object, not set to null or to an empty array; these produce different JCS output and break interoperability (mirroring the upstream Section 5.6 stripping rule). The anchor thereby binds payload and signature without being self-referential. The anchor evidence MUST be retained alongside the receipt for the applicable retention window. Verifiers MUST reject Compliance Receipts that lack at least one valid anchor.</t>
        <t>An anchor MAY be attached after issuance if the receipt is persisted with an unambiguous <tt>pending</tt> marker and the anchor lands within a documented bound. For <xref target="OPENTIMESTAMPS"/>, this profile imposes a 7-day deadline; this is a profile-imposed bound, not a property of the OpenTimestamps protocol, whose calendar-to-block upgrade time depends on the calendar operator's publication interval. <xref target="RFC3161"/> tokens MUST be obtained synchronously. A verifier MUST treat a pending receipt as non-conformant once the bound elapses.</t>
        <t>The anchor MAY cover an aggregate of receipts (for example, a Merkle root over a batch) rather than each receipt individually, provided that the inclusion proof linking the receipt to the aggregate is retained alongside the receipt and the aggregate anchor.</t>
        <t>Where the anchor <tt>type</tt> is <xref target="RFC3161"/>, the full TimeStampResp DER bytes MUST be retained, sufficient for offline verification by a holder with access to the TSA's published public key. Time-stamp tokens carrying ESSCertIDv2 per <xref target="RFC5816"/> MUST be accepted by Compliance Verifiers. Where the anchor <tt>type</tt> is <xref target="OPENTIMESTAMPS"/>, the upgrade from the initial calendar attestation to the Bitcoin block attestation MUST be completed within the 7-day profile-imposed bound, and the upgraded proof MUST be retained for the applicable retention window per the second paragraph of this section.</t>
      </section>

      <section anchor="extension-fields"><name>Extension Fields</name>
        <t>This profile defines two extension fields that MAY appear in the signed payload alongside the fields defined by <xref target="ACTA-RECEIPTS"/>. Neither field is defined upstream.</t>
        <dl>
          <dt><tt>risk_class</tt>:</dt>
          <dd>A vocabulary term identifying the risk classification of the Action under the Deployer's risk management documentation. The vocabulary MUST be referenced in the Audit Pack metadata.</dd>
          <dt><tt>incident_class</tt>:</dt>
          <dd>A vocabulary term identifying the ICT-related incident classification of the Action. Binding classification criteria are drawn from <xref target="REG-2024-1772"/>. The reporting templates are bound by <xref target="REG-2025-302"/>, whose Annex II data glossary, field 3.23 (Type of the incident) defines the canonical six-value enumeration: Cybersecurity-related, Process failure, System failure, External event, Payment-related, Other (please specify). Implementations MAY refine the set, provided the flattened mapping in the Audit Pack manifest (<xref target="audit-pack"/>) projects each refinement to one of the six canonical values.</dd>
        </dl>
        <t><tt>risk_class</tt> MUST be encoded as a JSON string. <tt>incident_class</tt> MUST be encoded as a JSON string drawn from the canonical six-value enumeration defined above, OR as a JSON array of such strings to preserve the "Choice (multiple)" semantics of Annex II field 3.23 of <xref target="REG-2025-302"/>. Both extension fields appear inside the signed <tt>payload</tt> object and are therefore covered by the upstream Section 5.6 signature scope. Both fields are OPTIONAL at the syntactic level but MAY be REQUIRED by the regime bindings in Sections 5 through 7 of this document.</t>
        <t>Implementations MAY define additional extension fields. Such fields MUST NOT collide with names defined by <xref target="ACTA-RECEIPTS"/> or by this document. Implementations defining extension fields SHOULD register them in the registry described in <xref target="iana"/>.</t>
      </section>
    </section>

    <section anchor="article-12"><name>EU AI Act Article 12 Binding</name>
      <t>Each subsection cites the operative phrase of Article 12 and binds it to the receipt field that satisfies it.</t>
      <section anchor="art12-1"><name>Article 12(1), automatic recording of events</name>
        <t>Article 12(1) requires High-Risk AI Systems to technically allow for the automatic recording of events (logs) over the lifetime of the system. The signed-receipt format provides one mechanism that satisfies that logging capability; alternative mechanisms remain valid. Where this profile is chosen, a Compliance Receipt SHOULD be produced for every Action against an external resource, and a configuration change that disables receipt generation SHOULD be recorded as a protectmcp:lifecycle Compliance Receipt. Implementations MAY emit at finer or coarser granularity so long as the log set, taken together, satisfies Article 12(2)(a) through (c).</t>
      </section>
      <section anchor="art12-2a"><name>Article 12(2)(a), identifying situations that may result in the high-risk AI system presenting a risk within the meaning of Article 79(1) or in a substantial modification</name>
        <t>The combination of <tt>type</tt>, <tt>decision</tt>, <tt>reason</tt>, and <tt>policy_digest</tt> MUST be sufficient for an auditor to identify, by query alone, receipts that correspond to risk situations enumerated in the Deployer's risk management documentation. Where the Deployer classifies an Action as risk-bearing, the receipt MUST carry a <tt>risk_class</tt> extension field.</t>
      </section>
      <section anchor="art12-2b"><name>Article 12(2)(b), facilitating the post-market monitoring referred to in Article 72</name>
        <t>The hash-chain linkage required by <xref target="hash-chain"/> satisfies post-market monitoring traceability. The chain head MUST be made available to the Provider and to the competent authority on request.</t>
      </section>
      <section anchor="art12-2c"><name>Article 12(2)(c), monitoring the operation of high-risk AI systems referred to in Article 26(5)</name>
        <t>Any change to the policy artefact referenced by <tt>policy_digest</tt> MUST produce a new digest. A change in <tt>policy_digest</tt> between two otherwise-comparable Actions may be examined by the Deployer or by a regulator as a candidate substantial-modification event under Article 43, and MUST be retained at least as long as the longest receipt in the chain that references either digest.</t>
      </section>
      <section anchor="art12-retention"><name>Retention</name>
        <t>Article 12 itself sets no retention period; the operative deployer floor is Article 26(6) ("at least six months"), with the parallel provider floor in Article 19(1). Unless Union or national law sets a longer period, this profile expresses that floor as 184 days from the date of the Action: 184 is the maximum number of days in any rolling six-calendar-month window (worst case Aug-Jan, 31+30+31+30+31+31), so retention of 184 days satisfies "at least six months" regardless of the calendar months over which the window falls. Implementations that prefer the more common 183-day pick MAY use 183 days and remain conformant with Article 26(6) so long as per-receipt retention is at least six months from the Action date. Where the Deployer is also a Financial Entity, the sectoral floor in <xref target="dora-retention"/> applies.</t>
      </section>
    </section>

    <section anchor="article-26"><name>EU AI Act Article 26 Binding</name>
      <section anchor="art26-1"><name>Article 26(1), in accordance with the instructions for use</name>
        <t><tt>policy_digest</tt> MUST resolve through <xref target="audit-pack"/> to a retained artefact (machine check). The Deployer SHOULD demonstrate consistency with the Provider's instructions for use (process check). Inability to perform the machine check is presumed non-compliance.</t>
      </section>
      <section anchor="art26-2"><name>Article 26(2), assign human oversight</name>
        <t>For any Action whose <tt>decision</tt> is <tt>allow</tt> and which the Deployer's risk management documentation marks as requiring human oversight, the Deployer MUST ensure that the receipt is either reviewed by a designated natural person within the period required by national law, or that a follow-on <tt>protectmcp:lifecycle</tt> Compliance Receipt records the absence of such review with a <tt>reason</tt> code. Both records MUST themselves be Compliance Receipts. This profile addresses the trigger and record of oversight; the competence, training, authority, and necessary support of the reviewer required by Article 26(2) remain the Deployer's separate responsibility.</t>
      </section>
      <section anchor="art26-5"><name>Article 26(5), monitor the operation</name>
        <t>A Deployer MUST be able to produce an Audit Pack covering any contiguous time window since the High-Risk AI System became operational.</t>
      </section>
      <section anchor="art26-6"><name>Article 26(6), keep the logs for at least six months</name>
        <t>Compliance Receipts under this binding MUST be retained for at least the period stated in <xref target="art12-retention"/>. Where the Deployer is also a Financial Entity, the longer sectoral floor in <xref target="dora-retention"/> applies.</t>
      </section>
    </section>

    <section anchor="dora-17"><name>DORA Article 17 Binding</name>
      <section anchor="dora-17-1"><name>Article 17(1), ICT-related incident management process</name>
        <t>A Compliance Receipt produced inside a Financial Entity's ICT environment may serve as the canonical record of an Action that triggered an ICT-related incident. <tt>action_ref</tt> MUST be carried into the Financial Entity's incident workflow as the primary correlation key.</t>
      </section>
      <section anchor="dora-17-2"><name>Article 17(2), record all ICT-related incidents and significant cyber threats</name>
        <t>The hash chain required by <xref target="hash-chain"/> supports the recording obligation of Article 17(2) by making after-the-fact alteration of recorded incidents detectable. The Financial Entity MUST be able to produce, on request, the chain segment covering the period of an incident, together with the anchor evidence that fixes the chain to wall-clock time.</t>
      </section>
      <section anchor="dora-17-3-b"><name>Article 17(3)(b), establish procedures to identify, track, log, categorise and classify ICT-related incidents</name>
        <t>For Actions identified as part of an ICT-related incident, the producing system MUST emit <tt>incident_class</tt>. The classification criteria are those set out in Article 18(1) of <xref target="DORA"/>, with further specification in <xref target="REG-2024-1772"/>. The canonical reporting enumeration to which <tt>incident_class</tt> flattens is bound by Annex II field 3.23 of <xref target="REG-2025-302"/> (see <xref target="extension-fields"/>). Implementations MUST publish a flattened mapping in the Audit Pack manifest as required by <xref target="extension-fields"/>.</t>
      </section>
      <section anchor="dora-retention"><name>Retention</name>
        <t>Article 17 of <xref target="DORA"/> does not itself set a uniform numeric retention floor. The five-year (1827-day) figure used by this profile derives from sectoral instruments that overlap DORA-scoped Financial Entities. Investment firms keep records of all services, activities and transactions under Article 16(6) of <xref target="MIFID2"/>, with Article 72 and Annex I of <xref target="REG-2017-565"/> fixing the form and content of those records. The explicit five-year retention period in <xref target="MIFID2"/> is set by Article 16(7) for records of telephone conversations and electronic communications, kept for a period of five years and, where requested by the competent authority, for a period of up to seven years.</t>
        <t>Records of customer due diligence and of transactions under Article 40 of <xref target="AMLD"/> are kept for five years after the end of the business relationship. The AMLD record-keeping regime is superseded, in respect of record retention, by Article 77 of <xref target="AMLR"/> from 10 July 2027, which preserves the five-year floor and adds a case-by-case extension up to a further five years where the competent authority so requires. Implementations operating across the AMLD-to-AMLR transition MUST satisfy whichever instrument is in force on the date of the Action.</t>
        <t>Compliance Receipts MUST be retained for the period required by applicable Union or national law; where a sectoral floor applies, retention MUST equal or exceed the longest applicable floor. Absent a more specific rule, this profile RECOMMENDS 1827 days from the date of the Action (the worst-case rolling five-calendar-year window contains two leap days, so 1827 days satisfies "five years" regardless of the calendar years over which the window falls). Anchor evidence MUST be retained for the same period. Verification keys whose lifetime expires within the retention window MUST have their public components retained so that historical signatures remain verifiable.</t>
      </section>
    </section>

    <section anchor="audit-pack"><name>Audit Pack Composition</name>
      <t>This section is informative. It describes the contents of an Audit Pack as introduced in <xref target="conventions"/>.</t>
      <t>An Audit Pack contains the following items.</t>
      <ul>
        <li>The set of Compliance Receipts covered by the requested time window, in the canonical envelope form defined by <xref target="ACTA-RECEIPTS"/>.</li>
        <li>The chain commitments that link the receipts: for each receipt, the value of <tt>previousReceiptHash</tt> and the recomputed digest of the predecessor envelope.</li>
        <li>The anchor evidence: <xref target="RFC3161"/> tokens, OpenTimestamps proofs, or both. Each anchor item MUST be associated, by hash, with the receipt or aggregate it covers.</li>
        <li>The trust anchor metadata that identifies the Deployer or Financial Entity associated with each <tt>issuer_id</tt> value.</li>
        <li>The verification key material for every <tt>kid</tt> value present, in a form that does not require online retrieval.</li>
        <li>Vocabularies referenced by <tt>reason</tt>, <tt>risk_class</tt>, <tt>incident_class</tt>, and extension fields, embedded as JSON arrays with a stable identifier. The Audit Pack MUST expose a digest-resolution facility that, given a <tt>policy_digest</tt>, returns the retained artefact.</li>
        <li>A regime mapping document that names which receipts the producer asserts as evidence under Article 12, Article 26, or DORA Article 17.</li>
        <li>The chain heads valid at the start and end of the time window, signed by the Deployer or Financial Entity.</li>
      </ul>
      <t>An Audit Pack MUST itself be signed per the <xref target="ACTA-RECEIPTS"/> algorithm registry. The manifest MUST include <tt>bundle_digest</tt>, <tt>bundle_signature</tt>, <tt>bundle_public_key</tt>, and <tt>algorithm_registry_version</tt>.</t>
    </section>

    <section anchor="verifier"><name>Verifier Behaviour</name>
      <t>A verifier conformant to this profile is referred to as a Compliance Verifier.</t>
      <section anchor="mandatory-checks"><name>Mandatory Checks</name>
        <t>A Compliance Verifier MUST perform all of the following checks before treating a receipt as a Compliance Receipt.</t>
        <ul>
          <li>Verify the signature using the algorithm declared in <tt>signature.alg</tt>, in accordance with <xref target="ACTA-RECEIPTS"/>.</li>
          <li>Resolve the verification key through one of the key-distribution mechanisms described in Section 4.3 of <xref target="ACTA-RECEIPTS"/> (well-known JWK Set or out-of-band distribution), or through Audit Pack trust-anchor metadata. The verifier MUST NOT trust a verification key embedded in the receipt envelope.</li>
          <li>Verify that all fields marked REQUIRED by <xref target="field-profile"/> are present and well-formed.</li>
          <li>Verify the hash-chain linkage by recomputing the digest of the immediately preceding envelope and comparing it to <tt>previousReceiptHash</tt>.</li>
          <li>Verify at least one anchor: an <xref target="RFC3161"/> token, an <xref target="OPENTIMESTAMPS"/> commitment, or both. The anchor MUST cover the signed envelope as it appears in the receipt. The verifier MUST cryptographically re-verify the anchor against the signed envelope; presence of anchor metadata without a successful cryptographic check MUST NOT yield "valid".</li>
          <li>Verify the future-skew bound on <tt>issued_at</tt> per <xref target="issued-at"/>. Past skew MUST NOT cause non-conformance when the receipt is within retention.</li>
          <li>Verify that <tt>policy_digest</tt> resolves through <xref target="audit-pack"/>. A digest computed over a nonced or otherwise mixed-input form (for example, SHA-256(nonce || JCS(artefact))) MUST NOT be treated as <tt>policy_digest</tt>; the digest scope is the canonical form of the artefact alone. The verifier MUST recompute SHA-256 over the canonical form of the resolved artefact as documented in the Audit Pack manifest, and compare; for JSON artefacts the canonical form is JCS per <xref target="RFC8785"/>.</li>
        </ul>
        <t>A receipt that fails any of these checks MUST be reported as non-conformant.</t>
      </section>
      <section anchor="optional-checks"><name>Optional Checks</name>
        <t>A Compliance Verifier MAY additionally perform any of the following.</t>
        <ul>
          <li>Cross-check the <tt>issuer_id</tt> against an external registry of Deployers or Financial Entities.</li>
          <li>Resolve the policy artefact referenced by <tt>policy_digest</tt> and compare it to a Provider-supplied reference policy.</li>
          <li>Recompute the chain head and compare it to a Deployer-published value.</li>
          <li>Validate <tt>incident_class</tt> (each element if encoded as an array) and <tt>risk_class</tt> extension values against the vocabularies referenced in the Audit Pack.</li>
        </ul>
      </section>
      <section anchor="reporting"><name>Reporting</name>
        <t>A Compliance Verifier SHOULD produce a structured report that identifies, for each receipt verified, which regime bindings (Article 12, Article 26, DORA Article 17) it satisfies. The report SHOULD itself be signed using the same algorithm registry as <xref target="ACTA-RECEIPTS"/>.</t>
      </section>
    </section>

    <section anchor="security"><name>Security Considerations</name>
      <t>This profile inherits all of the security considerations of <xref target="ACTA-RECEIPTS"/>. The following considerations are specific to the compliance binding.</t>
      <section anchor="tamper"><name>Tamper Resistance</name>
        <t>The hash-chain linkage required by <xref target="hash-chain"/> provides tamper-evidence at the chain level. An adversary who removes a receipt from the middle of the chain MUST recompute and re-sign every subsequent envelope. The anchor evidence required by <xref target="anchoring"/> binds segments of the chain to wall-clock time, raising the cost of a re-signing attack.</t>
        <t>Implementations SHOULD anchor at intervals no longer than 24 hours. Implementations operating under DORA Article 17 SHOULD anchor at intervals no longer than one hour.</t>
        <t>A deployment that uses only the signature, without chain linkage and anchoring, can be rolled back by an insider with control of the signing key for the period between the deletion and the next anchor. The MUST clauses of <xref target="hash-chain"/> and <xref target="anchoring"/> close that window.</t>
      </section>
      <section anchor="key-compromise"><name>Key Compromise</name>
        <t>A Compliance Receipt is only as trustworthy as the key that signed it. On suspected compromise of an issuer key, the Deployer MUST publish a revocation notice that names the key, the time of suspected compromise, and the chain head at that time. Receipts signed by the compromised key after the named time MUST NOT be treated as Compliance Receipts.</t>
        <t>Verifiers MUST consult revocation metadata supplied with the Audit Pack and MUST reject Compliance Receipts whose signing key was revoked at or before <tt>issued_at</tt>.</t>
      </section>
      <section anchor="long-term"><name>Retention and Long-Term Verifiability</name>
        <t>The 1827-day retention floor in <xref target="dora-17"/> exceeds the typical operational crypto-period of a signing key under recommended key-management practice. Implementations SHOULD use ML-DSA-65 from the <xref target="ACTA-RECEIPTS"/> algorithm registry (<xref target="FIPS204"/>) for receipts expected to be verified after the cryptographic lifetime of classical signature schemes ends. Implementations MUST retain public key material for the entire retention window.</t>
      </section>
      <section anchor="privacy"><name>Privacy</name>
        <t><xref target="ACTA-RECEIPTS"/> prohibits the inclusion of raw prompts, tool arguments, and credentials in the signed payload. This profile extends that prohibition to the extension fields defined in this document. The <tt>risk_class</tt> and <tt>incident_class</tt> values MUST be drawn from controlled vocabularies and MUST NOT carry free-text personal data.</t>
        <t>Where the underlying Action references a data subject, the <tt>payload_digest</tt> field MUST cover the data; the data itself MUST be held in a separate store that respects the data subject's rights under applicable law. A request for erasure that is granted under applicable data protection law MUST be reflected by deletion of the referenced payload, not by deletion of the receipt; the receipt remains as evidence that an Action occurred and was governed by a named policy at a named time.</t>
      </section>
      <section anchor="anchor-trust"><name>Anchor Trust</name>
        <t>The trust assumptions of an anchor depend on the anchor <tt>type</tt>. <xref target="RFC3161"/> timestamp tokens depend on the trust placed in the named Time Stamping Authority. OpenTimestamps commitments depend on the inclusion of the commitment in a public Bitcoin block. A Compliance Verifier SHOULD treat the simultaneous presence of both anchor types as stronger evidence than the presence of only one.</t>
      </section>
      <section anchor="replay"><name>Replay</name>
        <t>A Compliance Receipt is bound to a single Action via <tt>action_ref</tt>. Replay of a Compliance Receipt against a different Action is detectable by <tt>action_ref</tt> mismatch. The 300-second <tt>issued_at</tt> skew bound stated in <xref target="issued-at"/> limits the window in which a freshly-replayed receipt can be presented as recent.</t>
        <t>Where the verifier supports it, two receipts sharing <tt>action_ref</tt> and <tt>issuer_id</tt> SHOULD be flagged as a candidate duplicate-emission event for human review. This profile does not require verifiers to maintain a cross-receipt index; deployers needing duplicate-emission detection should arrange it at the Audit Pack production layer.</t>
      </section>
      <section anchor="cross-regime"><name>Cross-Regime Conflict</name>
        <t>Where the same Action is in scope of more than one regime addressed by this document, the producing system MUST satisfy the union of the applicable requirements. Where a SHOULD clause in one regime conflicts with a MUST clause in another, the MUST clause prevails. Where two MUST clauses conflict, the producing system MUST refuse to issue the receipt and MUST log the refusal as a protectmcp:lifecycle Compliance Receipt.</t>
      </section>
      <section anchor="algorithm-agility"><name>Algorithm Agility</name>
        <t>This profile inherits its algorithm registry from <xref target="ACTA-RECEIPTS"/>. Implementations MUST treat the verification of a historical receipt according to the algorithm registry that was in force at <tt>issued_at</tt>, not the registry in force at the time of verification, provided that the signing key was not revoked.</t>
      </section>
    </section>

    <section anchor="iana"><name>IANA Considerations</name>
      <t>This document requests two new IANA registries to support stable, machine-checkable extensions to the Compliance Receipt format.</t>

      <section anchor="iana-extension-fields"><name>Compliance Receipt Extension Fields Registry</name>
        <t>IANA is requested to create a new registry titled "Compliance Receipt Extension Fields" under a new "Compliance Receipts" registry group.</t>
        <t>This registry covers both signed-payload fields and envelope-level fields (siblings of <tt>payload</tt> and <tt>signature</tt>); each entry's Description identifies which.</t>
        <t>Each entry contains:</t>
        <ul>
          <li>Field Name: a JSON object key, lowercase ASCII letters, digits, and underscore.</li>
          <li>Description: a one-line summary of the field's purpose.</li>
          <li>Reference: the document that defines the field's semantics.</li>
          <li>Vocabulary: a URL or registry pointer for the controlled vocabulary that field values are drawn from, or "free-form" if none.</li>
        </ul>
        <t>The registration policy is Specification Required, per <xref target="RFC8126"/>. The Designated Expert(s) SHOULD verify that the field name does not collide with any field defined by <xref target="ACTA-RECEIPTS"/>, that the Reference is a stable, dereferenceable specification, and that the Vocabulary is documented sufficiently for an independent verifier to validate values.</t>
        <t>Initial registry contents:</t>
        <ul>
          <li><tt>risk_class</tt> - Risk classification term under the Deployer's risk management documentation - This document - Vocabulary referenced in Audit Pack metadata.</li>
          <li><tt>incident_class</tt> - ICT-related incident classification term, criteria per Article 18(1) of <xref target="DORA"/> with further specification in <xref target="REG-2024-1772"/>, canonical six-value enumeration per Annex II field 3.23 of <xref target="REG-2025-302"/> - This document - Audit Pack metadata.</li>
          <li><tt>anchors</tt> - Envelope-level array of timestamp / transparency-log anchors covering the signed envelope; entries carry a <tt>type</tt> discriminator (<tt>rfc3161</tt> or <tt>opentimestamps</tt>) and a <tt>value</tt> field - This document - Anchor type vocabulary: <tt>rfc3161</tt> per <xref target="RFC3161"/>, <tt>opentimestamps</tt> per <xref target="OPENTIMESTAMPS"/>.</li>
        </ul>
      </section>

      <section anchor="iana-type-namespaces"><name>Compliance Receipt Type Namespaces Registry</name>
        <t>IANA is requested to create a new registry titled "Compliance Receipt Type Namespaces" under the same "Compliance Receipts" registry group.</t>
        <t>Each entry contains:</t>
        <ul>
          <li>Namespace: a colon-separated identifier prefix used as a value of the <tt>type</tt> field, lowercase ASCII letters, digits, hyphen, underscore, and colon.</li>
          <li>Description: a one-line summary of the receipt category.</li>
          <li>Reference: the document that defines the namespace.</li>
        </ul>
        <t>The registration policy is Specification Required, per <xref target="RFC8126"/>. The Designated Expert(s) SHOULD verify that the namespace does not collide with any namespace already registered or any namespace reserved by <xref target="ACTA-RECEIPTS"/>, and that the Reference is a stable specification.</t>
        <t>Initial registry contents:</t>
        <ul>
          <li><tt>protectmcp:decision</tt> - A receipt recording a policy evaluation outcome (<tt>allow</tt>, <tt>deny</tt>, <tt>rate_limit</tt>) for an MCP-mediated tool call - This document.</li>
          <li><tt>protectmcp:restraint</tt> - A receipt recording the application or release of a restraint on an agent (e.g., quota, rate limit, sandbox tightening) - This document.</li>
          <li><tt>protectmcp:lifecycle</tt> - A receipt recording an agent or system lifecycle event (e.g., configuration change, key rotation, oversight review) - This document.</li>
        </ul>
      </section>
    </section>

    <section anchor="acks"><name>Acknowledgements</name>
      <t>The author thanks Tom Farley for <xref target="ACTA-RECEIPTS"/>, on which this profile is built. This profile would not exist without the field catalogue and envelope structure that the upstream draft defines. The author also thanks the Asqav community for review of early drafts.</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 fullname="S. Bradner" initials="S." surname="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="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" 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="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
        <front>
          <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
          <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
          <author fullname="I. Liusvaara" 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="RFC7518" target="https://www.rfc-editor.org/info/rfc7518">
        <front>
          <title>JSON Web Algorithms (JWA)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <date year="2015" month="May"/>
        </front>
        <seriesInfo name="RFC" value="7518"/>
        <seriesInfo name="DOI" value="10.17487/RFC7518"/>
      </reference>
      <reference anchor="FIPS204" target="https://csrc.nist.gov/pubs/fips/204/final">
        <front>
          <title>Module-Lattice-Based Digital Signature Standard</title>
          <author><organization>National Institute of Standards and Technology</organization></author>
          <date year="2024" month="August" day="13"/>
        </front>
        <seriesInfo name="FIPS" value="204"/>
        <seriesInfo name="DOI" value="10.6028/NIST.FIPS.204"/>
      </reference>
      <reference anchor="RFC5816" target="https://www.rfc-editor.org/info/rfc5816">
        <front>
          <title>ESSCertIDv2 Update for RFC 3161</title>
          <author fullname="S. Santesson" initials="S." surname="Santesson"/>
          <author fullname="N. Pope" initials="N." surname="Pope"/>
          <date year="2010" month="April"/>
        </front>
        <seriesInfo name="RFC" value="5816"/>
        <seriesInfo name="DOI" value="10.17487/RFC5816"/>
      </reference>
      <reference anchor="RFC3161" target="https://www.rfc-editor.org/info/rfc3161">
        <front>
          <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
          <author fullname="C. Adams" initials="C." surname="Adams"/>
          <author fullname="P. Cain" initials="P." surname="Cain"/>
          <author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
          <author fullname="R. Zuccherato" initials="R." surname="Zuccherato"/>
          <date year="2001" month="August"/>
        </front>
        <seriesInfo name="RFC" value="3161"/>
        <seriesInfo name="DOI" value="10.17487/RFC3161"/>
      </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 fullname="M. Cotton" initials="M." surname="Cotton"/>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <author fullname="T. Narten" 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="OPENTIMESTAMPS" target="https://github.com/opentimestamps/opentimestamps-server">
        <front>
          <title>OpenTimestamps Server</title>
          <author>
            <organization>OpenTimestamps</organization>
          </author>
          <date year="2016" month="September"/>
        </front>
      </reference>
      <reference anchor="ACTA-RECEIPTS" target="https://datatracker.ietf.org/doc/html/draft-farley-acta-signed-receipts-01">
        <front>
          <title>Signed Decision Receipts for Machine-to-Machine Access Control</title>
          <author fullname="Tom Farley" initials="T." surname="Farley"/>
          <date year="2026" month="April" day="25"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-farley-acta-signed-receipts-01"/>
      </reference>

      <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785">
        <front>
          <title>JSON Canonicalization Scheme (JCS)</title>
          <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
          <author fullname="B. Jordan" initials="B." surname="Jordan"/>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
          <date year="2020" month="June"/>
        </front>
        <seriesInfo name="RFC" value="8785"/>
        <seriesInfo name="DOI" value="10.17487/RFC8785"/>
      </reference>
      <!-- ISO source title uses em-dashes (U+2014); replaced with ASCII hyphens per profile style. -->
      <reference anchor="ISO17442" target="https://www.iso.org/standard/78829.html">
        <front>
          <title>Financial services - Legal entity identifier (LEI) - Part 1: Assignment</title>
          <author><organization>ISO</organization></author>
          <date year="2020" month="August"/>
        </front>
        <seriesInfo name="ISO" value="17442-1:2020"/>
      </reference>
      <reference anchor="W3C-DID" target="https://www.w3.org/TR/did-1.0/">
        <front>
          <title>Decentralized Identifiers (DIDs) v1.0</title>
          <author><organization>W3C</organization></author>
          <date year="2022" month="July" day="19"/>
        </front>
      </reference>
    </references>

    <references>
      <name>Informative References</name>
      <reference anchor="EU-AI-ACT" target="https://eur-lex.europa.eu/eli/reg/2024/1689/oj">
        <front>
          <title>Regulation (EU) 2024/1689 of the European Parliament and of the Council of 13 June 2024 laying down harmonised rules on artificial intelligence and amending Regulations (EC) No 300/2008, (EU) No 167/2013, (EU) No 168/2013, (EU) 2018/858, (EU) 2018/1139 and (EU) 2019/2144 and Directives 2014/90/EU, (EU) 2016/797 and (EU) 2020/1828 (Artificial Intelligence Act) (Text with EEA relevance)</title>
          <author>
            <organization>European Parliament and Council</organization>
          </author>
          <date year="2024" month="July" day="12"/>
        </front>
      </reference>
      <reference anchor="DORA" target="https://eur-lex.europa.eu/eli/reg/2022/2554/oj">
        <front>
          <title>Regulation (EU) 2022/2554 of the European Parliament and of the Council of 14 December 2022 on digital operational resilience for the financial sector and amending Regulations (EC) No 1060/2009, (EU) No 648/2012, (EU) No 600/2014, (EU) No 909/2014 and (EU) 2016/1011 (Text with EEA relevance)</title>
          <author>
            <organization>European Parliament and Council</organization>
          </author>
          <date year="2022" month="December" day="27"/>
        </front>
      </reference>
      <reference anchor="REG-2025-302" target="https://eur-lex.europa.eu/eli/reg_impl/2025/302/oj">
        <front>
          <title>Commission Implementing Regulation (EU) 2025/302 of 23 October 2024 laying down implementing technical standards for the application of Regulation (EU) 2022/2554 of the European Parliament and of the Council with regard to the standard forms, templates, and procedures for financial entities to report a major ICT-related incident and to notify a significant cyber threat (Text with EEA relevance)</title>
          <author><organization>European Commission</organization></author>
          <date year="2025" month="February" day="20"/>
        </front>
      </reference>
      <reference anchor="REG-2024-1772" target="https://eur-lex.europa.eu/eli/reg_del/2024/1772/oj">
        <front>
          <title>Commission Delegated Regulation (EU) 2024/1772 of 13 March 2024 supplementing Regulation (EU) 2022/2554 of the European Parliament and of the Council with regard to regulatory technical standards specifying the criteria for the classification of ICT-related incidents and cyber threats, setting out materiality thresholds and specifying the details of reports of major incidents (Text with EEA relevance)</title>
          <author><organization>European Commission</organization></author>
          <date year="2024" month="June" day="25"/>
        </front>
      </reference>
      <reference anchor="MIFID2" target="https://eur-lex.europa.eu/eli/dir/2014/65/oj">
        <front>
          <title>Directive 2014/65/EU of the European Parliament and of the Council of 15 May 2014 on markets in financial instruments and amending Directive 2002/92/EC and Directive 2011/61/EU (recast) (Text with EEA relevance)</title>
          <author><organization>European Parliament and Council</organization></author>
          <date year="2014" month="June" day="12"/>
        </front>
      </reference>
      <reference anchor="REG-2017-565" target="https://eur-lex.europa.eu/eli/reg_del/2017/565/oj">
        <front>
          <title>Commission Delegated Regulation (EU) 2017/565 of 25 April 2016 supplementing Directive 2014/65/EU of the European Parliament and of the Council as regards organisational requirements and operating conditions for investment firms and defined terms for the purposes of that Directive (Text with EEA relevance)</title>
          <author><organization>European Commission</organization></author>
          <date year="2017" month="March" day="31"/>
        </front>
      </reference>
      <reference anchor="AMLD" target="https://eur-lex.europa.eu/eli/dir/2015/849/oj">
        <front>
          <title>Directive (EU) 2015/849 of the European Parliament and of the Council of 20 May 2015 on the prevention of the use of the financial system for the purposes of money laundering or terrorist financing, amending Regulation (EU) No 648/2012 of the European Parliament and of the Council, and repealing Directive 2005/60/EC of the European Parliament and of the Council and Commission Directive 2006/70/EC (Text with EEA relevance)</title>
          <author><organization>European Parliament and Council</organization></author>
          <date year="2015" month="June" day="5"/>
        </front>
      </reference>
      <reference anchor="AMLR" target="https://eur-lex.europa.eu/eli/reg/2024/1624/oj">
        <front>
          <title>Regulation (EU) 2024/1624 of the European Parliament and of the Council of 31 May 2024 on the prevention of the use of the financial system for the purposes of money laundering or terrorist financing (Text with EEA relevance)</title>
          <author><organization>European Parliament and Council</organization></author>
          <date year="2024" month="June" day="19"/>
        </front>
      </reference>
    </references>

    <section anchor="example" numbered="false"><name>Worked Example (Informative)</name>
      <t>This appendix illustrates a Compliance Receipt that satisfies the Article 26 binding for a tool invocation by a High-Risk AI System deployed by a Financial Entity. Field values are abbreviated for readability and are not cryptographically valid. The example shows a mid-chain receipt; a chain-genesis receipt would carry a <tt>previousReceiptHash</tt> of 64 zero hex characters per <xref target="hash-chain"/>.</t>
      <sourcecode type="json"><![CDATA[
{
  "payload": {
    "type": "protectmcp:decision",
    "issued_at": "2026-05-04T09:14:22.118Z",
    "issuer_id": "00000000000000000098",
    "action_ref": "c1f3a09a4d2e7f6b8c5a91e3d7b04f2a1c8e6f5d3b9a7c2e4f8d6b1a3c5e7f9d",
    "tool_name": "deploy",
    "iteration_id": "task-2026-05-04-01a3",
    "decision": "allow",
    "reason": "policy:within_limits",
    "policy_digest": "sha256:7b214e8c3d9f4a2b1e6c8f5a3d7b9e2c4f6a8d1b3e5c7f9a2d4b6e8c1f3a5d7b",
    "sandbox_state": "enabled",
    "payload_digest": {
      "hash": "0a44d2c8e3f5b7a9d1c4e6f8b2a5d7c9e1f3b5a7d9c2e4f6b8a1d3c5e7f9b2a4",
      "size": 1024
    },
    "previousReceiptHash": "f80c11a3b5d7e9c2f4a6b8d1e3c5f7a9b2d4e6c8f1a3b5d7e9c2f4a6b8d1e3c5",
    "risk_class": "deployer:financial:medium"
  },
  "signature": {
    "alg": "EdDSA",
    "kid": "00000000000000000098",
    "sig": "..."
  },
  "anchors": [
    {
      "type": "rfc3161",
      "value": "..."
    },
    {
      "type": "opentimestamps",
      "value": "..."
    }
  ]
}
]]></sourcecode>
      <t>The above receipt satisfies the Article 26 binding because:</t>
      <ul>
        <li><tt>issuer_id</tt> is a 20-character ISO 17442 Legal Entity Identifier (LEI) that resolves through the trust anchor metadata in the Audit Pack to the named Deployer;</li>
        <li><tt>policy_digest</tt> resolves to a retained policy artefact;</li>
        <li><tt>sandbox_state</tt> is enabled, satisfying the High-Risk system constraint of <xref target="sandbox-state"/>;</li>
        <li><tt>previousReceiptHash</tt> links the receipt into the chain per <xref target="hash-chain"/>;</li>
        <li>both an <xref target="RFC3161"/> anchor and an <xref target="OPENTIMESTAMPS"/> anchor are present per <xref target="anchoring"/>.</li>
      </ul>
      <t>Under the DORA Article 17 binding a Compliance Verifier additionally checks the longest applicable sectoral retention floor (1827 days as the default, per <xref target="dora-retention"/>) and, where present, that <tt>incident_class</tt> flattens to the canonical six-value vocabulary referenced in <xref target="extension-fields"/>.</t>
    </section>

    <section anchor="changelog" numbered="false"><name>Change Log</name>
      <section anchor="cl-02" numbered="false"><name>draft-marques-asqav-compliance-receipts-02</name>
        <t>Wire-shape alignment with upstream <xref target="ACTA-RECEIPTS"/>: receipt content wrapped in a <tt>payload</tt> object with <tt>signature</tt> and <tt>anchors</tt> as top-level siblings per Section 2.1; <tt>payload_digest</tt> object form per Section 2.2; <tt>action_ref</tt> as bare hex per Section 2.2; <tt>tool_name</tt> REQUIRED for <tt>protectmcp:decision</tt> per Section 3.1.1; <tt>issuer_id</tt> equal to <tt>kid</tt> per Section 2.2; chain hash scope is the entire signed receipt per Section 5.7. EU AI Act bindings use Official Journal wording: Article 12(1) framed as a logging capability obligation; Article 12(2)(a), (b), (c) headings match the OJ; Article 26(6) "at least six months" expressed as 184 days (with 183-day pick permitted as conformant). Article 19(1) provider parallel noted in scope. DORA Article 17 bindings: 17(2) recording obligation supported by hash chain; 17(3)(b) classification criteria sourced to Article 18(1) of <xref target="DORA"/> with further specification in <xref target="REG-2024-1772"/>; <tt>incident_class</tt> canonical six-value enumeration sourced to Annex II field 3.23 of <xref target="REG-2025-302"/>. Sectoral retention: Article 16(7) of <xref target="MIFID2"/> (five-year floor on telephone and electronic communications records); Article 16(6) supplemented by Article 72 of <xref target="REG-2017-565"/> (form and content of general records); Article 40 of <xref target="AMLD"/> superseded by Article 77 of <xref target="AMLR"/> from 10 July 2027. Anchoring: anchor MUST (at least one of an RFC 3161 token or an OpenTimestamps commitment); both RECOMMENDED; the 7-day deadline for OpenTimestamps upgrade is profile-imposed. LEI placeholder rules require an unallocated GLEIF LOU prefix at positions 1-4, the ISO 17442 reserved value <tt>00</tt> at positions 5-6, and ISO 7064 mod 97-10 check digits at positions 19-20. Algorithm references added: <xref target="RFC8032"/> (EdDSA), <xref target="RFC7518"/> (ES256), <xref target="FIPS204"/> (ML-DSA-65). Added <xref target="RFC5816"/> (ESSCertIDv2) as a normative reference; Compliance Verifiers MUST accept ESSCertIDv2-carrying time-stamp tokens. Reference block uses Official Journal verbatim titles (including "(recast)" for <xref target="MIFID2"/> and "(Text with EEA relevance)" where the OJ carries it) and OJ publication dates throughout. Definition of "Financial Entity" cites Article 2(2) of <xref target="DORA"/>, the paragraph that establishes the collective term, with cross-reference to Article 2(1) for the entity list. Article 12(2)(a)/(b)/(c) headings now use the OJ participle form. <xref target="ISO17442"/> and <xref target="W3C-DID"/> moved to Normative References, since the issuer-id rule invokes them through SHOULD/MAY clauses governing wire-level identifier shape. IANA Extension Fields registry now includes <tt>anchors</tt> with the <tt>rfc3161</tt> / <tt>opentimestamps</tt> anchor-type vocabulary. DORA-bound retention default is 1827 days (worst-case five-calendar-year window with two leap days), aligning the methodology with the 184-day six-month figure used in <xref target="art12-retention"/>. Section 4.1.7 describes upstream <tt>session_id</tt> as an MCP session identifier (not transport-layer), matching <xref target="ACTA-RECEIPTS"/> Section 3.1.1. Section 4.2 names the <tt>decision</tt> field explicitly. Section 7.4 notes that AMLD supersession by Article 77 of <xref target="AMLR"/> is in respect of record retention. Section 4.1.4 states that <tt>payload_digest</tt> follows the upstream object form (<tt>hash</tt>, <tt>size</tt>, optional <tt>preview</tt>) defined in Section 2.2 of <xref target="ACTA-RECEIPTS"/>. Section 9.1 <tt>policy_digest</tt> recomputation rule generalised: SHA-256 over the canonical form of the resolved artefact as documented in the Audit Pack manifest, with JCS specified for JSON artefacts. Section 9.2 optional check on <tt>incident_class</tt> validates each element when the field is encoded as an array. DORA Article 17(3)(b) section heading expanded to include "establish procedures to" per the OJ wording. EU AI Act Article 26(2) prose no longer cites Article 14 (the competence/training/authority phrase comes from Article 26(2) directly). Worked example notes that the receipt shown is mid-chain. "Decentralized" spelling aligned with the W3C reference title. Anchor concept defined inline in Section 4.4 rather than as a Conventions term, removing capitalisation drift. Section 9.1 verification step on the verification key now references Section 4.3 of <xref target="ACTA-RECEIPTS"/> directly (well-known JWK Set or out-of-band) rather than the looser "trust anchor mechanisms required by upstream" wording. Section 4.1.3 names the upstream <tt>kid</tt> mechanisms (well-known JWK Set or <tt>sb:issuer:&lt;base58-fingerprint&gt;</tt>) being superseded for Compliance Receipts. Section 6.2 Article 26(2) prose includes "necessary support" alongside competence, training, and authority, matching OJ wording. Section 4.5 anchoring rule names the bytes committed (SHA-256 of the JCS-canonicalized envelope excluding the <tt>anchors</tt> array). Section 6.4 cross-refs the longer DORA sectoral floor when the Deployer is a Financial Entity. Section 4.1.3 LEI placeholder rule references the ISO 17442-1:2020 Annex A letter-to-digit conversion that precedes mod 97-10. Upstream draft author full name corrected to "Tom Farley".</t>
      </section>
      <section anchor="cl-01" numbered="false"><name>draft-marques-asqav-compliance-receipts-01</name>
        <t>Initial wire-shape alignment with upstream and addition of dual-anchor, hash-chain, retention, and DORA classification bindings. Subsequent revisions superseded the specific values introduced here.</t>
      </section>
      <section anchor="cl-00" numbered="false"><name>draft-marques-asqav-compliance-receipts-00</name>
        <t>Initial version. Defines a profile of <xref target="ACTA-RECEIPTS"/> that binds receipt fields to EU AI Act Article 12, EU AI Act Article 26, and DORA Article 17.</t>
      </section>
    </section>
  </back>
</rfc>
