{"slug":"a-receipt-format-built-for-an-enforcement-deadline-that-s-three-days-away","citations":[{"url":"https://datatracker.ietf.org/doc/draft-marques-asqav-compliance-receipts/","committed_hash":"sha256:1fd2baf357fe1d8c69995ec226637db3e341079508eaf927443c129c7c0a410c","committed_hash_short":"sha256:1fd2baf3…7c0a410c","mime_type":"text/html","committed_at":"2026-07-30T19:00:18.494656+00:00","content_snapshot":"\n<!DOCTYPE html>\n\n\n\n\n\n\n<html data-bs-theme=\"auto\" lang=\"en\" prefix=\"og: http://ogp.me/ns# article: http://ogp.me/ns/article#\">\n    <head>\n        \n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <title>\n            \n    \n        draft-marques-asqav-compliance-receipts-07 - Compliance Profile of Signed Action Receipts for AI Agents\n    \n\n        </title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <meta name=\"traceparent\" content=\"\">\n        <link href=\"https://static.ietf.org/fonts/inter/import.css\" rel=\"stylesheet\">\n        <link href=\"https://static.ietf.org/fonts/noto-sans-mono/import.css\" rel=\"stylesheet\">\n        <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.69.0/ietf/css/ietf.css\">\n        <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.69.0/ietf/css/select2.css\">\n        \n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/theme.js\"></script>\n        <style>\n            .inline { display: inline; }\n        </style>\n        \n        \n    \n\n\n\n\n<meta property=\"og:title\" content=\"Compliance Profile of Signed Action Receipts for AI Agents\">\n<meta property=\"og:url\" content=\"https://datatracker.ietf.org/doc/draft-marques-asqav-compliance-receipts/\">\n<link rel=\"canonical\" href=\"https://datatracker.ietf.org/doc/draft-marques-asqav-compliance-receipts/\">\n<meta property=\"og:site_name\" content=\"IETF Datatracker\">\n<meta property=\"og:description\" content=\"This document defines a multi-jurisdiction 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 two regulatory surfaces: on the European Union side, Articles 12 and 26 of the EU AI Act (Regulation (EU) 2024/1689) and Article 17 of DORA (Regulation (EU) 2022/2554); on the United States side, the NIST AI Risk Management Framework, the Colorado AI Act, the Texas Responsible AI Governance Act, the New York Department of Financial Services Cybersecurity Regulation (23 NYCRR Part 500), the HIPAA Security Rule, SEC Rule 17a-4, and the Cyber Incident Reporting for Critical Infrastructure Act of 2022 (CIRCIA). Working entirely within the existing wire format, canonicalization transformation, and signing algorithms of the underlying receipt format, the profile tightens a subset of the OPTIONAL fields to REQUIRED, imposes a retention floor, and requires at least one timestamping anchor (RFC 3161 or OpenTimestamps). It registers OPTIONAL extension fields for risk and incident classification, cross-agent envelope binding, per-action freshness and integrity, build provenance, threat-framework taxonomy, server-built enforcement attestation, producer-asserted risk acceptance, and producer-asserted code authorship, each subject to false-attestation guards where applicable, and registers receipt type namespaces for passive- telemetry, result-bound observation, risk-acceptance, and code- authorship receipts. The full field set and its normative requirements are defined in the body of this document.\">\n<meta property=\"og:type\" content=\"article\">\n\n<meta property=\"article:section\" content=\"Individual Internet-Draft\">\n\n<meta property=\"article:author\" content=\"João André Gomes Marques\">\n\n\n\n    <link rel=\"alternate\"\n          type=\"application/atom+xml\"\n          title=\"Document changes\"\n          href=\"/feed/document-changes/draft-marques-asqav-compliance-receipts/\">\n    <meta name=\"description\"\n          content=\"Compliance Profile of Signed Action Receipts for AI Agents \">\n\n        <script type=\"module\" crossorigin=\"\" src=\"https://static.ietf.org/dt/12.69.0/assets/embedded-f7f04c22.js\"></script>\n<link href=\"https://static.ietf.org/dt/12.69.0/assets/create-pinia-singleton-e1887cc7.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n<link href=\"https://static.ietf.org/dt/12.69.0/assets/Scrollbar-f0f599a2.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n        \n\n<link rel=\"apple-touch-icon\"\n      sizes=\"180x180\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-180.png\">\n<link rel=\"icon\"\n      sizes=\"32x32\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-32.png\">\n<link rel=\"icon\"\n      sizes=\"16x16\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-16.png\">\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"mask-icon\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-mask.svg\"\n      color=\"#ffffff\">\n<meta name=\"msapplication-TileColor\"\n      content=\"#ffffff\">\n<meta name=\"theme-color\"\n      content=\"#ffffff\">\n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/ietf.js\"></script>\n        \n    </head>\n    <body  class=\"navbar-offset position-relative\"\n          data-group-menu-data-url=\"/group/groupmenu.json\">\n        \n        <noscript><iframe class=\"status\" title=\"Site status\" src=\"/status/latest\"></iframe></noscript>\n<div class=\"vue-embed\" data-component=\"Status\"></div>\n        <a class=\"visually-hidden visually-hidden-focusable\" href=\"#content\">Skip to main content</a>\n        <nav class=\"navbar navbar-expand-lg fixed-top bg-secondary-subtle\">\n            <div class=\"container-fluid\">\n                <a class=\"navbar-brand\" href=\"/\">\n                    \n\n\n\n<img alt=\"IETF Logo\"\n     class=\"d-lm-none me-2\"\n     \n     \n        \n             src=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-white.svg\"\n        \n     \n     >\n\n<img alt=\"IETF Logo\"\n     class=\"d-dm-none me-2\"\n     \n     \n        \n             src=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor.svg\"\n        \n     \n     >\n                    Datatracker\n                    \n                </a>\n                <div class=\"collapse navbar-collapse\" id=\"navbar-collapse\">\n                    <ul class=\"nav navbar-nav flex-nowrap\">\n                        \n\n\n\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Groups\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li class=\"dropdown-header\">By area/parent</li>\n    \n\n\n\n    \n    <li class=\"dropend group-menu group-parent-2010\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#ART\">\n            Apps &amp; Realtime\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1008\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#GEN\">\n            General\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1052\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#INT\">\n            Internet\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1193\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#OPS\">\n            Ops &amp; Management\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1249\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#RTG\">\n            Routing\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1260\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#SEC\">\n            Security\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-2412\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#WIT\">\n            Web and Internet Transport\n        </a>\n    </li>\n\n    \n        <li><a class=\"dropdown-item\" href=\"/group/iesg/about/\">IESG</a></li>\n    \n    <li class=\"dropend group-menu group-parent-7\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/program/\">\n            IAB\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-3\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/rg/\">\n            IRTF\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-2309\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/adm/\">\n            IETF LLC\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1876\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/rfcedtyp/\">\n            RFC Editor\n        </a>\n    </li>\n\n\n    <li class=\"dropend\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/group/\">\n            Other\n        </a>\n        \n\n\n<ul class=\"dropdown-menu ms-n1\">\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/ag/\">Active AGs</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/area/\">Active Areas</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/dir/\">Active Directorates</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/iabworkshop/\">Active IAB Workshops</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/program/\">Active Programs</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/rag/\">Active RAGs</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/team/\">Active Teams</a>\n        </li>\n    \n    \n</ul>\n\n    </li>\n    <li><hr class=\"dropdown-divider\"></li>\n    <li class=\"dropdown-header\">New work</li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/group/chartering/\">\n            Chartering groups\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/wg/bofs/\">\n            BOFs\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/bof-requests\">\n            BOF Requests\n        </a>\n    </li>\n    <li><hr class=\"dropdown-divider\"></li>\n    <li class=\"dropdown-header\">Other groups</li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/group/concluded/\">\n            Concluded groups\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/list/nonwg\">\n            Non-WG lists\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Documents\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/search\">\n            Search\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/recent\">\n            Recent I-Ds\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/submit/\">\n            Submit an Internet-Draft\n        </a>\n    </li>\n    \n    \n        <li><hr class=\"dropdown-divider\">\n        </li>\n    \n    <li class=\"dropdown-header\">\n        RFC streams\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/iab/\">\n            IAB\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/irtf/\">\n            IRTF\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/ise/\">\n            ISE\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/editorial/\">\n            Editorial\n        </a>\n    </li>\n    \n        <li><hr class=\"dropdown-divider\">\n        </li>\n    \n    <li class=\"dropdown-header\">\n        Subseries\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/std\">\n            STD\n        </a>\n        <a class=\"dropdown-item\"\n           href=\"/doc/bcp\">\n            BCP\n        </a>\n        <a class=\"dropdown-item\"\n           href=\"/doc/fyi\">\n            FYI\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Meetings\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/agenda\">\n            Agenda\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/materials\">\n            Materials\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/floor-plan\">\n            Floor plan\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"https://www.ietf.org/how/meetings/register/\">\n            Registration\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/important-dates/\">\n            Important dates\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/session/request/\">\n            Request a session\n        </a>\n    </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/requests\">\n            Session requests\n        </a>\n    </li>\n    \n    \n        \n            <li><hr class=\"dropdown-divider\">\n            </li>\n        \n        <li class=\"dropdown-header\">\n            Upcoming meetings\n        </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/upcoming\">\n            Upcoming meetings\n        </a>\n    </li>\n    \n        \n            <li><hr class=\"dropdown-divider\">\n            </li>\n        \n        <li class=\"dropdown-header\">\n            Past meetings\n        </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/past\">\n            Past meetings\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"https://www.ietf.org/how/meetings/past/\">\n            Meeting proceedings\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Other\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/ipr/\">\n            IPR disclosures\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/liaison/\">\n            Liaison statements\n        </a>\n    </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/iesg/agenda/\">\n            IESG agenda\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/nomcom/\">\n            NomComs\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/downref\">\n            Downref registry\n        </a>\n    </li>\n    <li class=\"dropend\">\n        <a class=\"dropdown-item dropdown-toggle\" href=\"#\">\n            Statistics\n        </a>\n        <ul class=\"dropdown-menu\">\n            <li>\n                <a class=\"dropdown-item\"\n                   href=\"/stats/document/\">\n                    I-Ds/RFCs\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item\"\n                   href=\"/stats/meeting/\">\n                    Meetings\n                </a>\n            </li>\n            \n            \n        </ul>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/api/\">\n            API Help\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/release/\">\n            Release notes\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           target=\"_blank\" href=\"https://status.ietf.org\">\n            System status\n        </a>\n    </li>\n    \n        <li><hr class=\"dropdown-divider\">\n        </li>\n    \n    <li>\n        <a class=\"dropdown-item text-danger \"\n           target=\"_blank\" href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n            <i class=\"bi bi-bug\">\n            </i>\n            Report a bug\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n\n    \n\n\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            \n                User\n            \n        </a>\n        <ul class=\"dropdown-menu  mt-n1 \">\n        \n    \n    \n        \n            <li>\n                <a class=\"dropdown-item \"\n                   rel=\"nofollow\"\n                   href=\"/accounts/login/?next=/doc/draft-marques-asqav-compliance-receipts/\">\n                    Sign in\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                   rel=\"nofollow\"\n                   href=\"/accounts/reset/\">\n                    Password reset\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                   href=\"/accounts/settings/\"\n                   rel=\"nofollow\">\n                    Preferences\n                </a>\n            </li>\n        \n    \n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/accounts/create/\">\n                New account\n            </a>\n        </li>\n    \n    <li class=\"dropend\">\n      <a class=\"dropdown-item dropdown-toggle\" href=\"#\">\n        List subscriptions\n      </a>\n      <ul class=\"dropdown-menu\">\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.ietf.org/mailman3/lists/\">\n                    IETF Lists\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.irtf.org/mailman3/lists/\">\n                IRTF Lists\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.iab.org/mailman3/lists/\">\n                    IAB Lists\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.rfc-editor.org/mailman3/lists/\">\n                    RFC-Editor Lists\n                </a>\n            </li>\n        </ul>\n    </li>\n    \n    \n    \n    \n    \n    </ul></li>\n\n\n                    </ul>\n                </div>\n                <div class=\"d-flex align-items-center\">\n                    <a class=\"nav-link text-danger d-none d-xl-inline me-xl-4\"\n                       target=\"_blank\"\n                       href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n                        Report a bug\n                        <i class=\"bi bi-bug\"></i>\n                    </a>\n\n                    \n                        <a class=\"btn me-1  btn-warning  d-none d-sm-block\"\n                           rel=\"nofollow\"\n                           href=\"/accounts/login/?next=/doc/draft-marques-asqav-compliance-receipts/\">\n                            Sign in\n                        </a>\n                    \n\n                    <div class=\"d-none d-md-block dropdown\" id=\"navbar-doc-search-wrapper\">\n                        <input class=\"form-control\"\n                               id=\"navbar-doc-search\"\n                               type=\"text\"\n                               placeholder=\"Document search\"\n                               autocomplete=\"off\"\n                               data-ajax-url=\"/doc/select2search/document/all/\"\n                               aria-label=\"Document search\">\n                        <ul class=\"dropdown-menu\" id=\"navbar-doc-search-results\">\n                        </ul>\n                    </div>\n                </div>\n                <button class=\"navbar-toggler\"\n                        type=\"button\"\n                        data-bs-toggle=\"collapse\"\n                        data-bs-target=\"#navbar-collapse\"\n                        aria-controls=\"navbar-collapse\"\n                        aria-expanded=\"false\"\n                        aria-label=\"Toggle navigation\">\n                    <i class=\"navbar-toggler-icon\"></i>\n                </button>\n            </div>\n        </nav>\n        \n        <main class=\"pt-3 container-fluid\" id=\"main\">\n            <div class=\"row\">\n                \n                <div class=\"col mx-lg-3 ietf-auto-nav\" id=\"content\">\n                    <noscript data-nosnippet>\n                        <div class=\"alert alert-danger alert-ignore my-3\">\n                            <b>Javascript disabled?</b> Like other modern websites, the IETF Datatracker relies on Javascript.\n                            Please enable Javascript for full functionality.\n                        </div>\n                    </noscript>\n                    \n                    \n    \n    \n\n\n\n<h1>\n    Compliance Profile of Signed Action Receipts for AI Agents\n    <br>\n    <small class=\"text-body-secondary\">draft-marques-asqav-compliance-receipts-07</small>\n</h1>\n<ul class=\"nav nav-tabs my-3\">\n    \n        <li  class=\"nav-item\">\n            <a class=\"nav-link active\"\n               href=\"/doc/draft-marques-asqav-compliance-receipts/\">\n                Status\n            </a>\n        </li>\n    \n        <li  class=\"nav-item\">\n            <a class=\"nav-link \"\n               href=\"/doc/draft-marques-asqav-compliance-receipts/email/\">\n                Email expansions\n            </a>\n        </li>\n    \n        <li  class=\"nav-item\">\n            <a class=\"nav-link \"\n               href=\"/doc/draft-marques-asqav-compliance-receipts/history/\">\n                History\n            </a>\n        </li>\n    \n</ul>\n\n    \n\n\n\n    <label class=\"my-1 fw-bold\">Versions:</label>\n    <nav class=\"mb-3\">\n\n    <ul class=\"revision-list pagination pagination-sm text-center flex-wrap\">\n        \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/00/\"\n                        >\n                            00\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/01/\"\n                        rel=\"nofollow\">\n                            01\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/02/\"\n                        rel=\"nofollow\">\n                            02\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/03/\"\n                        rel=\"nofollow\">\n                            03\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/04/\"\n                        rel=\"nofollow\">\n                            04\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/05/\"\n                        rel=\"nofollow\">\n                            05\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/06/\"\n                        rel=\"nofollow\">\n                            06\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item active\">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-marques-asqav-compliance-receipts/07/\"\n                        >\n                            07\n                        </a>\n                    </li>\n                \n            \n            \n        \n    </ul>\n\n    </nav>\n\n    \n\n\n\n\n    <div class=\"alert alert-warning \" role=\"alert\">\n        This document is an Internet-Draft (I-D).\n        Anyone may submit an I-D to the IETF.\n        This I-D is <strong>not endorsed by the IETF</strong> and has <strong>no formal standing</strong> in the\n        <a href=\"/doc/rfc2026/\">IETF standards process</a>.\n    </div>\n\n\n    <div id=\"doc-timeline\"></div>\n    \n        \n    \n    <table class=\"table table-sm table-borderless\">\n        \n\n\n\n\n\n\n\n<tbody class=\"meta align-top  border-top\">\n    <tr>\n        <th scope=\"row\">Document</th>\n        <th scope=\"row\">Type</th>\n        <td class=\"edit\"></td>\n        <td>\n            \n\n\n\n\n\n\n\n    <span class=\"text-success\">Active Internet-Draft</span>\n    (individual)\n    \n\n            \n            \n            \n        </td>\n    </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Author</th>\n        <td class=\"edit\">\n            \n        </td>\n        <td>\n            \n            \n                <span ><a \n           title=\"Datatracker profile of João André Gomes Marques\"\n            href=\"/person/info@asqav.com\" >João André Gomes Marques</a> <a \n               href=\"mailto:info%40asqav.com\"\n               aria-label=\"Compose email to info@asqav.com\"\n               title=\"Compose email to info@asqav.com\">\n                <i class=\"bi bi-envelope\"></i></a></span>\n            \n            \n        </td>\n    </tr>\n    \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Last updated</th>\n        <td class=\"edit\"></td>\n        <td>\n            2026-07-20\n            \n        </td>\n    </tr>\n    \n    \n        \n        \n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            RFC stream\n        </th>\n        <td class=\"edit\">\n            \n        </td>\n        <td class=\"text-body-secondary\">\n            \n                (None)\n            \n        </td>\n    </tr>\n    \n        <tr>\n            <td></td>\n            <th scope=\"row\">\n                Intended RFC status\n            </th>\n            <td class=\"edit\">\n                \n            </td>\n            <td>\n                \n                    <span class=\"text-body-secondary\">\n                        (None)\n                    </span>\n                \n            </td>\n        </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            Formats\n        </th>\n        <td class=\"edit\">\n        </td>\n        <td>\n            \n                \n    <div class=\"buttonlist\">\n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-07.txt\">\n            \n                <i class=\"bi bi-file-text\"></i> txt\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-07.html\">\n            \n                <i class=\"bi bi-file-code\"></i> html\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-07.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> xml\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          \n          href=\"/doc/html/draft-marques-asqav-compliance-receipts-07\">\n            \n                <i class=\"bi bi-file-code\"></i> htmlized\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/draft-marques-asqav-compliance-receipts/07/bibtex/\">\n            \n                <i class=\"bi bi-file-ruled\"></i> bibtex\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/bibxml3/draft-marques-asqav-compliance-receipts-07.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> bibxml\n            \n        </a>\n        \n    \n</div>\n\n            \n        </td>\n    </tr>\n    \n    \n        \n    \n        \n            \n            \n        \n    \n    \n        \n            <tr>\n                <td>\n                </td>\n                <th scope=\"row\">\n                    Additional resources\n                </th>\n                <td class=\"edit\">\n                    \n                </td>\n                <td>\n                    \n                        \n                            \n                                <a href=\"https://www.asqav.com\" title=\"Additional Web Page\">\n                                    Additional Web Page\n                                </a>\n                                <br>\n                                \n                            \n                        \n                            \n                                <a href=\"https://github.com/jagmarques/asqav-sdk\" title=\"Other Repository\">\n                                    Other Repository\n                                </a>\n                                <br>\n                                \n                            \n                        \n                        \n                    \n                </td>\n            </tr>\n        \n    \n</tbody>\n        <tbody class=\"meta border-top\">\n            <tr>\n                <th scope=\"row\">\n                    Stream\n                </th>\n                \n                    <th scope=\"row\">\n                        Stream state\n                    </th>\n                    <td class=\"edit\">\n                    </td>\n                    <td>\n                        <span class=\"text-body-secondary\">(No stream defined)</span>\n                    </td>\n                \n            </tr>\n            \n            \n                <tr>\n                    <td></td>\n                    <th scope=\"row\">\n                        Consensus boilerplate\n                    </th>\n                    <td class=\"edit\">\n                        \n                    </td>\n                    <td>\n                        <span class=\"text-danger\"\n                              title=\"Whether the document is the result of a community consensus process as defined in RFC 5741\">\n                            Unknown\n                        </span>\n                    </td>\n                </tr>\n            \n            \n            \n                <tr>\n                    <td></td>\n                    <th scope=\"row\">\n                        RFC Editor Note\n                    </th>\n                    <td class=\"edit\">\n                        \n                    </td>\n                    <td>\n                        \n                            <span class=\"text-body-secondary\">\n                                (None)\n                            </span>\n                        \n                    </td>\n                </tr>\n            \n            \n        </tbody>\n        \n            <tbody class=\"meta border-top\">\n                <tr>\n                    <th scope=\"row\">\n                        IESG\n                    </th>\n                    <th scope=\"row\">\n                        <a href=\"/doc/help/state/draft-iesg/\">\n                            IESG state\n                        </a>\n                    </th>\n                    <td class=\"edit\">\n                        \n                    </td>\n                    <td>\n                        <span class=\"\">\n                            \n                                I-D Exists\n                            \n                        </span>\n                    </td>\n                </tr>\n                \n                    \n                    <tr>\n                        <td></td>\n                        <th scope=\"row\">\n                            Telechat date\n                        </th>\n                        <td class=\"edit\">\n                            \n                        </td>\n                        <td>\n                            \n                                <span class=\"text-body-secondary\">\n                                    (None)\n                                </span>\n                            \n                            \n                        </td>\n                    </tr>\n                    <tr>\n                        <td></td>\n                        <th scope=\"row\">\n                            Responsible AD\n                        </th>\n                        <td class=\"edit\">\n                            \n                        </td>\n                        <td>\n                            \n                                <span class=\"text-body-secondary\">\n                                    (None)\n                                </span>\n                            \n                        </td>\n                    </tr>\n                    \n                    <tr>\n                        <td></td>\n                        <th scope=\"row\">\n                            Send notices to\n                        </th>\n                        <td class=\"edit\">\n                            \n                        </td>\n                        <td>\n                            \n                                <span class=\"text-body-secondary\">\n                                    (None)\n                                </span>\n                            \n                        </td>\n                    </tr>\n                </tbody>\n            \n            \n                \n            \n            \n        </table>\n        <div class=\"buttonlist\">\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"mailto:draft-marques-asqav-compliance-receipts@ietf.org?subject=Mail%20regarding%20draft-marques-asqav-compliance-receipts\">\n                <i class=\"bi bi-envelope\">\n                </i>\n                Email authors\n            </a>\n            \n            <a class=\"btn btn-primary btn-sm\"\n               href=\"/ipr/search/?submit=draft&amp;id=draft-marques-asqav-compliance-receipts\"\n               rel=\"nofollow\">\n                <i class=\"bi bi-lightning\">\n                </i>\n                IPR\n                \n            </a>\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"/doc/draft-marques-asqav-compliance-receipts/references/\"\n               rel=\"nofollow\">\n                <i class=\"bi bi-arrow-left\">\n                </i>\n                References\n            </a>\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"/doc/draft-marques-asqav-compliance-receipts/referencedby/\"\n               rel=\"nofollow\">\n                <i class=\"bi bi-arrow-right\">\n                </i>\n                Referenced by\n            </a>\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-07.txt\"\n               rel=\"nofollow\"\n               target=\"_blank\">\n                <i class=\"bi bi-exclamation\">\n                </i>\n                Nits\n            </a>\n             <a class=\"btn btn-primary btn-sm\"\n               href=\"https://author-tools.ietf.org/idnits3/results?url=https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-07.txt\"\n               rel=\"nofollow\"\n               target=\"_blank\">\n                <i class=\"bi bi-exclamation-diamond\">\n                </i>\n                Nits v3\n            </a>           \n            <a class=\"btn btn-primary btn-sm\"\n               href=\"https://mailarchive.ietf.org/arch/search/?q=%22draft-marques-asqav-compliance-receipts%22\"\n               rel=\"nofollow\"\n               target=\"_blank\">\n                <i class=\"bi bi-search\">\n                </i>\n                Search email archive\n            </a>\n            \n            \n            \n            \n        </div>\n        \n            <div class=\"card mt-5\">\n                <div class=\"card-header\">\n                    \n                        draft-marques-asqav-compliance-receipts-07\n                    \n                </div>\n                <div class=\"card-body\">\n                    <pre>Network Working Group                                J. A. Gomes Marques\nInternet-Draft                                                     Asqav\nIntended status: Informational                              20 July 2026\nExpires: 21 January 2027\n\n       Compliance Profile of Signed Action Receipts for AI Agents\n               draft-marques-asqav-compliance-receipts-07\n\n<span>Abstract</span>\n\n   This document defines a multi-jurisdiction compliance profile of the\n   signed action receipt format used by AI agents to record machine-\n   readable evidence of access-control decisions.  The profile binds\n   receipt fields to two regulatory surfaces: on the European Union\n   side, Articles 12 and 26 of the EU AI Act (Regulation (EU) 2024/1689)\n   and Article 17 of DORA (Regulation (EU) 2022/2554); on the United\n   States side, the NIST AI Risk Management Framework, the Colorado AI\n   Act, the Texas Responsible AI Governance Act, the New York Department\n   of Financial Services Cybersecurity Regulation (23 NYCRR Part 500),\n   the HIPAA Security Rule, SEC Rule 17a-4, and the Cyber Incident\n   Reporting for Critical Infrastructure Act of 2022 (CIRCIA).  Working\n   entirely within the existing wire format, canonicalization\n   transformation, and signing algorithms of the underlying receipt\n   format, the profile tightens a subset of the OPTIONAL fields to\n   REQUIRED, imposes a retention floor, and requires at least one\n   timestamping anchor (RFC 3161 or OpenTimestamps).  It registers\n   OPTIONAL extension fields for risk and incident classification,\n   cross-agent envelope binding, per-action freshness and integrity,\n   build provenance, threat-framework taxonomy, server-built enforcement\n   attestation, producer-asserted risk acceptance, and producer-asserted\n   code authorship, each subject to false-attestation guards where\n   applicable, and registers receipt type namespaces for passive-\n   telemetry, result-bound observation, risk-acceptance, and code-\n   authorship receipts.  The full field set and its normative\n   requirements are defined in the body of this document.\n\n<span>Status of This Memo</span>\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at https://datatracker.ietf.org/drafts/current/.\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 1]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as &quot;work in progress.&quot;\n\n   This Internet-Draft will expire on 21 January 2027.\n\n<span>Copyright Notice</span>\n\n   Copyright (c) 2026 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust&#x27;s Legal\n   Provisions Relating to IETF Documents (https://trustee.ietf.org/\n   license-info) in effect on the date of publication of this document.\n   Please review these documents carefully, as they describe your rights\n   and restrictions with respect to this document.\n\n<span>Table of Contents</span>\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   5\n     1.1.  Profile, Not Fork . . . . . . . . . . . . . . . . . . . .   5\n     1.2.  Scope . . . . . . . . . . . . . . . . . . . . . . . . . .   6\n   2.  Conventions and Definitions . . . . . . . . . . . . . . . . .   6\n   3.  Relationship to ACTA-RECEIPTS . . . . . . . . . . . . . . . .   7\n   4.  Canonicalization Scope  . . . . . . . . . . . . . . . . . . .   8\n   5.  Receipt Field Profile . . . . . . . . . . . . . . . . . . . .  10\n     5.1.  Common Payload Fields . . . . . . . . . . . . . . . . . .  10\n       5.1.1.  type  . . . . . . . . . . . . . . . . . . . . . . . .  10\n       5.1.2.  issued_at . . . . . . . . . . . . . . . . . . . . . .  10\n       5.1.3.  issuer_id . . . . . . . . . . . . . . . . . . . . . .  11\n       5.1.4.  payload_digest (OPTIONAL upstream, REQUIRED in this\n               profile)  . . . . . . . . . . . . . . . . . . . . . .  12\n       5.1.5.  action_ref (OPTIONAL upstream, REQUIRED in this\n               profile)  . . . . . . . . . . . . . . . . . . . . . .  12\n       5.1.6.  sandbox_state (OPTIONAL upstream, REQUIRED for\n               High-Risk in this profile)  . . . . . . . . . . . . .  12\n       5.1.7.  iteration_id (OPTIONAL upstream, REQUIRED for\n               multi-step in this profile) . . . . . . . . . . . . .  12\n     5.2.  Decision Receipt Fields (type protectmcp:decision)  . . .  13\n       5.2.1.  reason (OPTIONAL upstream, REQUIRED for deny/rate_limit\n               in this profile)  . . . . . . . . . . . . . . . . . .  13\n       5.2.2.  policy_digest (OPTIONAL upstream, REQUIRED in this\n               profile)  . . . . . . . . . . . . . . . . . . . . . .  13\n     5.3.  Hash-Chain Linkage (OPTIONAL upstream, REQUIRED in this\n            profile) . . . . . . . . . . . . . . . . . . . . . . . .  14\n     5.4.  Anchoring (No Upstream Equivalent)  . . . . . . . . . . .  15\n     5.5.  Extension Fields  . . . . . . . . . . . . . . . . . . . .  18\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 2]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n     5.6.  Counterparty Binding  . . . . . . . . . . . . . . . . . .  19\n       5.6.1.  Wire Shape  . . . . . . . . . . . . . . . . . . . . .  19\n       5.6.2.  Emitter Behaviour . . . . . . . . . . . . . . . . . .  22\n       5.6.3.  Verifier Behaviour  . . . . . . . . . . . . . . . . .  22\n     5.7.  Result-Bound and Freshness Extensions . . . . . . . . . .  23\n     5.8.  Build-Provenance Extensions . . . . . . . . . . . . . . .  25\n     5.9.  Enforcement-Attestation Extensions  . . . . . . . . . . .  27\n     5.10. Risk-Acceptance Extensions  . . . . . . . . . . . . . . .  28\n     5.11. Code-Authorship Extensions  . . . . . . . . . . . . . . .  31\n     5.12. Threat-Framework Taxonomy Extensions  . . . . . . . . . .  34\n   6.  European Union Bindings . . . . . . . . . . . . . . . . . . .  35\n     6.1.  EU AI Act Article 12 Binding  . . . . . . . . . . . . . .  35\n       6.1.1.  Article 12(1), automatic recording of events  . . . .  35\n       6.1.2.  Article 12(2)(a), identifying situations that may\n               result in the high-risk AI system presenting a risk\n               within the meaning of Article 79(1) or in a substantial\n               modification  . . . . . . . . . . . . . . . . . . . .  36\n       6.1.3.  Article 12(2)(b), facilitating the post-market\n               monitoring referred to in Article 72  . . . . . . . .  36\n       6.1.4.  Article 12(2)(c), monitoring the operation of high-risk\n               AI systems referred to in Article 26(5) . . . . . . .  36\n       6.1.5.  Retention . . . . . . . . . . . . . . . . . . . . . .  36\n     6.2.  EU AI Act Article 26 Binding  . . . . . . . . . . . . . .  37\n       6.2.1.  Article 26(1), in accordance with the instructions for\n               use . . . . . . . . . . . . . . . . . . . . . . . . .  37\n       6.2.2.  Article 26(2), assign human oversight . . . . . . . .  37\n       6.2.3.  Article 26(5), monitor the operation  . . . . . . . .  38\n       6.2.4.  Article 26(6), keep the logs for at least six\n               months  . . . . . . . . . . . . . . . . . . . . . . .  38\n     6.3.  DORA Article 17 Binding . . . . . . . . . . . . . . . . .  38\n       6.3.1.  Article 17(1), ICT-related incident management\n               process . . . . . . . . . . . . . . . . . . . . . . .  38\n       6.3.2.  Article 17(2), record all ICT-related incidents and\n               significant cyber threats . . . . . . . . . . . . . .  38\n       6.3.3.  Article 17(3)(b), establish procedures to identify,\n               track, log, categorise and classify ICT-related\n               incidents . . . . . . . . . . . . . . . . . . . . . .  38\n       6.3.4.  Retention . . . . . . . . . . . . . . . . . . . . . .  39\n   7.  United States Bindings  . . . . . . . . . . . . . . . . . . .  39\n     7.1.  NIST AI RMF Binding . . . . . . . . . . . . . . . . . . .  39\n       7.1.1.  GOVERN function . . . . . . . . . . . . . . . . . . .  40\n       7.1.2.  MAP function  . . . . . . . . . . . . . . . . . . . .  40\n       7.1.3.  MEASURE function  . . . . . . . . . . . . . . . . . .  40\n       7.1.4.  MANAGE function . . . . . . . . . . . . . . . . . . .  40\n     7.2.  Colorado AI Act (SB 24-205) Binding . . . . . . . . . . .  40\n       7.2.1.  Section 6-1-1703(2), risk management policy and\n               program . . . . . . . . . . . . . . . . . . . . . . .  41\n       7.2.2.  Section 6-1-1703(3), impact assessment  . . . . . . .  41\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 3]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n       7.2.3.  Section 6-1-1703(7), notice of algorithmic\n               discrimination  . . . . . . . . . . . . . . . . . . .  41\n     7.3.  Texas Responsible AI Governance Act (HB 149) Binding  . .  41\n       7.3.1.  Safe-harbor evidentiary support . . . . . . . . . . .  41\n       7.3.2.  Prohibited-use detection  . . . . . . . . . . . . . .  42\n     7.4.  HIPAA Security Rule Binding (45 CFR Part 164, Subpart\n           C)  . . . . . . . . . . . . . . . . . . . . . . . . . . .  42\n       7.4.1.  45 CFR 164.312(b), audit controls . . . . . . . . . .  42\n       7.4.2.  45 CFR 164.316(b)(2), six-year retention  . . . . . .  42\n     7.5.  NYDFS Cybersecurity Regulation Binding (23 NYCRR Part\n           500)  . . . . . . . . . . . . . . . . . . . . . . . . . .  43\n       7.5.1.  23 NYCRR 500.6, audit trail . . . . . . . . . . . . .  43\n       7.5.2.  23 NYCRR 500.17, notices to superintendent  . . . . .  43\n       7.5.3.  23 NYCRR 500.6 retention  . . . . . . . . . . . . . .  44\n     7.6.  SEC Broker-Dealer Recordkeeping Binding (17 CFR\n           240.17a-4)  . . . . . . . . . . . . . . . . . . . . . . .  44\n       7.6.1.  17 CFR 240.17a-4(f), electronic recordkeeping\n               system  . . . . . . . . . . . . . . . . . . . . . . .  44\n       7.6.2.  17 CFR 240.17a-4(a) and (b) retention . . . . . . . .  44\n     7.7.  CIRCIA Binding (Cyber Incident Reporting for Critical\n           Infrastructure Act of 2022) . . . . . . . . . . . . . . .  45\n       7.7.1.  Covered Cyber Incident reporting support  . . . . . .  45\n       7.7.2.  Records related to a Covered Cyber Incident report  .  45\n   8.  Audit Pack Composition  . . . . . . . . . . . . . . . . . . .  46\n   9.  Verifier Behaviour  . . . . . . . . . . . . . . . . . . . . .  47\n     9.1.  Mandatory Checks  . . . . . . . . . . . . . . . . . . . .  47\n     9.2.  Optional Checks . . . . . . . . . . . . . . . . . . . . .  48\n     9.3.  Reporting . . . . . . . . . . . . . . . . . . . . . . . .  48\n   10. Security Considerations . . . . . . . . . . . . . . . . . . .  49\n     10.1.  Tamper Resistance  . . . . . . . . . . . . . . . . . . .  50\n     10.2.  Chain Availability Under Single-Linear Per-Agent\n             Serialization . . . . . . . . . . . . . . . . . . . . .  50\n     10.3.  Key Compromise . . . . . . . . . . . . . . . . . . . . .  51\n     10.4.  Retention and Long-Term Verifiability  . . . . . . . . .  51\n     10.5.  Privacy  . . . . . . . . . . . . . . . . . . . . . . . .  52\n     10.6.  Anchor Trust . . . . . . . . . . . . . . . . . . . . . .  52\n     10.7.  Replay . . . . . . . . . . . . . . . . . . . . . . . . .  52\n     10.8.  Cross-Regime Conflict  . . . . . . . . . . . . . . . . .  53\n     10.9.  Algorithm Agility  . . . . . . . . . . . . . . . . . . .  53\n     10.10. Issuer-Misrepresentation Residual  . . . . . . . . . . .  53\n     10.11. Cross-Agent Integrity Trust Boundary . . . . . . . . . .  54\n     10.12. Compromised Intermediary Between Two Honest Endpoints  .  55\n   11. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  58\n     11.1.  Compliance Receipt Extension Fields Registry . . . . . .  58\n     11.2.  Compliance Receipt Type Namespaces Registry  . . . . . .  66\n   12. Related Work  . . . . . . . . . . . . . . . . . . . . . . . .  68\n   13. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  73\n   14. Normative References  . . . . . . . . . . . . . . . . . . . .  73\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 4]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   15. Informative References  . . . . . . . . . . . . . . . . . . .  75\n   Worked Example (Informative)  . . . . . . . . . . . . . . . . . .  82\n   Change Log  . . . . . . . . . . . . . . . . . . . . . . . . . . .  85\n     Changes in draft -07  . . . . . . . . . . . . . . . . . . . . .  85\n     Changes in draft -06  . . . . . . . . . . . . . . . . . . . . .  86\n     Changes in draft -05  . . . . . . . . . . . . . . . . . . . . .  90\n     Changes in draft -04  . . . . . . . . . . . . . . . . . . . . .  94\n     Changes in draft -03  . . . . . . . . . . . . . . . . . . . . . 100\n     Changes in draft -02  . . . . . . . . . . . . . . . . . . . . . 101\n     Changes in draft -01  . . . . . . . . . . . . . . . . . . . . . 101\n     Changes in draft -00  . . . . . . . . . . . . . . . . . . . . . 101\n   Appendix - Capture Topologies for Compliance Receipt Emission . . 101\n     In-Process SDK  . . . . . . . . . . . . . . . . . . . . . . . . 102\n     Network-Layer Egress Proxy  . . . . . . . . . . . . . . . . . . 102\n     Browser Extension . . . . . . . . . . . . . . . . . . . . . . . 103\n     eBPF SNI Observer . . . . . . . . . . . . . . . . . . . . . . . 103\n     MCP Transparent Proxy . . . . . . . . . . . . . . . . . . . . . 104\n     Passive Telemetry Ingestion . . . . . . . . . . . . . . . . . . 104\n     capture_topology Vocabulary and Considerations for a Future IANA\n             Registry  . . . . . . . . . . . . . . . . . . . . . . . 105\n   Author&#x27;s Address  . . . . . . . . . . . . . . . . . . . . . . . . 106\n\n1.  Introduction\n\n1.1.  Profile, Not Fork\n\n   [ACTA-RECEIPTS] specifies a generic, signed receipt envelope for\n   recording machine-to-machine access control decisions made by AI\n   agents.  Section 2.2 of [ACTA-RECEIPTS] defines a common payload\n   field set in which all fields except type, issued_at, and issuer_id\n   are OPTIONAL.  Section 5.7 of [ACTA-RECEIPTS] introduces hash\n   chaining (previousReceiptHash) inside an optional Commitment Mode\n   extension.  [ACTA-RECEIPTS] does not define receipt retention, does\n   not require timestamping anchors, and does not bind to any regulatory\n   regime.\n\n   This document is an additive overlay on [ACTA-RECEIPTS]: it\n   constrains fields the upstream draft leaves OPTIONAL, fixes their\n   values where regulation requires, and registers a set of extension\n   fields with reserved names spanning regulatory classification, cross-\n   agent envelope binding, per-action freshness and integrity, build\n   provenance, threat-framework taxonomy, and server-built enforcement\n   attestation.  The full extension-field set is defined in Section 5.5\n   and the sections that follow it.  A Compliance Receipt remains a\n   conformant [ACTA-RECEIPTS] receipt.  Field references use upstream\n   field names rather than section numbers, to reduce maintenance hazard\n   if upstream re-numbers in a future revision.\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 5]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n1.2.  Scope\n\n   This document fills the regulatory binding gap on two surfaces.\n   Section 5 binds the receipt to European Union obligations: Article 12\n   (record-keeping) and Article 26 (deployer obligations) of the EU AI\n   Act, and Article 17 (ICT-related incident management) of DORA.\n   Section 6 binds the receipt to United States obligations: the\n   voluntary functions of the NIST AI Risk Management Framework, the\n   deployer obligations of the Colorado AI Act and the Texas Responsible\n   AI Governance Act, the audit-trail and incident-reporting obligations\n   of NYDFS Part 500, the audit controls and documentation retention of\n   the HIPAA Security Rule, the broker-dealer recordkeeping requirements\n   of SEC Rule 17a-4, and the covered-incident reporting requirements of\n   CIRCIA.\n\n   The bindings are written from the Deployer&#x27;s perspective, where\n   Deployer is used in the regime-specific sense (Article 3(4) of\n   [EU-AI-ACT] for EU bindings; Section 6-1-1701(6) of the Colorado\n   Revised Statutes for Colorado bindings).  Where another statute uses\n   a different term (Provider, Financial Entity, Covered Entity for\n   HIPAA, Covered Entity for NYDFS, Broker-Dealer for SEC, Covered\n   Entity for CIRCIA), the binding section names the term as the source\n   statute uses it.\n\n   A verifier that implements only [ACTA-RECEIPTS] can cryptographically\n   validate a profile receipt but cannot attest the additional\n   compliance bindings of this document.\n\n2.  Conventions and Definitions\n\n   The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;,\n   &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and\n   &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP\n   14 [RFC2119] [RFC8174] when, and only when, they appear in all\n   capitals, as shown here.\n\n   The following terms are used in this document.\n\n   Action:  An operation performed by an AI agent that is subject to a\n      policy evaluation.  Examples include a tool invocation, an\n      external API call, a write to durable storage, and the issuance of\n      an irreversible instruction to another system.\n\n   Action Receipt:  A signed envelope conforming to [ACTA-RECEIPTS] that\n      records the policy evaluation result for a single Action.\n\n   Compliance Receipt:  An Action Receipt that additionally satisfies\n      the requirements of this profile.\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 6]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   Deployer (EU AI Act):  As defined in Article 3(4) of [EU-AI-ACT].\n\n   Deployer (Colorado AI Act):  As defined in Section 6-1-1701(6) of the\n      Colorado Revised Statutes, as enacted by [COLORADO-AI-ACT].\n\n   High-Risk AI System (EU AI Act):  As defined in Article 6 of\n      [EU-AI-ACT].\n\n   High-Risk AI System (Colorado AI Act):  As defined in\n      Section 6-1-1701(9) of the Colorado Revised Statutes, as enacted\n      by [COLORADO-AI-ACT].\n\n   Financial Entity:  As defined in Article 2(2) of [DORA], for entities\n      listed in Article 2(1).\n\n   Covered Entity (HIPAA):  As defined in 45 CFR 160.103, namely a\n      health plan, a health care clearinghouse, or a health care\n      provider that transmits health information in electronic form in\n      connection with a covered transaction.\n\n   Covered Entity (NYDFS):  As defined in 23 NYCRR 500.1(e), namely any\n      person operating under or required to operate under a license,\n      registration, charter, certificate, permit, accreditation or\n      similar authorization under the Banking Law, the Insurance Law or\n      the Financial Services Law, regardless of whether the covered\n      entity is also regulated by other government agencies.\n\n   Broker-Dealer:  As defined in section 3(a)(4) and 3(a)(5) of the\n      Securities Exchange Act of 1934, subject to recordkeeping under\n      [SEC-17A-4].\n\n   Covered Entity (CIRCIA):  As to be defined in the final rule\n      promulgated under the Cyber Incident Reporting for Critical\n      Infrastructure Act of 2022.  Pending publication of the final\n      rule, the term is interpreted in accordance with the statutory\n      definition at 6 U.S.C. 681 and CISA&#x27;s notice of proposed\n      rulemaking.\n\n   Audit Pack:  A bundle of Compliance Receipts, the chain commitments\n      that link them, the public verification keys, the trust anchor\n      metadata, and the regime mapping required by Sections 5 and 6 of\n      this document, packaged for delivery to a regulator or auditor.\n\n3.  Relationship to ACTA-RECEIPTS\n\n   This profile is an additive overlay on [ACTA-RECEIPTS].  It does not\n   modify the envelope, the canonicalization rule, the signature object,\n   or the algorithm registry of [ACTA-RECEIPTS].\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 7]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   The following normative statements apply.\n\n   *  Implementations of this profile MUST produce receipts that are\n      cryptographically verifiable by a conformant [ACTA-RECEIPTS]\n      verifier under the canonicalization rules (JCS, [RFC8785]) and the\n      signature scope of [ACTA-RECEIPTS] Section 5.6.\n\n   *  Implementations of this profile MUST NOT introduce new top-level\n      fields in the signed payload that conflict with names reserved by\n      [ACTA-RECEIPTS].\n\n   *  Implementations of this profile MAY use any signature algorithm\n      permitted by [ACTA-RECEIPTS]: EdDSA (Ed25519, mandatory-to-\n      implement, [RFC8032]), ES256 (ECDSA using P-256 and SHA-256,\n      [RFC7518]), and ML-DSA-65 ([FIPS204]).\n\n   *  Where [ACTA-RECEIPTS] marks a field OPTIONAL and this profile\n      marks the same field REQUIRED, the stricter requirement applies to\n      Compliance Receipts.\n\n   A receipt that fails any MUST clause of this profile is not a\n   Compliance Receipt.  It MAY still be a valid [ACTA-RECEIPTS] receipt.\n\n   This profile differentiates from [ACTA-RECEIPTS] on three axes:\n   mandatory hash-chain linkage (upstream Commitment Mode is OPTIONAL),\n   mandatory anchoring with RFC 3161 or OpenTimestamps (both\n   RECOMMENDED; upstream lists Sigstore Rekor in its Implementation\n   Status appendix as an OPTIONAL temporal anchor), and a retention\n   floor tied to specific regulatory articles (upstream is silent on\n   retention).\n\n4.  Canonicalization Scope\n\n   This section is normative.  The canonicalization rule itself (JCS,\n   [RFC8785]) is inherited unchanged from [ACTA-RECEIPTS]; this section\n   bounds the inputs the rule is applied to, so that the cross-\n   implementation byte equality on which the hash chain of Section 5.3,\n   the anchor scope of Section 5.4, and the cross-agent binding of\n   Section 5.6 all depend is achievable in practice.\n\n   IEEE-754 floating-point numbers MUST NOT appear in the canonical form\n   covered by a SHA-256 digest under this profile.  Callers MUST\n   serialize numeric values that are not exact integers in the IEEE-754\n   safe integer range (the closed interval from minus (2 to the 53 minus\n   1) to plus (2 to the 53 minus 1) inclusive) either as JSON strings or\n   as integer-rational pairs (numerator and denominator as JSON numbers\n   within that safe integer range) before the canonicalization step.\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 8]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   Rationale: Section 3.2.2.3 of [RFC8785] specifies, by reference to\n   Section 7.1.12.1 of ECMA-262, a byte-stable serialization that in\n   principle covers all IEEE-754 double-precision values, integer or\n   fractional.  In practice, several widely deployed JSON serializers do\n   not implement the ECMA-262 Number-to-String algorithm with byte\n   fidelity: Python json.dumps, Go encoding/json, and Java Jackson\n   (without explicit configuration) all produce different byte sequences\n   from the same IEEE-754 double in documented cases (round-to-even\n   ties, subnormal values, large-magnitude values requiring scientific\n   notation).  Compliance and regulatory contexts (monetary amounts,\n   retention thresholds, anchoring intervals) additionally prefer exact\n   integer or string-encoded decimal representations because float\n   rounding loses the exact bytes that auditors quote.  This profile\n   therefore shifts the canonicalization burden off implementers (who\n   would otherwise have to verify ECMA-262 conformance of an underlying\n   JSON library) and onto callers, who are in a better position to\n   choose a portable representation for the use case at hand.  A receipt\n   that carries a floating-point number in a digest-covered field is not\n   guaranteed to verify across implementations even when each\n   implementation independently conforms to [RFC8785], because the\n   conformance burden has not been met by every mainstream JSON library.\n\n   Tool-version-specific semantic equivalence is OUT OF SCOPE for the\n   chain layer of this profile.  The chain layer guarantees byte\n   equality only.  Examples of semantic equivalence that this profile\n   does not assert and does not require a verifier to assert: SQL\n   keyword case folding (SELECT vs select), filesystem path\n   normalization (trailing slash, redundant separators, symlink\n   resolution), Unicode normalization in any form (NFC, NFD, NFKC,\n   NFKD); Section 3.1 of [RFC8785] requires that all components\n   depending on JCS preserve Unicode string data as-is, and\n   Section 3.2.2.2 of [RFC8785] serializes each code point without\n   normalization, so callers MUST NOT rely on a verifier normalizing\n   strings before comparison, locale-aware string collation (Turkish\n   dotted-i, German sharp-s case folding, ICU collation tables), numeric\n   tolerance (1.0 vs 1, 1e3 vs 1000), or URL percent-encoding choices\n   below the RFC 3986 unreserved set.  Higher-level semantic equivalence\n   is a per-tool concern and, where required by a regulator, MUST be\n   expressed in the policy artefact resolved through policy_digest\n   (Section 5.2.2) rather than in the chain.\n\n   The chain layer of this profile answers a single question for a\n   verifier or a regulator: did the same canonicalized bytes pass\n   through agent X at wall-clock time T, as fixed by the anchor evidence\n   of Section 5.4.  Anything beyond that question, including whether two\n   byte sequences are semantically equivalent under a downstream tool,\n   whether a policy update materially changed the meaning of a\n   previously accepted Action, or whether a counterparty&#x27;s\n\n<span>Gomes Marques            Expires 21 January 2027                [Page 9]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   interpretation of the same bytes matched the originator&#x27;s, is the\n   verifier&#x27;s concern and is supported by the Audit Pack manifest\n   (Section 8) and the verifier reporting fields of Section 9.3, not by\n   the chain itself.\n\n5.  Receipt Field Profile\n\n   This section enumerates fields defined by [ACTA-RECEIPTS] and states\n   the additional requirements that this profile places on them.  Field\n   names follow [ACTA-RECEIPTS] exactly.\n\n   Compliance Receipts MUST use the upstream wire field name signature\n   for the signature object, exactly as defined in Sections 2.1 and\n   2.1.1 of [ACTA-RECEIPTS].  The keys inside that object are alg, kid,\n   sig.  Implementations whose internal storage uses a different field\n   name MUST translate to signature on emission and on canonicalization\n   for verification; receipts that appear on the wire under any other\n   top-level field name are non-conformant to [ACTA-RECEIPTS] and to\n   this profile.  Anchors MUST be projected into a top-level anchors\n   array with a type discriminator and a value field carrying the anchor\n   bytes (base64-encoded for binary payloads).  Flat-column\n   implementations MUST project on emission and Audit Pack export.\n\n5.1.  Common Payload Fields\n\n5.1.1.  type\n\n   Compliance Receipts MUST set type to a value drawn from the namespace\n   protectmcp:decision, protectmcp:restraint, or protectmcp:lifecycle,\n   or to an extension namespace registered for use with this profile.\n\n5.1.2.  issued_at\n\n   REQUIRED upstream and in this profile.  The value MUST be an ISO 8601\n   timestamp with an explicit timezone.  The producing system MUST\n   source the value from a clock synchronized to a recognized time\n   authority and MUST NOT backdate the value.  Verifiers MUST reject\n   receipts whose issued_at is more than 300 seconds ahead of the\n   verifier&#x27;s own clock.  Verifiers MUST NOT reject a receipt solely\n   because issued_at lies in the past; past skew is bounded by the\n   applicable retention floor in Sections 5 and 6, not by freshness.\n   Historical receipts within retention MUST verify on the same path as\n   fresh ones.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 10]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n5.1.3.  issuer_id\n\n   REQUIRED upstream and in this profile.  The value MUST identify a\n   legal entity, not a natural person.  Where the producing system is\n   operated by a Deployer, the issuer_id MUST resolve, through the trust\n   anchor metadata in the Audit Pack, to a record naming the Deployer.\n   To preserve the upstream Section 2.2 invariant that issuer_id MUST\n   match the kid field of the signature object, Compliance Receipts MUST\n   place the same value in both issuer_id and kid; the verifier resolves\n   that value to a public key through the Audit Pack trust-anchor\n   metadata rather than through the well-known JWK Set endpoint or the\n   RECOMMENDED sb:issuer:&lt;base58-fingerprint&gt; form of [ACTA-RECEIPTS]\n   Section 2.1.1.  This profile thereby supersedes the upstream\n   RECOMMENDED kid format for Compliance Receipts; the upstream\n   RECOMMENDED format remains valid for non-Compliance receipts.\n\n   Implementations SHOULD use a Legal Entity Identifier (LEI) as defined\n   by [ISO17442] where one is allocated to the Deployer.  Examples and\n   test fixtures MUST use a placeholder whose four-character LOU prefix\n   (positions 1-4) is not allocated in the GLEIF Local Operating Unit\n   code list, whose positions 5-6 are the ISO 17442 reserved value 00,\n   and whose two trailing characters (positions 19-20) are the ISO 7064\n   mod 97-10 check digits computed over positions 1-18 (for example\n   00000000000000000098, where the all-zero 18-character base produces\n   the check digits 98 per the ISO 17442-1:2020 Annex A check-digit\n   algorithm, which converts any letters in positions 1-18 to digits\n   A=10 ... Z=35 before the mod 97-10 computation; for an all-zero base\n   the conversion is a no-op); implementations MUST NOT use a real\n   third-party LEI in documentation or test data.  Where no LEI is\n   allocated and the Deployer is a US entity, an Employer Identification\n   Number (EIN) issued by the United States Internal Revenue Service or\n   a Central Index Key (CIK) issued by the United States Securities and\n   Exchange Commission MAY be used, expressed as the bare numeric\n   string.  Decentralized Identifiers ([W3C-DID]) MAY be used otherwise.\n   Implementations MUST treat the value as opaque on verification;\n   identifier resolution is out of scope for this profile.\n\n   issuer_id values MUST be bare identifiers without a scheme prefix\n   where the scheme is unambiguous from the value&#x27;s syntactic form.  An\n   LEI is the 20-character alphanumeric string defined by [ISO17442] and\n   is self-identifying through its length and check-digit structure;\n   implementations MUST emit the bare 20-character LEI without a lei: or\n   other scheme prefix.  EINs and CIKs are likewise emitted as the bare\n   numeric string.  Decentralized Identifiers ([W3C-DID]) carry their\n   own scheme prefix (did:) as defined by the DID specification and that\n   prefix is intrinsic to the identifier syntax rather than an added\n   scheme tag.  The same kid-equals-issuer_id invariant requires\n   signature.kid to be the bare identifier in the same form.  The worked\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 11]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   example in Appendix &quot;Worked Example (Informative)&quot; uses the bare\n   20-character placeholder LEI 00000000000000000098; conformant cloud\n   emitters and SDK clients MUST match this form on the wire.\n\n5.1.4.  payload_digest (OPTIONAL upstream, REQUIRED in this profile)\n\n   REQUIRED for Compliance Receipts.  The value MUST follow the upstream\n   object form (hash, size, optional preview) defined in Section 2.2 of\n   [ACTA-RECEIPTS]; this profile does not redefine the wire shape.  The\n   associated payload that this digest covers MUST be retained for the\n   period mandated by the most restrictive applicable regime in Sections\n   5 and 6 of this document.  Implementations MUST NOT discard the\n   underlying payload while a receipt that references it is still within\n   its retention window.\n\n5.1.5.  action_ref (OPTIONAL upstream, REQUIRED in this profile)\n\n   REQUIRED for Compliance Receipts.  The value is a SHA-256 hash of the\n   canonical Action representation as defined in [ACTA-RECEIPTS].  This\n   profile uses action_ref as the primary join key for cross-engine\n   reconstruction during an audit.\n\n5.1.6.  sandbox_state (OPTIONAL upstream, REQUIRED for High-Risk in this\n        profile)\n\n   REQUIRED for receipts produced by High-Risk AI Systems under either\n   [EU-AI-ACT] or [COLORADO-AI-ACT].  Upstream defines sandbox_state as\n   an OS-level containment status and restricts the value to one of\n   enabled, disabled, or unavailable; this profile inherits that\n   enumeration unchanged.  A Deployer that operates a High-Risk AI\n   System and produces a stream of receipts in which sandbox_state is\n   consistently disabled SHOULD treat that stream as a finding under the\n   applicable risk-management documentation requirement (Article 9 of\n   [EU-AI-ACT] for the Provider&#x27;s risk management system, with which a\n   Deployer operating per Article 26(1) is required to be consistent;\n   Section 6-1-1703(2) of the Colorado Revised Statutes) and document\n   the rationale in the Audit Pack metadata.\n\n5.1.7.  iteration_id (OPTIONAL upstream, REQUIRED for multi-step in this\n        profile)\n\n   REQUIRED for multi-step agent workflows.  The value MUST be stable\n   across all receipts emitted within the same logical task or session\n   so that a regulator can reconstruct the full chain of Actions.\n   iteration_id is distinct from the upstream session_id field defined\n   in [ACTA-RECEIPTS] Section 3.1.1, which is an opaque MCP session\n   identifier.  A Compliance Receipt MAY carry both: session_id for MCP-\n   session correlation and iteration_id for logical-task correlation.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 12]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n5.2.  Decision Receipt Fields (type protectmcp:decision)\n\n   The decision field value MUST be allow, deny, rate_limit, or\n   observation.  Implementations using a different internal vocabulary\n   (e.g. permit for allow) MUST normalise on emission and on Audit Pack\n   export.  The observation value records that an Action was observed\n   and the receipt was signed without any policy evaluation having taken\n   place; it is the regulator-honest alternative to emitting allow when\n   no policy matched, and MUST NOT appear in a receipt of type\n   protectmcp:decision.  A producing system that has not evaluated a\n   policy for an Action MUST either refuse to issue a Compliance Receipt\n   for that Action or MUST emit the receipt with type\n   protectmcp:lifecycle and decision observation; in the latter case the\n   upstream policy_decision internal field, if present in the producing\n   system&#x27;s internal vocabulary, takes the literal value none, which the\n   emitter MUST map to observation on the wire.  Verifiers MUST reject a\n   Compliance Receipt that carries decision observation together with\n   type protectmcp:decision; conversely, a Compliance Receipt of type\n   protectmcp:lifecycle MAY carry decision observation in addition to\n   the other three vocabulary values.  The policy_digest requirement of\n   Section 5.2.2 applies to observation receipts in the form of a digest\n   of the producing system&#x27;s &quot;no policy matched&quot; sentinel policy\n   artefact, which the Deployer MUST retain alongside its other policy\n   artefacts for the applicable retention window.\n\n   The upstream tool_name field (REQUIRED in [ACTA-RECEIPTS]\n   Section 3.1.1) is REQUIRED for Compliance Receipts of type\n   protectmcp:decision.\n\n5.2.1.  reason (OPTIONAL upstream, REQUIRED for deny/rate_limit in this\n        profile)\n\n   REQUIRED for Compliance Receipts where decision is deny or\n   rate_limit.  The value MUST be a machine-readable reason code drawn\n   from a vocabulary documented in the Deployer&#x27;s Audit Pack metadata.\n\n5.2.2.  policy_digest (OPTIONAL upstream, REQUIRED in this profile)\n\n   REQUIRED for Compliance Receipts.  The value MUST be of the form\n   sha256:&lt;hex&gt; and MUST reference a policy artefact that the Deployer\n   retains for the applicable retention window.  Verifiers MUST reject\n   Compliance Receipts whose policy_digest does not resolve in the Audit\n   Pack.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 13]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n5.3.  Hash-Chain Linkage (OPTIONAL upstream, REQUIRED in this profile)\n\n   Upstream Commitment Mode introduces previousReceiptHash as part of an\n   optional extension.  This profile makes the linkage REQUIRED.\n   Implementations MUST emit a previousReceiptHash field, populated per\n   the digest-scope rule of Section 5.7 of [ACTA-RECEIPTS]: the\n   lowercase hex encoding of SHA-256 over the canonical signing-input\n   bytes of the immediately prior receipt emitted by the same issuer_id,\n   where the canonical signing-input bytes are the JCS-canonical\n   serialization ([RFC8785]) of the predecessor&#x27;s signed payload object\n   (the same bytes the predecessor&#x27;s cryptographic signature covers),\n   NOT the envelope object that additionally includes the signature or\n   anchors top-level keys.  The first receipt in a chain MUST set this\n   field to the all-zero SHA-256 value (this profile&#x27;s stipulation;\n   [ACTA-RECEIPTS] Section 5.7 specifies only the digest scope of\n   subsequent links).  JSON key is the literal previousReceiptHash\n   (camelCase, case-sensitive); snake_case aliases MUST NOT appear on\n   the wire.\n\n   Rationale for the payload-bytes (signing-input) digest scope rather\n   than the envelope-including-signature digest scope: the chain layer&#x27;s\n   purpose is to make after-the-fact alteration of the predecessor&#x27;s\n   signed content detectable, and the predecessor&#x27;s signed content is\n   exactly the bytes its signature covers (the canonical payload\n   object).  Digesting those bytes binds the chain to what A actually\n   attested to, is recomputable offline from the predecessor&#x27;s payload\n   alone, and matches Section 5.7 of [ACTA-RECEIPTS].  The chain does\n   not need to bind the predecessor&#x27;s signature value directly because\n   the predecessor&#x27;s signature is verified independently under\n   Section 9.1, and cross-agent envelope integrity (where binding the\n   peer&#x27;s signature value matters) is the role of counterparty_binding\n   per Section 5.6, which digests at the envelope-including-signature\n   scope precisely because the peer signature is the load-bearing\n   artefact in the cross-agent case.  Implementations that previously\n   digested the envelope-including-signature object MUST migrate to the\n   signing-input scope before emitting chained receipts under this\n   profile; verifiers MUST recompute under the signing-input scope when\n   checking previousReceiptHash.\n\n   Each issuer MUST maintain a single linear per-agent chain.  When one\n   agent identity emits receipts from multiple concurrent execution\n   paths (for example parallel tool calls dispatched within a single\n   agent loop, or fan-out work performed by a thread pool inside one\n   issuer), the issuer MUST serialize emission through a single\n   predecessor pointer at a time: each newly emitted receipt&#x27;s\n   previousReceiptHash MUST resolve to the SHA-256(JCS(receipt)) of the\n   immediately prior receipt emitted by that same issuer_id, taken in\n   emission order, regardless of which concurrent execution path\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 14]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   produced it.  Parallel sub-chains within one agent identity (for\n   example, a per-receipt chain_id discriminator that would partition\n   one issuer&#x27;s stream into multiple independently advancing chains) are\n   NOT defined by this profile.  An issuer that requires parallel sub-\n   chains MUST express each parallel path as a distinct agent identity,\n   with its own issuer_id value, its own signing key, and its own per-\n   agent chain rooted at the all-zero SHA-256 genesis value.  Rationale:\n   deterministic verification of the chain segment covering an audit\n   window, as required by the regime bindings of Sections 5 and 6 (in\n   particular Section 6.3.2, Section 7.5.1, and Section 7.6.1), depends\n   on a single linear total order over the receipts emitted under each\n   agent identity; a verifier reconstructing the chain from a regulator-\n   supplied issuer_id needs that ordering to be well-defined without\n   out-of-band metadata.\n\n5.4.  Anchoring (No Upstream Equivalent)\n\n   [ACTA-RECEIPTS] lists Sigstore Rekor in its Implementation Status\n   appendix as an OPTIONAL temporal anchor.  This profile imposes a\n   normative anchoring requirement.\n\n   Compliance Receipts MUST be anchored.  An anchor is an [RFC3161]\n   timestamp token covering the signed envelope, an [OPENTIMESTAMPS]\n   commitment covering the envelope, or both; implementations SHOULD\n   emit both forms.  For both anchor types, the bytes committed are SHA-\n   256(JCS(envelope_minus_anchors)), where envelope_minus_anchors is the\n   wire envelope object with the anchors top-level key removed prior to\n   canonicalization, leaving the two-key object {payload, signature}.\n   The anchors key MUST be removed from the object, not set to null or\n   to an empty array; these produce different JCS output and break\n   interoperability (mirroring the upstream Section 5.6 stripping rule).\n   The anchor thereby binds payload and signature without being self-\n   referential.  The anchor evidence MUST be retained alongside the\n   receipt for the applicable retention window.  Verifiers MUST reject\n   Compliance Receipts that lack at least one valid anchor.\n\n   An anchor MAY be attached after issuance if the receipt is persisted\n   with an unambiguous pending marker and the anchor lands within a\n   documented bound.  For [OPENTIMESTAMPS], this profile imposes a 7-day\n   deadline; this is a profile-imposed bound, not a property of the\n   OpenTimestamps protocol, whose calendar-to-block upgrade time depends\n   on the calendar operator&#x27;s publication interval.  [RFC3161] tokens\n   MUST be obtained synchronously.  A verifier MUST treat a pending\n   receipt as non-conformant once the bound elapses.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 15]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   The anchor MAY cover an aggregate of receipts (for example, a Merkle\n   root over a batch) rather than each receipt individually, provided\n   that the inclusion proof linking the receipt to the aggregate is\n   retained alongside the receipt and the aggregate anchor.\n\n   Where the anchor type is [RFC3161], the full TimeStampResp DER bytes\n   MUST be retained, sufficient for offline verification by a holder\n   with access to the TSA&#x27;s published public key.  Time-stamp tokens\n   carrying ESSCertIDv2 per [RFC5816] MUST be accepted by Compliance\n   Verifiers.  An rfc3161 anchor MAY be obtained from a Time-Stamping\n   Authority operated independently of the issuer (for example a public\n   RFC 3161 TSA under a distinct trust root) in addition to, or instead\n   of, an issuer-operated TSA; the independently operated TSA is the\n   genuinely independent witness referenced in Section 10.6, and is one\n   of the N witnesses of witness_policy rather than ever the sole\n   anchor.  Where the anchor type is [OPENTIMESTAMPS], the upgrade from\n   the initial calendar attestation to the Bitcoin block attestation\n   MUST be completed within the 7-day profile-imposed bound, and the\n   upgraded proof MUST be retained for the applicable retention window\n   per the second paragraph of this section.\n\n   Each entry in the top-level anchors array is an object with the\n   following members.\n\n   type:  REQUIRED string discriminator.  MUST be one of rfc3161 or\n      opentimestamps.\n\n   value:  REQUIRED on every anchor entry.  The anchor token bytes,\n      base64-encoded.  For rfc3161 the value is the base64 encoding of\n      the full TimeStampResp DER bytes (sufficient for offline\n      cryptographic re-verification by a holder with access to the TSA&#x27;s\n      published public key).  For opentimestamps the value is the base64\n      encoding of the OpenTimestamps proof blob (the .ots\n      serialization).  A verifier MUST cryptographically re-verify the\n      anchor against the signed envelope using these bytes per\n      Section 9.1; anchor entries served without value MUST NOT be\n      reported as anchor_valid_*=true.\n\n   status:  OPTIONAL informational string.  When present, MUST be one of\n      anchored (the anchor has reached its final attestation state: an\n      [RFC3161] token has been obtained, or an [OPENTIMESTAMPS]\n      commitment has upgraded to its Bitcoin block attestation), pending\n      (the anchor has been requested but the final attestation state has\n      not yet been reached, e.g. an OpenTimestamps commitment that has\n      been submitted to a calendar but has not yet upgraded to a Bitcoin\n      block within the 7-day bound of this section), or failed (the\n      anchor submission was attempted and did not produce a usable\n      attestation, e.g. a TSA returned an error response or an\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 16]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      OpenTimestamps calendar refused the commitment). status is\n      operational metadata; a verifier MUST NOT derive cryptographic\n      validity from status alone, and MUST always re-verify the value\n      bytes per Section 9.1.\n\n   anchor_block_hash:  OPTIONAL informational string.  The Bitcoin block\n      hash at which an [OPENTIMESTAMPS] commitment was anchored.\n      Present only on entries with type=opentimestamps and\n      status=anchored; absent on rfc3161 entries and on pending or\n      failed OpenTimestamps entries. anchor_block_hash is operational\n      metadata; a verifier MUST NOT derive cryptographic validity from\n      anchor_block_hash alone, and MUST always re-verify the value bytes\n      against the OpenTimestamps proof per Section 9.1.\n\n   An OPTIONAL envelope-level witness_policy member, a sibling of\n   payload, signature, and anchors, declares an N-of-M durable-anchoring\n   quorum over the anchors array. witness_policy is an object with two\n   members: required, a REQUIRED integer in the closed range [1, length\n   of witnesses]; and witnesses, a REQUIRED non-empty JSON array whose\n   values are a subset of the anchor type vocabulary {rfc3161,\n   opentimestamps}. The witnesses array MUST NOT contain duplicate\n   values and MUST NOT contain any value outside that vocabulary; in\n   particular a transparency-log pointer such as Rekor is NOT a witness\n   type and MUST be rejected if it appears in witnesses.  The policy\n   declares that the receipt&#x27;s durable anchoring is satisfied only when\n   at least required distinct witness types named in witnesses each hold\n   a verifiable inclusion proof, that is, an anchor entry of that type\n   whose value bytes re-verify against SHA-\n   256(JCS(envelope_minus_anchors)) per Section 9.1 and, for\n   opentimestamps, has upgraded to its Bitcoin block attestation within\n   the 7-day bound of this section.\n\n   A receipt reaches the quorum-met state (the reference implementation\n   reports this as witness_quorum_met) only when the count of distinct\n   witness types satisfying the preceding paragraph is greater than or\n   equal to required.  A Compliance Receipt MUST NOT assert that durable\n   anchoring has been achieved, and a producer MUST NOT set or report\n   witness_quorum_met, unless required witnesses each hold a real,\n   verifiable inclusion proof; an anchors entry with status=pending or\n   status=failed, or with absent or non-verifying value bytes, does NOT\n   count toward the quorum.  This is the same false-attestation\n   principle that governs the rest of this profile: a receipt MUST NOT\n   claim a cryptographic property it cannot prove from retained bytes,\n   and a verifier MUST recompute the quorum from the re-verified anchors\n   entries rather than trust any producer-asserted quorum flag.  The\n   reference cloud implementation enforces the quorum honesty rule at\n   signing time and publishes it as the\n   witness_policy_required_exceeds_confirmed guard in its /.well-known/\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 17]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   governance.json wire-vocabulary surface. witness_policy places no\n   constraint on a receipt that carries no such member; the baseline\n   single-anchor requirement of this section continues to apply to every\n   Compliance Receipt regardless of whether witness_policy is present.\n\n5.5.  Extension Fields\n\n   This profile registers extension fields across five groupings that\n   MAY appear in the signed payload object alongside the fields defined\n   by [ACTA-RECEIPTS]: (a) regulatory classification fields (risk_class,\n   incident_class) defined in this section; (b) the cross-agent\n   envelope-binding field counterparty_binding defined in Section 5.6;\n   (c) per-action freshness and integrity fields (result_digest,\n   expires_at, nonce, tool_fingerprint, config_manifest_digest,\n   cve_inventory_digest) and build-provenance fields (executable_hash,\n   sbom_digest, slsa_provenance_pointer, supply_chain_pointer) defined\n   in Section 5.7 and Section 5.8; (d) server-built enforcement-\n   attestation fields (authorized_under_mandate, controls_evaluated)\n   defined in Section 5.9; (e) self-declared threat-framework taxonomy\n   fields (mitre_techniques, mitre_atlas, owasp_llm_top10, nist_ai_rmf,\n   iso_42001, eu_ai_act_articles), the opaque caller-supplied\n   rfc3161_timestamp token, and the platform-set guard\n   framework_mappings_self_declared defined in Section 5.12; (f)\n   producer-asserted risk-acceptance fields (approver_id, initiator_id,\n   acceptance_reason, accepted_at, supersedes, sarif_digest,\n   finding_ref, approval_ref, risk_snapshot) defined in Section 5.10;\n   and (g) producer-asserted code-authorship fields (repo_ref,\n   commit_sha, base_sha, change_digest, change_ref, change_approval_ref,\n   change_class, authored_by) defined in Section 5.11.  All extension\n   fields appear inside the signed payload object and are therefore\n   covered by the upstream Section 5.6 signature scope.\n\n   risk_class:  A vocabulary term identifying the risk classification of\n      the Action under the Deployer&#x27;s risk management documentation.\n      The vocabulary MUST be referenced in the Audit Pack metadata.\n      Where the Deployer operates under [EU-AI-ACT], the documentation\n      is the Provider&#x27;s Article 9 risk management system as referenced\n      via the instructions for use under Article 26(1); where the\n      Deployer operates under [COLORADO-AI-ACT], the documentation is\n      the Section 6-1-1703(2) risk management policy and program.\n\n   incident_class:  A vocabulary term identifying the incident\n      classification of the Action under the applicable regime: an ICT-\n      related incident under [DORA], with classification criteria in\n      [REG-2024-1772] and the canonical reporting enumeration of Annex\n      II data glossary, field 3.23 (Type of the incident) of\n      [REG-2025-302] (verifiers MUST resolve the canonical values from\n      the regulation directly); a Cybersecurity Event under 23 NYCRR\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 18]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      500.1(f) (or, where the Section 500.17(a) reporting threshold is\n      met, a Cybersecurity Incident under 23 NYCRR 500.1(g)) for Covered\n      Entities of [NYDFS-500]; a Covered Cyber Incident under [CIRCIA]\n      once the final rule takes effect; or a security incident under 45\n      CFR 164.304 for Covered Entities of [HIPAA-SECURITY].\n      Implementations MAY refine the set, provided the flattened mapping\n      in the Audit Pack manifest (Section 8) projects each refinement to\n      the applicable canonical category for each in-scope regime.\n\n   risk_class MUST be encoded as a JSON string. incident_class MUST be\n   encoded as a JSON string drawn from the canonical vocabulary\n   referenced in the Audit Pack, OR as a JSON array of such strings to\n   preserve cross-regime classification (for example, a single Action\n   that is both a DORA ICT-related incident and a CIRCIA Covered Cyber\n   Incident, or both a NYDFS Cybersecurity Incident and a CIRCIA Covered\n   Cyber Incident).  Both fields are OPTIONAL at the syntactic level but\n   MAY be REQUIRED by the regime bindings in Sections 5 and 6 of this\n   document.\n\n   Implementations MAY define additional extension fields.  Such fields\n   MUST NOT collide with names defined by [ACTA-RECEIPTS] or by this\n   document.  Implementations defining extension fields SHOULD register\n   them in the registry described in Section 11.\n\n5.6.  Counterparty Binding\n\n   This section is normative. counterparty_binding is an in-payload\n   object an acknowledging agent (&quot;B&quot;) emits to carry a cryptographic\n   digest of the full signed envelope of an originating agent (&quot;A&quot;).  It\n   provides cross-agent byte-equality evidence when a shared\n   intermediary sits between two honest agents and the per-agent hash\n   chains of Section 5.3 validate independently regardless of whether\n   B&#x27;s observed bytes equal A&#x27;s signed bytes. action_ref is a\n   correlation anchor, not a cryptographic binding ([ACTA-RECEIPTS]\n   Section 2.2); counterparty_binding moves the evidence onto B&#x27;s own\n   COSE or JWS signature, which the verifier already trusts.\n\n5.6.1.  Wire Shape\n\n   The field MUST appear inside the signed payload object.  It MUST NOT\n   appear in unprotected COSE or JWS header parameters, or in\n   external_aad per [RFC9052] Section 4.3 when the receipt is used for\n   audit (external_aad is permissible only in transport-optimized modes\n   out of scope for Compliance Receipts).  For COSE-framed receipts the\n   field sits inside the COSE_Sign1 or COSE_Sign payload per [RFC9052]\n   Section 4.1; for JWS-framed receipts it is a top-level claim per\n   [RFC7515].\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 19]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   The field is an object with the following members.\n\n   envelope_hash:  REQUIRED string.  Base64-encoded SHA-256 digest\n      computed over A&#x27;s entire serialized signed envelope, including A&#x27;s\n      signature bytes.  The digest input is framing-specific:\n\n      *  JSON-framed (this profile&#x27;s default for receipts not\n         transported under COSE or JWS, and mandatory-to-implement for\n         any conformant Compliance Receipt implementation): the JCS-\n         canonical UTF-8 byte sequence of A&#x27;s signed envelope JSON\n         object per [RFC8785], where the envelope is the three-key\n         object {&quot;payload&quot;: &lt;signed payload object&gt;, &quot;signature&quot;:\n         &lt;signature object with alg, kid, sig members&gt;, &quot;anchors&quot;:\n         &lt;array of anchor objects, OPTIONAL&gt;}. The payload object\n         carries the signed fields A emitted (including type, issuer_id,\n         issued_at, action_ref, payload_digest, previousReceiptHash,\n         decision, and any extension fields under Section 5.5); the\n         signature object carries the algorithm identifier, key\n         identifier, and base64- or base64url-encoded signature bytes\n         exactly as A emitted them.  B MUST NOT re-canonicalize A&#x27;s\n         payload or strip the anchors array before computing the digest.\n\n      *  COSE-framed: the full COSE_Sign1 or COSE_Sign byte string per\n         [RFC8949] Section 4.2 (deterministic encoding).\n\n      *  JWS-framed: the full JWS Compact Serialization\n         (header.payload.signature) after payload canonicalization per\n         [RFC8785].\n\n      The digest algorithm is SHA-256 (mandatory-to-implement).  The\n      encoding MUST be standard base64 per [RFC4648] Section 4 on\n      emission, OR base64url per Section 5 where the surrounding\n      transport requires URL-safe encoding; verifiers MUST accept both\n      alphabets and MUST normalise to a single alphabet (typically\n      standard base64) before byte-comparing to a recomputed value.\n      Including A&#x27;s signature in the digest scope binds the signed-over\n      content of A&#x27;s receipt at the envelope level and prevents an\n      intermediary that re-signs A&#x27;s claims with a different key from\n      escaping detection.\n\n      The framing in which A&#x27;s envelope was emitted MUST be preserved\n      through B&#x27;s binding.  The value of envelope_hash is framing-\n      specific because JCS-canonical JSON (UTF-16 code-unit\n      lexicographic key ordering per [RFC8785]), COSE deterministic\n      encoding (length-then-byte map-key ordering per [RFC8949]\n      Section 4.2), and JWS Compact Serialization with JCS-canonical\n      payload (UTF-16 code-unit lexicographic ordering per [RFC8785])\n      produce different byte sequences from the same semantic payload-\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 20]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      and-signature, and the three framings therefore yield different\n      envelope_hash values for the same underlying receipt.  A\n      transcoding intermediary that re-frames A&#x27;s envelope (JSON to\n      COSE, COSE to JWS, or any other pairing) changes the digest input\n      and MUST be treated as a tampering event by the verifier;\n      verifiers MUST NOT reframe an envelope before recomputing\n      envelope_hash.\n\n      Future revisions MAY extend to additional digest algorithms drawn\n      from the [ACTA-RECEIPTS] digest algorithm registry;\n      implementations that require algorithm negotiation SHOULD carry\n      the algorithm identifier out of band in the Audit Pack manifest\n      rather than in the wire field.\n\n   receipt_ref:  REQUIRED opaque content-addressed locator the verifier\n      resolves through the Audit Pack or a Deployer-published index to\n      A&#x27;s full signed envelope.  The value is an opaque string from the\n      verifier&#x27;s perspective; producers MAY use any stable identifier\n      scheme (URI, content-addressed digest, opaque database id) so long\n      as the Audit Pack resolution layer returns the correct envelope\n      bytes.  Future profiles (for example, a SCITT-style inclusion-\n      proof profile under [ACTA-RECEIPTS] Section 4.2 extension\n      semantics) MAY layer on this field.\n\n   expect_ack_from:  OPTIONAL string.  The expected acknowledging-party\n      identifier, expressed as a kid or issuer_id value matching the\n      same bare-identifier form required by Section 5.1.3.  When\n      present, the field declares which acknowledging party A or the\n      producer expects to sign over this receipt&#x27;s bytes; a verifier\n      cross-checks the acknowledging receipt&#x27;s kid against the expected\n      identifier per Section 5.6.3.  Verifiers MUST NOT reject solely on\n      absence of an acknowledging receipt; absence is a liveness-loss\n      signal observable through Audit Pack metadata rather than a non-\n      conformance condition on the current receipt.\n\n   transport_label:  OPTIONAL string (mcp, bus, orchestrator, http).\n      Operational only; verifiers MUST NOT derive trust from this label.\n\n   &quot;counterparty_binding&quot;: {\n     &quot;envelope_hash&quot;: &quot;bDqg...5PE=&quot;,\n     &quot;receipt_ref&quot;: &quot;asqav-receipt://org/123/agent_A/seq/4811&quot;,\n     &quot;expect_ack_from&quot;: &quot;00000000000000000098&quot;,\n     &quot;transport_label&quot;: &quot;mcp&quot;\n   }\n\n   The COSE form follows the same member set under deterministic CBOR\n   map ordering per [RFC8949] Section 4.2.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 21]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n5.6.2.  Emitter Behaviour\n\n   B SHOULD emit counterparty_binding when any of the following hold:\n   A&#x27;s signing request flagged the action as requiring acknowledgment\n   (for example, by populating an expect_ack_from list); the Deployer&#x27;s\n   risk management documentation requires bilateral byte-binding; or B\n   is operating under the guidance of Section 10.11.  B MUST compute\n   envelope_hash over the exact byte stream it received and accepted,\n   not over a re-canonicalization at B; re-canonicalizing at B masks\n   intermediary tampering whenever the tampered bytes canonicalize to\n   the same payload object, which is the threat case this section\n   addresses.  Where one acknowledgment receipt confirms envelopes from\n   N originators, the field MAY be an array of objects; pairwise\n   bindings cannot prove all N originators emitted identical bytes (see\n   Section 10.10).\n\n5.6.3.  Verifier Behaviour\n\n   A Compliance Verifier processing a receipt carrying\n   counterparty_binding MUST, in addition to Section 9.1, resolve\n   receipt_ref through the Audit Pack or a Deployer-published index to\n   A&#x27;s full signed envelope, recompute the SHA-256 digest of that\n   envelope under the scope rule of Section 5.6.1, base64-encode the\n   result, and compare to envelope_hash.  A non-resolving receipt_ref or\n   a digest mismatch MUST cause the acknowledging receipt to be reported\n   non-conformant; liveness loss at A MUST NOT be silently treated as\n   success.  Where expect_ack_from is present, the verifier MUST\n   additionally check that the acknowledging receipt&#x27;s signature.kid\n   matches the declared identifier (under the bare-identifier form\n   required by Section 5.1.3); a mismatch MUST cause the acknowledging\n   receipt to be reported non-conformant, exactly as a digest mismatch\n   is.  The field is OPTIONAL to emit, but a declared expectation that\n   the acknowledger&#x27;s identity fails to satisfy is a failed binding, not\n   an informational flag.\n\n   The Deployer or Audit Pack producer MUST retain A&#x27;s signed envelope\n   for at least as long as any acknowledging receipt binding it remains\n   within retention under Sections 5 and 6.  For chains of three or more\n   agents, this profile defaults to pairwise bindings; multi-signer co-\n   presence under [RFC9052] Section 4.1 is OPTIONAL, and verifiers MUST\n   NOT treat a co-signed envelope as a substitute for a pairwise binding\n   chain.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 22]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n5.7.  Result-Bound and Freshness Extensions\n\n   This section is normative.  It defines six OPTIONAL extension fields\n   that may appear inside the signed payload object to bind the receipt\n   to the byte-equality of a downstream result, to bound the freshness\n   of a decision, to declare the tool and configuration that produced\n   the action, and to record the supply-chain Common Vulnerabilities and\n   Exposures (CVE) inventory in effect at signing time.  The fields are\n   independently OPTIONAL; an implementation MAY emit any subset.  All\n   six are covered by the upstream Section 5.6 signature scope under\n   [ACTA-RECEIPTS].\n\n   result_digest:  OPTIONAL object of the same shape as payload_digest\n      defined in Section 2.2 of [ACTA-RECEIPTS]: REQUIRED string hash\n      formatted sha256:&lt;64 lowercase hex chars&gt;, REQUIRED integer size\n      in bytes, OPTIONAL string preview.  The digest covers the\n      canonicalized bytes of the downstream Action&#x27;s result body\n      (response payload, tool output, model completion).  The field is\n      emitted on a follow-up protectmcp:observation:result_bound receipt\n      that references the originating protectmcp:decision via\n      action_ref; a verifier processing a result-bound observation MUST\n      treat a digest mismatch between result_digest and the verifier&#x27;s\n      local recomputation over retained result bytes as a non-\n      conformance condition.  Result bytes covered by result_digest are\n      subject to the same retention floor as the originating decision\n      receipt under Sections 5 and 6.\n\n   expires_at:  OPTIONAL ISO 8601 timestamp with explicit timezone,\n      encoded as a JSON string.  Declares the wall-clock time after\n      which the producing system considers the decision result stale and\n      not safe to replay.  The field provides an upper freshness bound\n      that is additive to the 300-second forward-skew bound on issued_at\n      of Section 5.1.2; expires_at bounds replay safety from above, the\n      forward-skew rule bounds emission honesty from above.  A verifier\n      MUST reject a downstream action that replays a decision whose\n      expires_at lies in the past relative to the replay&#x27;s wall clock;\n      verifiers MUST NOT reject the originating receipt itself solely\n      because expires_at has elapsed (the receipt remains valid as a\n      record of the decision at issued_at).\n\n   nonce:  OPTIONAL JSON string carrying a producer-generated value that\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 23]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      is unique across the producer&#x27;s emission stream for the lifetime\n      of the cryptographic key identified by kid.  The field SHOULD be\n      the lowercase hexadecimal encoding of 12 random bytes (24\n      hexadecimal characters).  Verifiers SHOULD reject a second receipt\n      that carries the same nonce under the same issuer_id as a replay\n      candidate; the rejection is informational where the bound action\n      is idempotent and load-bearing where the bound action is not.  The\n      field is OPTIONAL at the syntactic level but is a SHOULD-emit for\n      any producer whose downstream actions are not idempotent.\n\n   tool_fingerprint:  OPTIONAL JSON string of 32 lowercase hexadecimal\n      characters carrying the first 32 hexadecimal characters (128 bits)\n      of the SHA-256 digest over the JCS canonicalization ([RFC8785]) of\n      the JSON object {&quot;tool_name&quot;: &lt;tool name&gt;, &quot;schema&quot;: &lt;declared\n      input schema&gt;}, where schema is the JSON object form of the tool&#x27;s\n      declared input schema (an empty object when the tool declares\n      none).  The field binds a receipt to a specific tool identity; a\n      verifier or auditor reproducing the Action can detect tool drift\n      (the same tool name with a different declared schema) by comparing\n      fingerprints across receipts in the same chain, and a fingerprint\n      change under an unchanged tool name surfaces naming collisions and\n      registry shadowing.  The field is OPTIONAL and complementary to\n      action_ref: action_ref identifies the call, tool_fingerprint\n      identifies the callee.\n\n   config_manifest_digest:  OPTIONAL JSON string formatted sha256:&lt;64\n      lowercase hex chars&gt; over the canonical bytes of the producer&#x27;s\n      configuration manifest in effect at the time the Action was\n      signed.  The manifest content is operator-defined and SHOULD\n      include the producer&#x27;s policy bundle reference, model identifiers\n      and versions, prompt template digests, retrieval index\n      identifiers, and any other inputs whose change would constitute a\n      substantial modification of the producing system under Article 43\n      of [EU-AI-ACT] or under Section 6-1-1701 of [COLORADO-AI-ACT].\n      The field is OPTIONAL but, when emitted, SHOULD resolve through\n      the Audit Pack to retained manifest bytes for the duration of the\n      longest applicable retention floor in Sections 5 and 6.\n\n   cve_inventory_digest:  OPTIONAL JSON string formatted sha256:&lt;64\n      lowercase hex chars&gt; over the canonical bytes of the producer&#x27;s\n      CVE inventory at the time the Action was signed.  The inventory\n      content SHOULD list the CVE identifiers known to apply to the\n      producer&#x27;s executing image and its declared runtime dependencies,\n      plus the producer&#x27;s accepted-residual rationale per [EU-AI-ACT]\n      Article 15 robustness obligations or the equivalent obligations\n      under Sections 5 and 6.  The field binds a snapshot of the\n      producer&#x27;s known-vulnerability surface to the receipt; a regulator\n      examining the receipt can resolve the digest through the Audit\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 24]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      Pack to the canonical inventory bytes that were in effect when the\n      Action was signed, rather than relying on a later-time inventory\n      that may have been updated after the Action was performed.\n\n   Implementations emitting result_digest SHOULD use the dedicated\n   protectmcp:observation:result_bound type registered in Section 11.2\n   for the follow-up receipt that carries the bound digest.\n   Implementations MAY emit expires_at, nonce, tool_fingerprint,\n   config_manifest_digest, and cve_inventory_digest on any receipt type\n   defined by this profile; the fields are type-agnostic.\n\n5.8.  Build-Provenance Extensions\n\n   This section is normative.  It defines four OPTIONAL extension fields\n   that bind the receipt to the supply-chain provenance of the\n   executable that produced the Action.  The four fields form a layered\n   subsumption set: executable_hash binds the running binary,\n   sbom_digest binds the dependency manifest the binary was built from,\n   slsa_provenance_pointer resolves to the SLSA attestation envelope for\n   that build, and supply_chain_pointer resolves to a transparency-log\n   entry (in-toto, Sigstore, or Rekor) covering the build.  An\n   implementation MAY emit any subset.  All four are covered by the\n   upstream Section 5.6 signature scope under [ACTA-RECEIPTS].\n\n   executable_hash:  OPTIONAL JSON string formatted sha256:&lt;64 lowercase\n      hex chars&gt; over the canonical bytes of the executable that invoked\n      the Action.  For container-based producers the canonical bytes are\n      the immutable image manifest digest of the running image (the\n      value an OCI registry returns under the same name plus tag,\n      computed under the OCI Image Manifest Specification).  For non-\n      container executables the canonical bytes are the SHA-256 of the\n      on-disk binary file at the path the producer&#x27;s runtime resolved.\n      The field binds build-side provenance into the signed receipt: a\n      regulator examining the receipt can recover the exact executable\n      identity that produced the Action without trusting any side-\n      channel attestation.  A verifier MAY cross-check executable_hash\n      against the executable identity declared in the SLSA attestation\n      resolved through slsa_provenance_pointer; mismatch SHOULD be\n      reported as an axis flag rather than as non-conformance because\n      the two fields may identify the same artefact under different\n      addressing schemes.\n\n   sbom_digest:  OPTIONAL JSON string formatted sha256:&lt;64 lowercase hex\n      chars&gt; over the canonical bytes of the Software Bill of Materials\n      (SBOM) document covering the executing image.  The canonical form\n      MUST be either CycloneDX (any 1.x specification version, JSON\n      form, with the canonicalization rule defined by CycloneDX itself)\n      or SPDX (version 2.x or later, JSON form, with the\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 25]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      canonicalization rule defined by SPDX itself); the producer SHOULD\n      record the chosen format and version in the Audit Pack manifest\n      entry for the receipt so a verifier can recompute the digest.  The\n      field complements executable_hash: executable_hash identifies the\n      artefact, sbom_digest identifies the dependency closure of that\n      artefact.\n\n   slsa_provenance_pointer:  OPTIONAL JSON string carrying an https URL\n      that resolves to the Supply-chain Levels for Software Artifacts\n      (SLSA) provenance attestation envelope for the build that produced\n      the executable identified by executable_hash.  The pointer target\n      SHOULD be the SLSA Provenance v1.0 in-toto statement form;\n      producers MAY emit earlier SLSA versions where toolchain support\n      is incomplete, and verifiers SHOULD accept any SLSA version they\n      implement.  The field shifts the trust root for build-side\n      provenance off the producer&#x27;s self-attestation and onto the build\n      platform&#x27;s attestation; the verifier&#x27;s confidence in the resolved\n      attestation is bounded by the verifier&#x27;s trust in the build\n      platform&#x27;s signing root.\n\n   supply_chain_pointer:  OPTIONAL JSON string carrying an https URL\n      that resolves to a transparency-log entry covering the build that\n      produced the executable identified by executable_hash.  The\n      pointer target SHOULD be an in-toto attestation, a Sigstore entry,\n      or a Rekor entry, in that preference order where the producer can\n      choose; verifiers SHOULD accept any of the three.  The field\n      provides a transparency-log-backed audit path for the build,\n      independent of the SLSA attestation envelope referenced by\n      slsa_provenance_pointer; the two fields are complementary because\n      a transparency-log entry attests inclusion under a public log,\n      while a SLSA attestation attests build-platform output bytes.\n\n   The four fields are type-agnostic and MAY appear on any receipt type\n   defined by this profile.  Where a Deployer operates under a\n   regulatory regime that requires build-side traceability (Article 12\n   of [EU-AI-ACT] read together with Article 17 of [DORA]; the audit-\n   controls obligation of 45 CFR 164.312(b) of [HIPAA-SECURITY]; the\n   recordkeeping rule of [SEC-17A-4] read with [NYDFS-500] 23 NYCRR\n   500.6), the Deployer SHOULD emit at least executable_hash on every\n   protectmcp:decision receipt and SHOULD retain the SBOM, the SLSA\n   attestation, and the transparency-log entry through the longest\n   applicable retention floor in Sections 5 and 6.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 26]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n5.9.  Enforcement-Attestation Extensions\n\n   This section is normative.  It defines two OPTIONAL extension fields\n   that record, inside the signed payload object, which authorization\n   and enforcement controls the issuing platform genuinely evaluated\n   when it signed the receipt.  Both fields are server-built: they are\n   populated by the issuing platform at signing time, never carried in\n   the producer&#x27;s signing request, and a caller-supplied value for\n   either field MUST be dropped by the issuing platform before signing.\n   Both fields are covered by the upstream Section 5.6 signature scope\n   under [ACTA-RECEIPTS].  The design rule for both fields is omission-\n   over-false attestation: a control that did not run is represented by\n   the absence of its key, never by a present key asserting a result the\n   control did not produce.  The two fields each carry a false-\n   attestation guard that rejects a present-but-malformed attestation,\n   in the same spirit as the framework_mappings_self_declared guard of\n   Section 5.5 and the witness_policy quorum guard of Section 5.4.\n\n   authorized_under_mandate:  OPTIONAL object recording that the Action\n      was signed under a self-declared authorizing mandate.  The object\n      carries four members: mandate_id (REQUIRED string, the issuer-\n      scoped identifier of the mandate the Action was authorized under),\n      issuer_id (REQUIRED string, the identifier of the party that\n      issued the mandate, in the bare-identifier form required by\n      Section 5.1.3), scope_digest (REQUIRED string formatted sha256:&lt;64\n      lowercase hex chars&gt; over the canonical bytes of the mandate&#x27;s\n      authorized-action-types scope), and verified (REQUIRED boolean).\n      The trust semantics are deliberately narrow: verified=true asserts\n      self-declared issuer authority, the same trust level as\n      framework_mappings_self_declared of Section 5.5, and is NEVER an\n      issuing-platform attestation of verified third-party\n      authorization.  The mandate binding is self-declared by the\n      issuer, is evaluated against the issuing platform&#x27;s own clock at\n      signing time, and scopes the Action to a set of authorized action\n      types; this profile does NOT define a value cap, a counterparty\n      restriction, or any other constraint on the mandate, and a\n      verifier MUST NOT infer one from the presence of this field.  A\n      verifier resolves scope_digest by retrieving the mandate\n      identified by mandate_id through the Audit Pack or a Deployer-\n      published mandate index and recomputing the digest over the\n      canonical scope bytes; a mismatch MUST be reported as a non-\n      conformance condition.  The false-attestation guard for this\n      field, published as false_mandate_attestation_guard in the issuing\n      platform&#x27;s wire vocabulary, rejects an authorized_under_mandate\n      object that is present but does not carry all of mandate_id,\n      issuer_id, verified=true, and a well-formed scope_digest: a\n      present-but-malformed attestation is rejected at signing time\n      rather than signed and surfaced as truth.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 27]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   controls_evaluated:  OPTIONAL object enumerating the enforcement\n      controls that genuinely fired when the issuing platform signed the\n      Action, plus the allow result.  The member keys are drawn from a\n      closed set: emergency_halt, delegation_scope, quorum, mandate,\n      policy, content_scan, and result; an unknown key MUST be rejected.\n      Each control key is present ONLY when its control actually ran on\n      this sign; an absent key means the control never ran on this sign,\n      and a verifier MUST NOT infer from an absent key that the control\n      ran and passed silently.  The quorum member, when present, MUST\n      carry fired=true together with a 64-lowercase-hex attestation_hash\n      proving the quorum evaluation; the policy member, when present and\n      asserting a policy was evaluated, MUST carry matched_count greater\n      than or equal to 1.  The false-attestation guard for this field,\n      published as false_control_attestation_guard in the issuing\n      platform&#x27;s wire vocabulary, rejects a present-but-malformed\n      controls_evaluated object: an unknown control key, a quorum member\n      lacking fired=true plus a 64-hex attestation_hash, or a policy\n      member asserting evaluation without matched_count greater than or\n      equal to 1, is rejected at signing time.  Because the field is\n      server-built and a caller-supplied controls_evaluated is dropped\n      before signing, a verifier MAY treat the enumerated keys as the\n      issuing platform&#x27;s own record of which controls it ran.\n\n   Both fields are type-agnostic and MAY appear on any receipt type\n   defined by this profile, though they are most commonly emitted on\n   protectmcp:decision receipts where an authorization or enforcement\n   evaluation produced the recorded decision.  Neither field replaces\n   the policy-evaluation honesty rule that an issuing platform MUST NOT\n   assert a control ran when it did not (the design note carried under\n   Section 10): controls_evaluated records which controls ran, not that\n   any control blocked, and an absent control key is the conformant\n   representation of a control that did not run.\n\n5.10.  Risk-Acceptance Extensions\n\n   This section is normative.  It defines OPTIONAL extension fields that\n   appear inside the signed payload object of a receipt of type\n   protectmcp:lifecycle:risk_acceptance (registered in Section 11.2),\n   which records a producer&#x27;s decision to accept a known risk, security\n   finding, or policy exception.  A risk-acceptance receipt is a\n   lifecycle record, not a policy-evaluation outcome: it is emitted\n   through the no-policy lifecycle path of Section 5.2, carries decision\n   observation, and asserts that no policy was evaluated for the\n   acceptance.  The fields are covered by the upstream Section 5.6\n   signature scope under [ACTA-RECEIPTS], by the previousReceiptHash\n   chain link of Section 5.3, and by the anchors timestamp of\n   Section 5.4; taken together these prove only that the producer\n   asserted these values, key-authored them, and chained them at the\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 28]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   receipt&#x27;s issued_at.  The receipt does NOT make any accepted risk\n   safe, any snapshot value true, reproducible, or verified, or any\n   declared expiry enforced.  The scope-honesty labels in the field\n   definitions below are normative and mirror the labels published in\n   the issuing platform&#x27;s /.well-known/governance.json wire-vocabulary\n   surface.\n\n   approver_id:  REQUIRED JSON string carrying the producer-asserted\n      identity that authored the risk acceptance, in the bare-identifier\n      form of Section 5.1.3 (a bare kid or issuer_id).  The field is\n      bound into the signed bytes only: the issuing platform performs NO\n      authority check, NO authentication of the named identity, and NO\n      identity resolution; the only comparison it makes is the\n      compliance_mode string-equality refusal against initiator_id (the\n      risk_acceptance_self_approval_guard of the initiator_id entry\n      below).  A risk-acceptance receipt that omits approver_id MUST be\n      rejected at signing time by the false-attestation guard named in\n      Section 11.1.\n\n   initiator_id:  OPTIONAL JSON string carrying the producer-asserted\n      identity that requested the acceptance, in the same bare-\n      identifier form.  The field is bound into the signed bytes only.\n      The reference cloud implementation refuses at signing time, as the\n      risk_acceptance_self_approval_guard, a risk-acceptance receipt\n      signed under compliance_mode whose initiator_id string-equals\n      approver_id, because a receipt asserting an approval flow approved\n      by its own initiator is incoherent on its face.  The guard is a\n      string-incoherence check (case-sensitive exact match), NOT\n      identity resolution: it fires only when both fields are present,\n      an absent field never fires it, and any real segregation-of-duties\n      decision belongs to the Deployer&#x27;s enforcement layer, not to this\n      record format.\n\n   acceptance_reason:  REQUIRED JSON string carrying the free-text\n      producer rationale for accepting the risk.  The field proves that\n      the rationale existed and was key-authored at issued_at; it is\n      never parsed, scored, or validated by the issuing platform.  A\n      risk-acceptance receipt that omits acceptance_reason MUST be\n      rejected at signing time by the same false-attestation guard as\n      approver_id.\n\n   accepted_at:  OPTIONAL ISO 8601 timestamp with explicit timezone,\n      encoded as a JSON string, carrying the producer-asserted wall-\n      clock time at which the acceptance was authored.  This value is\n      self-declared by the producer; the only times the issuing platform\n      attests are issued_at (Section 5.1.2) and the anchors evidence\n      (Section 5.4).  The field is distinct from issued_at so that an\n      acceptance back-dated relative to emission is auditable.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 29]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   supersedes:  OPTIONAL JSON string carrying a producer-asserted\n      pointer to the prior risk-acceptance receipt this one replaces,\n      encoded either as an opaque receipt locator or as a sha256:&lt;64\n      lowercase hex chars&gt; digest.  The field proves that the\n      supersession claim existed at issued_at; resolution is the\n      verifier&#x27;s job, and the issuing platform NEVER invalidates the\n      prior receipt: the hash chain of Section 5.3 is immutable and\n      supersedes is a forward pointer only.\n\n   sarif_digest:  OPTIONAL JSON string formatted sha256:&lt;64 lowercase\n      hex chars&gt; over the producer-declared canonical bytes of the\n      static-analysis (SARIF) scan artifact the acceptance rested on.\n      The digest is a shape-only existence proof: it proves THAT the\n      named SARIF artifact existed unaltered at issued_at and nothing\n      more.  The issuing platform NEVER parses, fetches, re-runs, or\n      validates the scan; a verifier recomputes SHA-256 over the SARIF\n      bytes retained in the Audit Pack and treats a mismatch as a tamper\n      signal, in the same manner as config_manifest_digest of\n      Section 5.7.\n\n   finding_ref:  OPTIONAL JSON string carrying a producer-asserted\n      opaque pointer to the specific finding or rule identifier inside\n      the SARIF artifact (for example a ruleId plus a location).  The\n      field is free-text; it proves the reference existed at issued_at\n      and is never resolved or validated by the issuing platform.\n\n   approval_ref:  OPTIONAL JSON string carrying a producer-asserted\n      opaque correlation pointer to a human-in-the-loop approval\n      identifier or an external ticket.  The field is free-text; it\n      proves the correlation pointer existed at issued_at and is never\n      resolved or validated by the issuing platform.\n\n   risk_snapshot:  OPTIONAL object carrying a point-in-time snapshot of\n      THIRD-PARTY risk signals as the producer read them, with members:\n      snapshot_at (REQUIRED ISO 8601 timestamp with explicit timezone,\n      the producer-asserted read-time the snapshot is pinned to),\n      snapshot_source (REQUIRED free-text string naming where the\n      signals came from, for example a named EPSS feed, the CISA KEV\n      catalog, or an NVD CVSS record), epss (OPTIONAL string), cvss\n      (OPTIONAL string), cvss_vector (OPTIONAL string), kev_listed\n      (OPTIONAL boolean), and cve_ids (OPTIONAL JSON array of CVE-\n      identifier strings).  The object is a producer-asserted snapshot,\n      NOT a value the issuing platform computed, fetched, verified,\n      queried, or vouched for; it proves only that the producer asserted\n      these signals at snapshot_at, and is explicitly NOT reproducible\n      from any input the issuing platform holds.  A verifier MUST NOT\n      read any member as an issuing-platform-derived or verified score.\n      All numeric risk signals (epss, cvss) MUST be encoded as JSON\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 30]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      strings, not as JSON numbers, consistent with the IEEE-754 float\n      prohibition of Section 4; this string encoding is load-bearing for\n      the snapshot-not-score semantics.  Whenever any of epss, cvss,\n      cvss_vector, or kev_listed is populated, snapshot_source MUST be\n      present; a populated numeric or KEV signal without snapshot_source\n      MUST be rejected at signing time by the false-attestation guard\n      named in Section 11.1, so that a value can never be read as an\n      issuing-platform-derived score.\n\n   A risk-acceptance receipt MAY additionally carry the type-agnostic\n   expires_at field of Section 5.7 to declare the wall-clock time after\n   which the Deployer considers the acceptance stale, and the server-\n   built authorized_under_mandate field of Section 5.9.  Consistent with\n   Section 5.7, expires_at on a risk-acceptance receipt is declared, not\n   enforced: the issuing platform records the declared expiry but NEVER\n   auto-revokes an expired acceptance, and a verifier MUST NOT reject\n   the originating risk-acceptance receipt itself solely because\n   expires_at has elapsed.  The named identities (approver_id,\n   initiator_id) are bound fields; beyond the string-incoherence refusal\n   of the risk_acceptance_self_approval_guard, NO separation-of-duties\n   check is performed by this profile.\n\n5.11.  Code-Authorship Extensions\n\n   This section is normative.  It defines extension fields, two of them\n   REQUIRED on the type and the rest OPTIONAL, that appear inside the\n   signed payload object of a receipt of type\n   protectmcp:lifecycle:code_authorship (registered in Section 11.2),\n   which records a producer&#x27;s assertion that an agent-authored change to\n   a code repository existed at a point in time.  A code-authorship\n   receipt is a lifecycle record, not a policy-evaluation outcome: it is\n   emitted through the no-policy lifecycle path of Section 5.2, carries\n   decision observation, and asserts that no policy was evaluated for\n   the change.  The reference cloud implementation enforces the no-\n   policy rule at signing time as the\n   code_authorship_requires_no_policy_decision guard, signs the type\n   only on its compliance signing path (the\n   code_authorship_requires_compliance_mode guard), and rejects, as the\n   code_authorship_fields_require_code_authorship_receipt guard, a\n   receipt of any other type that carries the fields of this section.\n   The fields are covered by the upstream Section 5.6 signature scope\n   under [ACTA-RECEIPTS], by the previousReceiptHash chain link of\n   Section 5.3, and by the anchors timestamp of Section 5.4; taken\n   together these prove only that the producer asserted these values,\n   key-authored them, and chained them at the receipt&#x27;s issued_at.  The\n   receipt proves only that the change existed, was key-authored, and\n   was chained at time T.  It does NOT make the change correct, safe,\n   reviewed, or building: the issuing platform NEVER clones the\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 31]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   repository, never re-runs or re-diffs the change, never verifies that\n   the named code exists or compiles, and never verifies the producing\n   model.  The scope-honesty labels in the field definitions below are\n   normative and mirror the labels published in the issuing platform&#x27;s\n   /.well-known/governance.json wire-vocabulary surface.\n\n   repo_ref:  REQUIRED JSON string carrying a producer-asserted opaque\n      pointer to the repository the change was authored against (for\n      example a clone URL or an internal repository identifier).  The\n      field is free-text; it proves the reference existed at issued_at\n      and is never resolved, cloned, or validated by the issuing\n      platform.  A code-authorship receipt that omits repo_ref MUST be\n      rejected at signing time by the\n      code_authorship_missing_required_field guard named in\n      Section 11.1.\n\n   commit_sha:  REQUIRED JSON string carrying the producer-asserted\n      commit identifier of the authored change (for example a Git object\n      name).  The field is bound into the signed bytes only: the issuing\n      platform NEVER fetches the named commit, never verifies that it\n      exists, and never verifies its contents.  It proves only that the\n      producer asserted this commit identifier at issued_at.  A code-\n      authorship receipt that omits commit_sha MUST be rejected at\n      signing time by the same guard as repo_ref.\n\n   base_sha:  OPTIONAL JSON string carrying the producer-asserted base\n      commit identifier the change was authored on top of.  Like\n      commit_sha, the field is bound into the signed bytes only and is\n      NEVER fetched or verified by the issuing platform; it proves only\n      that the producer asserted this base at issued_at.\n\n   change_digest:  OPTIONAL JSON string formatted sha256:&lt;64 lowercase\n      hex chars&gt; over the producer-declared canonical bytes of the\n      change (for example a unified diff).  The digest is a shape-only\n      existence proof: it proves THAT the named change existed unaltered\n      at issued_at and nothing more.  The issuing platform NEVER\n      fetches, re-diffs, or re-computes the change; a verifier\n      recomputes SHA-256 over the change bytes retained in the Audit\n      Pack and treats a mismatch as a tamper signal, in the same manner\n      as sarif_digest of Section 5.10 and config_manifest_digest of\n      Section 5.7.  A change_digest value outside the sha256:&lt;64\n      lowercase hex chars&gt; wire form MUST be rejected at signing time by\n      the change_digest_not_sha256_wire_form guard.\n\n   change_ref:  OPTIONAL JSON string carrying a producer-asserted opaque\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 32]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      pointer to the change as a unit (for example a pull-request or\n      merge-request identifier).  The field is free-text; it proves the\n      reference existed at issued_at and is never resolved or validated\n      by the issuing platform.\n\n   change_approval_ref:  OPTIONAL JSON string carrying a producer-\n      asserted opaque correlation pointer to a human-in-the-loop\n      approval identifier or an external review ticket for the change.\n      The field is free-text; it proves the correlation pointer existed\n      at issued_at and is never resolved or validated by the issuing\n      platform, in the same manner as approval_ref of Section 5.10.\n\n   change_class:  OPTIONAL JSON string drawn from the closed vocabulary\n      read, write, delete, execute, or deploy, declaring the producer-\n      asserted class of the change.  The value is self-declared; the\n      issuing platform records it but does NOT verify that the change\n      matches the declared class.  A value outside the closed vocabulary\n      MUST be rejected at signing time, the field being constrained to\n      the closed vocabulary.\n\n   authored_by:  OPTIONAL object carrying a producer-asserted\n      description of the authoring agent, with members: agent_id\n      (OPTIONAL string identifying the authoring agent), model_id\n      (OPTIONAL string naming the model), model_version (OPTIONAL string\n      naming the model version), tool (OPTIONAL string naming the\n      authoring tool), and attestation_source (OPTIONAL string naming\n      where the authorship description came from).  The object is\n      producer-asserted, NOT a value the issuing platform computed,\n      verified, queried, or vouched for; it proves only that the\n      producer asserted these values at issued_at.  The issuing platform\n      NEVER verifies the named model.  Whenever any of model_id or\n      model_version is populated, attestation_source MUST be present; a\n      populated model field without attestation_source MUST be rejected\n      at signing time by the false-attestation guard named in\n      Section 11.1, so that a model claim can never be read as an\n      issuing-platform-verified attestation.\n\n   A code-authorship receipt MAY additionally carry the server-built\n   authorized_under_mandate field of Section 5.9 to record the self-\n   declared authorizing mandate the change was signed under; this\n   profile reuses that field for code-authorship authorization and does\n   not define a separate authorization field.  Consistent with\n   Section 5.9, authorized_under_mandate asserts self-declared issuer\n   authority only and is NEVER an issuing-platform attestation of\n   verified third-party authorization.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 33]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n5.12.  Threat-Framework Taxonomy Extensions\n\n   This section is normative.  It defines six OPTIONAL caller-supplied\n   taxonomy fields, one OPTIONAL caller-supplied opaque timestamp token,\n   and one platform-set false-attestation guard boolean, all of which\n   MAY appear inside the signed payload object.  The six taxonomy fields\n   record producer-asserted mappings of the Action into established\n   threat-and-control catalogues; they are self-declared and are NOT\n   verified by the issuing platform.  The guard boolean exists so that a\n   verifier can tell a self-declared classification apart from a\n   platform-verified one.  All eight fields are covered by the upstream\n   Section 5.6 signature scope under [ACTA-RECEIPTS], and an\n   implementation MAY emit any subset.\n\n   mitre_techniques:  OPTIONAL JSON array of MITRE ATT&amp;CK technique\n      identifiers (for example T1059, T1078) self-declared by the\n      producer.  The values are referenced by identifier from the MITRE\n      ATT&amp;CK enterprise matrix.  The field is not verifier-checked by\n      the issuing platform; when the array is populated the issuing\n      platform MUST set framework_mappings_self_declared to true.\n\n   mitre_atlas:  OPTIONAL JSON array of MITRE ATLAS identifiers (for\n      example AML.T0051) covering AI-system-specific adversary\n      techniques, self-declared by the producer and referenced by\n      identifier from the MITRE ATLAS catalogue.  When populated the\n      issuing platform MUST set framework_mappings_self_declared to\n      true.\n\n   owasp_llm_top10:  OPTIONAL JSON array of OWASP Top 10 for LLM\n      Applications identifiers (for example LLM01, LLM02), self-declared\n      by the producer and referenced by identifier from the OWASP Top 10\n      for LLM Applications publication.  When populated the issuing\n      platform MUST set framework_mappings_self_declared to true.\n\n   nist_ai_rmf:  OPTIONAL JSON array of NIST AI Risk Management\n      Framework function identifiers and subcategories (for example\n      GOVERN-1.1, MEASURE-2.7), self-declared by the producer and\n      referenced from [NIST-AI-RMF].  When populated the issuing\n      platform MUST set framework_mappings_self_declared to true.\n\n   iso_42001:  OPTIONAL JSON array of ISO/IEC 42001:2023 control\n      identifiers (for example A.6.2.6), self-declared by the producer\n      and referenced from ISO/IEC 42001:2023.  When populated the\n      issuing platform MUST set framework_mappings_self_declared to\n      true.\n\n   eu_ai_act_articles:  OPTIONAL JSON array of EU AI Act article\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 34]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      identifiers (for example Article-12, Article-15), self-declared by\n      the producer and referenced from [EU-AI-ACT].  When populated the\n      issuing platform MUST set framework_mappings_self_declared to\n      true.\n\n   rfc3161_timestamp:  OPTIONAL JSON string carrying a base64-encoded\n      [RFC3161] TimeStampResp (DER) supplied by the producer at signing\n      time and preserved verbatim on the receipt for offline TSA chain\n      verification independent of any platform-issued anchors.  The\n      payload entry is an opaque caller-supplied token, NOT the per-\n      receipt anchor produced by the platform under Section 5.4; the\n      base64 encoding is per [RFC4648].  This field does not flip\n      framework_mappings_self_declared.\n\n   framework_mappings_self_declared:  OPTIONAL JSON boolean false-\n      attestation guard set by the issuing platform.  The platform MUST\n      set it to true whenever any of mitre_techniques, mitre_atlas,\n      owasp_llm_top10, nist_ai_rmf, iso_42001, or eu_ai_act_articles is\n      populated.  A producer-supplied value of false alongside a\n      populated taxonomy field MUST be overridden by the issuing\n      platform, in the same spirit as the false-attestation guards of\n      Section 5.9 and the witness_policy quorum guard of Section 5.4.\n      The guard does not assert that the self-declared mappings are\n      correct; it asserts only that they are self-declared rather than\n      platform-verified, and a verifier MUST NOT treat a populated\n      taxonomy field as platform-verified.\n\n   The eight fields are type-agnostic and MAY appear on any receipt type\n   defined by this profile.\n\n6.  European Union Bindings\n\n6.1.  EU AI Act Article 12 Binding\n\n   Each subsection cites the operative phrase of Article 12 and binds it\n   to the receipt field that satisfies it.\n\n6.1.1.  Article 12(1), automatic recording of events\n\n   Article 12(1) requires High-Risk AI Systems to technically allow for\n   the automatic recording of events (logs) over the lifetime of the\n   system.  The signed-receipt format provides one mechanism that\n   satisfies that logging capability; alternative mechanisms remain\n   valid.  Where this profile is chosen, a Compliance Receipt SHOULD be\n   produced for every Action against an external resource, and a\n   configuration change that disables receipt generation SHOULD be\n   recorded as a protectmcp:lifecycle Compliance Receipt.\n   Implementations MAY emit at finer or coarser granularity so long as\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 35]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   the log set, taken together, satisfies Article 12(2)(a) through (c).\n\n6.1.2.  Article 12(2)(a), identifying situations that may result in the\n        high-risk AI system presenting a risk within the meaning of\n        Article 79(1) or in a substantial modification\n\n   The combination of type, decision, reason, and policy_digest MUST be\n   sufficient for an auditor to identify, by query alone, receipts that\n   correspond to risk situations enumerated in the Deployer&#x27;s risk\n   management documentation.  Where the Deployer classifies an Action as\n   risk-bearing, the receipt MUST carry a risk_class extension field.\n\n6.1.3.  Article 12(2)(b), facilitating the post-market monitoring\n        referred to in Article 72\n\n   The hash-chain linkage required by Section 5.3 satisfies post-market\n   monitoring traceability.  The chain head MUST be made available to\n   the Provider and to the competent authority on request.\n\n6.1.4.  Article 12(2)(c), monitoring the operation of high-risk AI\n        systems referred to in Article 26(5)\n\n   Any change to the policy artefact referenced by policy_digest MUST\n   produce a new digest.  A change in policy_digest between two\n   otherwise-comparable Actions may be examined by the Deployer or by a\n   regulator as a candidate substantial-modification event under Article\n   43, and MUST be retained at least as long as the longest receipt in\n   the chain that references either digest.\n\n6.1.5.  Retention\n\n   Article 12 itself sets no retention period; the operative deployer\n   floor is Article 26(6) (&quot;at least six months&quot;).  The parallel\n   provider floor in Article 19(1) sets the same six-month minimum on\n   Providers; this profile&#x27;s retention bindings are written from the\n   Deployer perspective, and a Provider that wishes to use Compliance\n   Receipts as its Article 19(1) record SHOULD adopt the Deployer floor\n   explicitly through a separate Provider-role binding (deferred to a\n   future revision).\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 36]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   EU AI Act Article 26(6) requires six months of logs (interpreted as\n   184 days when expressed as a day-count floor for hash-chain anchoring\n   intervals).  The normative requirement on Compliance Receipts is:\n   implementations MUST retain receipts until the later of (a) the day\n   six calendar months after the date of the Action, computed calendar-\n   arithmetically per [ISO8601-2] duration arithmetic, and (b) any\n   longer Union or national law floor.  The six-month period is read\n   calendar-month-wise (the receipt expiry day is the same day-of-month\n   six months later, with end-of-month rollover where the target month\n   is shorter), not as a fixed day count.\n\n   The 184-day figure (the maximum number of days in any rolling six-\n   calendar-month window, worst case Aug-Jan, 31+30+31+30+31+31) is\n   informative only; it expresses a safe day-count floor for hash-chain\n   anchoring intervals and Audit Pack export windows where calendar-\n   arithmetic is impractical at the producer layer.  A Deployer that\n   retains receipts strictly under the calendar-month rule above\n   satisfies Article 26(6); a Deployer that uses 184 days as an internal\n   day-count overestimate also satisfies it.  A 183-day day-count floor\n   is not endorsed by this profile: under a rolling six-calendar-month\n   window 1 August to 31 January spans 184 days and 183 days is one day\n   short.  Where the Deployer is also a Financial Entity, the sectoral\n   floor in Section 6.3.4 applies.\n\n6.2.  EU AI Act Article 26 Binding\n\n6.2.1.  Article 26(1), in accordance with the instructions for use\n\n   policy_digest MUST resolve through Section 8 to a retained artefact\n   (machine check).  The Deployer SHOULD demonstrate consistency with\n   the Provider&#x27;s instructions for use (process check).  Inability to\n   perform the machine check is presumed non-compliance.\n\n6.2.2.  Article 26(2), assign human oversight\n\n   For any Action whose decision is allow and which the Deployer&#x27;s risk\n   management documentation marks as requiring human oversight, the\n   Deployer MUST ensure that the receipt is either reviewed by a\n   designated natural person within the period required by national law,\n   or that a follow-on protectmcp:lifecycle Compliance Receipt records\n   the absence of such review with a reason code.  Both records MUST\n   themselves be Compliance Receipts.  This profile addresses the\n   trigger and record of oversight; the competence, training, authority,\n   and necessary support of the reviewer required by Article 26(2)\n   remain the Deployer&#x27;s separate responsibility.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 37]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n6.2.3.  Article 26(5), monitor the operation\n\n   A Deployer MUST be able to produce an Audit Pack covering any\n   contiguous time window since the High-Risk AI System became\n   operational.\n\n6.2.4.  Article 26(6), keep the logs for at least six months\n\n   Compliance Receipts under this binding MUST be retained for at least\n   the period stated in Section 6.1.5.  Where the Deployer is also a\n   Financial Entity, the longer sectoral floor in Section 6.3.4 applies.\n\n6.3.  DORA Article 17 Binding\n\n6.3.1.  Article 17(1), ICT-related incident management process\n\n   A Compliance Receipt produced inside a Financial Entity&#x27;s ICT\n   environment may serve as the canonical record of an Action that\n   triggered an ICT-related incident. action_ref MUST be carried into\n   the Financial Entity&#x27;s incident workflow as the primary correlation\n   key.\n\n6.3.2.  Article 17(2), record all ICT-related incidents and significant\n        cyber threats\n\n   The hash chain required by Section 5.3 supports the recording\n   obligation of Article 17(2) by making after-the-fact alteration of\n   recorded incidents detectable.  The Financial Entity MUST be able to\n   produce, on request, the chain segment covering the period of an\n   incident, together with the anchor evidence that fixes the chain to\n   wall-clock time.\n\n6.3.3.  Article 17(3)(b), establish procedures to identify, track, log,\n        categorise and classify ICT-related incidents\n\n   For Actions identified as part of an ICT-related incident, the\n   producing system MUST emit incident_class.  The classification\n   criteria are those set out in Article 18(1) of [DORA], with further\n   specification in [REG-2024-1772].  The canonical reporting\n   enumeration to which incident_class flattens is bound by Annex II\n   field 3.23 of [REG-2025-302] (see Section 5.5).  Implementations MUST\n   publish a flattened mapping in the Audit Pack manifest as required by\n   Section 5.5.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 38]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n6.3.4.  Retention\n\n   Article 17 of [DORA] does not itself set a uniform numeric retention\n   floor.  The five-year (1827-day) figure used by this profile derives\n   from sectoral instruments that overlap DORA-scoped Financial\n   Entities.  Investment firms keep records of all services, activities\n   and transactions under Article 16(6) of [MIFID2], with Article 72 and\n   Annex I of [REG-2017-565] fixing the form and content of those\n   records.  The explicit five-year retention period in [MIFID2] is set\n   by Article 16(7) for records of telephone conversations and\n   electronic communications, kept for a period of five years and, where\n   requested by the competent authority, for a period of up to seven\n   years.\n\n   Records of customer due diligence and of transactions under Article\n   40 of [AMLD] are kept for five years after the end of the business\n   relationship.  The AMLD record-keeping regime is superseded, in\n   respect of record retention, by Article 77 of [AMLR] from 10 July\n   2027, which preserves the five-year floor and adds a case-by-case\n   extension up to a further five years where the competent authority so\n   requires.  Implementations operating across the AMLD-to-AMLR\n   transition MUST satisfy whichever instrument is in force on the date\n   of the Action.\n\n   Compliance Receipts MUST be retained for the period required by\n   applicable Union or national law; where a sectoral floor applies,\n   retention MUST equal or exceed the longest applicable floor.  Absent\n   a more specific rule, this profile RECOMMENDS 1827 days from the date\n   of the Action (the worst-case rolling five-calendar-year window\n   contains two leap days, so 1827 days satisfies &quot;five years&quot;\n   regardless of the calendar years over which the window falls).\n   Anchor evidence MUST be retained for the same period.  Verification\n   keys whose lifetime expires within the retention window MUST have\n   their public components retained so that historical signatures remain\n   verifiable.\n\n7.  United States Bindings\n\n7.1.  NIST AI RMF Binding\n\n   [NIST-AI-RMF] is a voluntary framework.  Adoption of this profile, on\n   its own, does not establish conformity with the AI RMF; it provides a\n   tamper-evident receipt substrate that an AI RMF program can use as\n   evidence under the MEASURE function and as a structured input to the\n   GOVERN, MAP, and MANAGE functions.  [NIST-GENAI-PROFILE] applies the\n   AI RMF functions to generative AI; the profile bindings below apply\n   to generative and non-generative AI agent deployments alike unless\n   explicitly noted.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 39]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n7.1.1.  GOVERN function\n\n   The GOVERN function requires that organizations document AI policies\n   and procedures.  The combination of policy_digest and the Audit Pack\n   manifest provides a machine-readable binding between every Action and\n   the policy artefact in force at the time of the Action.  A change to\n   the policy artefact MUST produce a new policy_digest value (per\n   Section 5.2.2); the Audit Pack therefore records every policy change\n   in a tamper-evident manner.\n\n7.1.2.  MAP function\n\n   The MAP function requires that the context, capabilities, and risks\n   of an AI system be characterised.  The combination of type,\n   tool_name, action_ref, and iteration_id SHOULD be sufficient for an\n   auditor to reconstruct the operational context of any Action without\n   dereferencing the underlying payload.\n\n7.1.3.  MEASURE function\n\n   The MEASURE function requires that AI risks and impacts be analysed\n   and tracked over time.  The hash-chain linkage required by\n   Section 5.3 provides tamper-evident continuity of the receipt stream\n   over the AI system&#x27;s operational lifetime, satisfying the\n   traceability prerequisite of MEASURE.\n\n7.1.4.  MANAGE function\n\n   The MANAGE function requires that AI risks be prioritised and acted\n   upon based on projected impact.  The risk_class extension field\n   carries the Deployer&#x27;s risk classification of the Action; together\n   with decision, reason, and policy_digest, it supports prioritisation\n   and incident response without requiring the verifier to re-derive\n   risk from the underlying payload.\n\n7.2.  Colorado AI Act (SB 24-205) Binding\n\n   [COLORADO-AI-ACT] imposes deployer obligations effective June 30,\n   2026 (per Senate Bill 25B-004, which postponed the original February\n   1, 2026 effective date).  The Act regulates the deployment of High-\n   Risk AI Systems and the prevention of algorithmic discrimination.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 40]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n7.2.1.  Section 6-1-1703(2), risk management policy and program\n\n   Section 6-1-1703(2) requires deployers to implement a risk management\n   policy and program for the High-Risk AI System. policy_digest MUST\n   resolve through Section 8 to the deployer&#x27;s risk management policy\n   artefact in force at the time of the Action.  Where the Deployer\n   classifies an Action as risk-bearing under that policy, the receipt\n   MUST carry a risk_class extension field.\n\n7.2.2.  Section 6-1-1703(3), impact assessment\n\n   Section 6-1-1703(3) requires deployers to complete an impact\n   assessment annually and within 90 days after any intentional and\n   substantial modification of the High-Risk AI System.  The combination\n   of type, policy_digest, and previousReceiptHash MUST be sufficient\n   for an auditor to identify, by query alone, the receipts that span\n   the period covered by an impact assessment, including any policy\n   changes within that period.\n\n7.2.3.  Section 6-1-1703(7), notice of algorithmic discrimination\n\n   Where a Deployer determines that a High-Risk AI System has caused or\n   is reasonably likely to have caused algorithmic discrimination, the\n   producing system SHOULD record that determination as a\n   protectmcp:lifecycle Compliance Receipt naming the determination, the\n   affected receipts by action_ref, and the policy or risk-management\n   response with a reason code.\n\n7.3.  Texas Responsible AI Governance Act (HB 149) Binding\n\n   [TEXAS-TRAIGA] takes effect January 1, 2026.  The Act adopts an\n   intent-based liability framework for the development and deployment\n   of AI systems and provides a safe harbor at Section 552.105(e)(2)(D)\n   of the Texas Business and Commerce Code for organisations that\n   substantially comply with the most recent version of\n   [NIST-GENAI-PROFILE], or another nationally or internationally\n   recognized risk management framework for AI systems, and operate an\n   internal review process.\n\n7.3.1.  Safe-harbor evidentiary support\n\n   Where a Deployer relies on the safe-harbor provision of HB 149 by\n   substantially complying with [NIST-GENAI-PROFILE], the Audit Pack MAY\n   be presented as evidence of that compliance.  The bindings of\n   Section 7.1 apply, with the additional Generative AI Profile bindings\n   of [NIST-GENAI-PROFILE].\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 41]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n7.3.2.  Prohibited-use detection\n\n   Receipts whose decision is deny with a reason code drawn from a\n   vocabulary documenting the Act&#x27;s prohibited-use categories under\n   Section 552.052 of the Texas Business and Commerce Code added by HB\n   149 (incitement or encouragement of physical self-harm including\n   suicide, harm to another person, or engagement in criminal activity)\n   MUST be retained for the period stated in Section 7.4.2 or the longer\n   period required by Texas law, whichever is greater.\n\n7.4.  HIPAA Security Rule Binding (45 CFR Part 164, Subpart C)\n\n   [HIPAA-SECURITY] applies to Covered Entities (HIPAA) that handle\n   electronic protected health information.  The bindings below apply\n   only to receipts whose underlying Actions reference electronic\n   protected health information.\n\n7.4.1.  45 CFR 164.312(b), audit controls\n\n   45 CFR 164.312(b) requires implementation of &quot;hardware, software,\n   and/or procedural mechanisms that record and examine activity in\n   information systems that contain or use electronic protected health\n   information&quot;.  The combination of type, action_ref, tool_name, and\n   the hash-chain linkage required by Section 5.3 satisfies the\n   recording requirement; the verification rules of Section 9.1 satisfy\n   the examination requirement.\n\n7.4.2.  45 CFR 164.316(b)(2), six-year retention\n\n   45 CFR 164.316(b)(2) (and in particular the subparagraph\n   164.316(b)(2)(i)) requires that the documentation required by 45 CFR\n   164.316(b)(1) be retained &quot;for 6 years from the date of its creation\n   or the date when it last was in effect, whichever is later&quot;.  The\n   audit-log content produced under 45 CFR 164.312(b) is not itself\n   documentation required by 164.316(b)(1); the Security Rule does not\n   set an explicit retention floor for individual audit-log records.  By\n   analogy with the six-year floor that 164.316(b)(2) places on the\n   policies and procedures that govern audit-log generation, this\n   profile applies the same six-year floor to Compliance Receipts whose\n   underlying Actions reference electronic protected health information.\n\n   Records covered by the HIPAA Security Rule audit-trail retention MUST\n   be retained for six years from the date of creation or the date when\n   last in effect, whichever is later, per 45 CFR 164.316(b)(2).  This\n   profile expresses that floor as 2192 days from the later of (a) the\n   date of the Action and (b) the date the policy artefact referenced by\n   policy_digest ceased to be in effect: 2192 is the maximum number of\n   days in any rolling six-calendar-year window (worst case spans two\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 42]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   leap days, e.g. 2024-2030 contains February 29 of 2024 and 2028,\n   yielding 6*365+2 = 2192 days).  The six-year analogy floor is\n   grounded in 164.316(b)(2); a Covered Entity that retains receipts\n   strictly under 164.316(b)(2)(i) bound only to the policy artefact&#x27;s\n   creation-or-cessation date MAY do so when no longer audit-log floor\n   is established by separate Union, state, or sectoral law.\n   Verification keys whose lifetime expires within the retention window\n   MUST have their public components retained so that historical\n   signatures remain verifiable.\n\n7.5.  NYDFS Cybersecurity Regulation Binding (23 NYCRR Part 500)\n\n   [NYDFS-500] applies to Covered Entities (NYDFS) operating under New\n   York Banking, Insurance, or Financial Services Law. The bindings\n   below apply only to receipts produced by such Covered Entities.\n\n7.5.1.  23 NYCRR 500.6, audit trail\n\n   23 NYCRR 500.6(a) requires Covered Entities to securely maintain\n   systems that, to the extent applicable and based on its risk\n   assessment, (1) are designed to reconstruct material financial\n   transactions, and (2) include audit trails designed to detect and\n   respond to cybersecurity events that have a reasonable likelihood of\n   materially harming any material part of the normal operations of the\n   Covered Entity.  The hash chain required by Section 5.3 together with\n   the anchor evidence required by Section 5.4 satisfies the tamper-\n   evidence prerequisite of the audit-trail obligation.\n\n7.5.2.  23 NYCRR 500.17, notices to superintendent\n\n   23 NYCRR 500.17(a)(1) requires that &quot;Each covered entity shall notify\n   the superintendent electronically in the form set forth on the\n   department&#x27;s website as promptly as possible but in no event later\n   than 72 hours after determining that a cybersecurity incident has\n   occurred at the covered entity, its affiliates, or a third-party\n   service provider.&quot;  The reporting trigger is a Cybersecurity Incident\n   under 23 NYCRR 500.1(g), not any Cybersecurity Event under 500.1(f).\n   For Actions identified as part of such an Incident, the producing\n   system MUST emit incident_class with a value indicating Cybersecurity\n   Incident under 23 NYCRR 500.1(g), and the Covered Entity MUST be able\n   to produce, on request, the chain segment covering the period of the\n   Incident together with the anchor evidence that fixes the chain to\n   wall-clock time.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 43]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n7.5.3.  23 NYCRR 500.6 retention\n\n   23 NYCRR 500.6(b) requires that &quot;Each Covered Entity shall maintain\n   records required by this section for not fewer than five years.&quot;  The\n   five-year floor applies uniformly to records required by paragraph\n   (a)(1) (designed to reconstruct material financial transactions) and\n   to records required by paragraph (a)(2) (audit trails designed to\n   detect and respond to cybersecurity events that have a reasonable\n   likelihood of materially harming any material part of the normal\n   operations of the Covered Entity).  Compliance Receipts produced\n   under this binding MUST be retained for at least 1827 days from the\n   date of the Action (the worst-case rolling five-calendar-year window\n   contains two leap days).\n\n7.6.  SEC Broker-Dealer Recordkeeping Binding (17 CFR 240.17a-4)\n\n   [SEC-17A-4] applies to Broker-Dealers, Security-Based Swap Dealers,\n   and Major Security-Based Swap Participants.  The bindings below apply\n   only to receipts produced inside such entities.\n\n7.6.1.  17 CFR 240.17a-4(f), electronic recordkeeping system\n\n   The November 3, 2022 amendments to 17 CFR 240.17a-4 (compliance date\n   May 3, 2023) added an audit-trail alternative to the prior write-\n   once-read-many (WORM) electronic recordkeeping requirement.  The\n   audit-trail alternative requires that the electronic recordkeeping\n   system permit the recreation of an original record if it is modified\n   or deleted.  The hash-chain linkage required by Section 5.3 together\n   with the retention rule in Section 7.6.2 and the anchor evidence\n   required by Section 5.4 satisfies the audit-trail alternative when\n   the Compliance Receipt is the system-of-record for a regulated\n   record.\n\n7.6.2.  17 CFR 240.17a-4(a) and (b) retention\n\n   17 CFR 240.17a-4(a) requires preservation of certain records for not\n   less than 6 years, the first two years in an easily accessible place.\n   17 CFR 240.17a-4(b) requires preservation of a different list of\n   records for not less than three years, the first two years in an\n   easily accessible place.  Compliance Receipts that constitute or\n   support a record listed in 17 CFR 240.17a-4(a) MUST be retained for\n   at least 2192 days from the date of the Action, applying the same\n   six-year worst-case methodology as Section 7.4.2; receipts that\n   constitute or support a record listed only in 17 CFR 240.17a-4(b)\n   MUST be retained for at least 1096 days from the date of the Action\n   (the worst-case rolling three-calendar-year window contains one leap\n   day).  Where both apply, the longer period applies.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 44]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n7.7.  CIRCIA Binding (Cyber Incident Reporting for Critical\n      Infrastructure Act of 2022)\n\n   [CIRCIA] requires Covered Entities (CIRCIA) to report Covered Cyber\n   Incidents to the Cybersecurity and Infrastructure Security Agency\n   within 72 hours of reasonable belief that the incident has occurred,\n   and to report ransom payments within 24 hours.  The reporting\n   obligations take effect upon publication of the final rule.  Pending\n   publication, the bindings below apply on a voluntary basis.\n\n7.7.1.  Covered Cyber Incident reporting support\n\n   For Actions identified as part of a Covered Cyber Incident, the\n   producing system MUST emit incident_class with a value indicating\n   Covered Cyber Incident under [CIRCIA].  The Covered Entity MUST be\n   able to produce, on request, the chain segment covering the period of\n   the incident together with the anchor evidence that fixes the chain\n   to wall-clock time.\n\n7.7.2.  Records related to a Covered Cyber Incident report\n\n   Section 2242(a)(4) of the Homeland Security Act of 2002, as enacted\n   by [CIRCIA] and codified at 6 U.S.C. 681b(a)(4), requires Covered\n   Entities to preserve data relevant to a Covered Cyber Incident or\n   ransom payment in accordance with procedures established in the final\n   rule.  CISA&#x27;s notice of proposed rulemaking at 89 FR 23644 (April 4,\n   2024), proposed Section 226.13(c), proposes a preservation period of\n   not less than two years measured from the submission of the most\n   recently required CIRCIA report (or the date that submission would\n   have been required absent a preservation exception under proposed\n   Section 226.4(a)); this profile uses that proposed floor pending\n   publication of the final rule.\n\n   Records covered by CIRCIA preservation MUST be retained for two years\n   from the submission of the most recently required CIRCIA report under\n   6 U.S.C. 681b(c)(2).  Compliance Receipts that are referenced in a\n   CIRCIA report or that the Covered Entity reasonably anticipates will\n   be so referenced MUST be retained for the longer of (a) the period\n   established by the final rule and (b) two years from the submission\n   of the most recently required CIRCIA report (or the date that\n   submission would have been required absent a preservation exception),\n   per proposed Section 226.13(c) of the CIRCIA NPRM at 89 FR 23644\n   (April 4, 2024).  Covered Entities MUST NOT measure the retention\n   floor from the date of the underlying Action; an Action detected and\n   reported months later carries a preservation window that runs forward\n   from the report submission date.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 45]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n8.  Audit Pack Composition\n\n   This section is informative.  It describes the contents of an Audit\n   Pack as introduced in Section 2.\n\n   An Audit Pack contains the following items.\n\n   *  The set of Compliance Receipts covered by the requested time\n      window, in the canonical envelope form defined by [ACTA-RECEIPTS].\n\n   *  The chain commitments that link the receipts: for each receipt,\n      the value of previousReceiptHash and the recomputed digest of the\n      predecessor envelope.\n\n   *  The anchor evidence: [RFC3161] tokens, OpenTimestamps proofs, or\n      both.  Each anchor item MUST be associated, by hash, with the\n      receipt or aggregate it covers.\n\n   *  The trust anchor metadata that identifies the Deployer or other\n      regulated entity associated with each issuer_id value.\n\n   *  The verification key material for every kid value present, in a\n      form that does not require online retrieval.\n\n   *  Vocabularies referenced by reason, risk_class, incident_class, and\n      extension fields, embedded as JSON arrays with a stable\n      identifier.  The Audit Pack MUST expose a digest-resolution\n      facility that, given a policy_digest, returns the retained\n      artefact.\n\n   *  A regime mapping document that names which receipts the producer\n      asserts as evidence under any of the regimes addressed by Sections\n      5 and 6 of this document (EU AI Act Article 12, EU AI Act Article\n      26, DORA Article 17, NIST AI RMF, Colorado AI Act, Texas\n      Responsible AI Governance Act, NYDFS Part 500, HIPAA Security\n      Rule, SEC Rule 17a-4, CIRCIA).\n\n   *  The chain heads valid at the start and end of the time window,\n      signed by the Deployer or other regulated entity.\n\n   An Audit Pack MUST itself be signed per the [ACTA-RECEIPTS] algorithm\n   registry.  The manifest MUST include bundle_digest, bundle_signature,\n   bundle_public_key, and algorithm_registry_version.\n\n   The following manifest-level fields SHOULD appear on an Audit Pack\n   bundle when the underlying receipt stream exposes the corresponding\n   semantics.  Each is informative and does not alter the wire shape of\n   individual receipts.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 46]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   regime_mapping_disclaimer:  String emitted on bundles whose per-\n      receipt regime predicates derive from mapping logic the original\n      producing system did not sign.  The value identifies the producer\n      of the mapping, the document version under which it was computed,\n      and a disclaimer that the regime-satisfaction flags are advisory\n      and remain subject to the verifier&#x27;s own check against Sections 5\n      and 6.\n\n   stale_pending:  Boolean flag set per bundle entry whose anchor\n      evidence is still pending after the bound of Section 5.4 (7 days\n      for OpenTimestamps; synchronous for RFC 3161).  When true, the\n      bundled receipt is non-conformant per Section 5.4, and a\n      Compliance Verifier consumes the flag to drive anchor_valid_*\n      false in its per-axis report (see Section 9.3).  A verify endpoint\n      over the same bundle SHOULD surface stale_pending in its response.\n\n9.  Verifier Behaviour\n\n   A verifier conformant to this profile is referred to as a Compliance\n   Verifier.\n\n9.1.  Mandatory Checks\n\n   A Compliance Verifier MUST perform all of the following checks before\n   treating a receipt as a Compliance Receipt.\n\n   *  Verify the signature using the algorithm declared in\n      signature.alg, in accordance with [ACTA-RECEIPTS].\n\n   *  Resolve the verification key through one of the key-distribution\n      mechanisms described in Section 4.3 of [ACTA-RECEIPTS] (well-known\n      JWK Set or out-of-band distribution), or through Audit Pack trust-\n      anchor metadata.  The verifier MUST NOT trust a verification key\n      embedded in the receipt envelope.\n\n   *  Verify that all fields marked REQUIRED by Section 5 are present\n      and well-formed.\n\n   *  Verify the hash-chain linkage by recomputing SHA-256 over the\n      canonical signing-input bytes of the immediately preceding receipt\n      (the JCS-canonical serialization of the predecessor&#x27;s signed\n      payload object, per Section 5.3) and comparing the lowercase hex\n      encoding to previousReceiptHash.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 47]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  Verify at least one anchor: an [RFC3161] token, an\n      [OPENTIMESTAMPS] commitment, or both.  The anchor MUST cover the\n      signed envelope as it appears in the receipt.  The verifier MUST\n      cryptographically re-verify the anchor against the signed\n      envelope; presence of anchor metadata without a successful\n      cryptographic check MUST NOT yield &quot;valid&quot;.\n\n   *  Verify the future-skew bound on issued_at per Section 5.1.2.  Past\n      skew MUST NOT cause non-conformance when the receipt is within\n      retention.\n\n   *  Verify that policy_digest resolves through Section 8.  A digest\n      computed over a nonced or otherwise mixed-input form (for example,\n      SHA-256(nonce || JCS(artefact))) MUST NOT be treated as\n      policy_digest; the digest scope is the canonical form of the\n      artefact alone.  The verifier MUST recompute SHA-256 over the\n      canonical form of the resolved artefact as documented in the Audit\n      Pack manifest, and compare; for JSON artefacts the canonical form\n      is JCS per [RFC8785].\n\n   A receipt that fails any of these checks MUST be reported as non-\n   conformant.\n\n9.2.  Optional Checks\n\n   A Compliance Verifier MAY additionally perform any of the following.\n\n   *  Cross-check the issuer_id against an external registry (LEI, EIN,\n      CIK, NPI, GLEIF, or a Deployer-published list).\n\n   *  Resolve the policy artefact referenced by policy_digest and\n      compare it to a Provider-supplied or Deployer-supplied reference\n      policy.\n\n   *  Recompute the chain head and compare it to a Deployer-published\n      value.\n\n   *  Validate incident_class (each element if encoded as an array) and\n      risk_class extension values against the vocabularies referenced in\n      the Audit Pack.\n\n9.3.  Reporting\n\n   A Compliance Verifier SHOULD produce a structured per-receipt report\n   that names the regime bindings the receipt satisfies and the outcome\n   of the per-axis checks the verifier performed.  The following fields\n   SHOULD be emitted; the axes are independent and consumers MUST NOT\n   collapse them into a single boolean before display.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 48]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   regimes_satisfied:  Array of short stable regime identifiers drawn\n      from the regimes listed in Section 8 (for example eu_ai_act, dora,\n      nist_ai_rmf, colorado_ai, texas_traiga, hipaa_security, nydfs_500,\n      sec_17a4a, sec_17a4b, circia).  The set is open-ended; consumers\n      MUST treat unknown identifiers as informational.  Where this field\n      is inherited from a producer-side mapping in the bundle, the\n      bundle-level regime_mapping_disclaimer of Section 8 applies.\n\n   anchor_valid_ots:  Boolean. true when an [OPENTIMESTAMPS] anchor is\n      present, has upgraded to the Bitcoin block attestation within the\n      7-day bound of Section 5.4, and re-verifies cryptographically\n      against the signed envelope; otherwise false (including the case\n      where the only present anchor is RFC 3161).\n\n   anchor_valid_rfc3161:  Boolean. true when an [RFC3161] token is\n      present, carries an ESSCertIDv2 per [RFC5816] where required, and\n      re-verifies cryptographically against the signed envelope;\n      otherwise false.\n\n   policy_digest_resolved:  Boolean. true when policy_digest resolved to\n      a retained artefact whose JCS-canonical SHA-256 matches the\n      receipt value, per Section 9.1; false on absence, resolution\n      failure, or digest mismatch.\n\n   duplicate_emission_candidate:  Boolean. true when at least one other\n      receipt sharing action_ref and issuer_id has been observed in the\n      same Audit Pack or in a verifier-maintained index; otherwise\n      false.  The axis is informational; this profile does not require\n      verifiers to maintain a cross-receipt index.  An absent index MUST\n      report false rather than omit the axis, so consumers learn &quot;no\n      duplicate&quot; from the value and learn &quot;axis unknown&quot; only from the\n      verifier&#x27;s documented capability set.\n\n   A receipt may carry anchor_valid_ots=true and\n   anchor_valid_rfc3161=false (or vice versa) and still satisfy the\n   mandatory anchor check of Section 5.4, which requires only one valid\n   anchor.  Where a receipt carries counterparty_binding per\n   Section 5.6, the verifier SHOULD additionally emit the outcome of the\n   check of Section 5.6.3; this profile reserves a stable field\n   identifier for that axis pending implementation experience.\n\n10.  Security Considerations\n\n   This profile inherits all of the security considerations of\n   [ACTA-RECEIPTS].  The following considerations are specific to the\n   compliance binding.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 49]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n10.1.  Tamper Resistance\n\n   The hash-chain linkage required by Section 5.3 provides tamper-\n   evidence at the chain level.  An adversary who removes a receipt from\n   the middle of the chain MUST recompute and re-sign every subsequent\n   envelope.  The anchor evidence required by Section 5.4 binds segments\n   of the chain to wall-clock time, raising the cost of a re-signing\n   attack.\n\n   Implementations SHOULD anchor at intervals no longer than 24 hours.\n   Implementations operating under DORA Article 17, 23 NYCRR 500.17, or\n   [CIRCIA] SHOULD anchor at intervals no longer than one hour, given\n   the four-hour initial-notice deadline (with 72-hour intermediate-\n   report and one-month final-report bounds) per DORA Article 17 and the\n   RTS in [REG-2025-301], the 72-hour notification clock under 23 NYCRR\n   500.17, and the 72-hour CIRCIA covered-cyber-incident reporting\n   deadline that will apply once the CIRCIA final rule takes effect.\n\n   A deployment that uses only the signature, without chain linkage and\n   anchoring, can be rolled back by an insider with control of the\n   signing key for the period between the deletion and the next anchor.\n   The MUST clauses of Section 5.3 and Section 5.4 close that window.\n\n10.2.  Chain Availability Under Single-Linear Per-Agent Serialization\n\n   This section is informative.  The single-linear per-agent chain\n   requirement of Section 5.3 serializes receipt emission for a given\n   issuer_id through a single predecessor pointer.  A denial-of-service\n   against the predecessor pointer (database row lock contention,\n   network partition between the emitter and the predecessor store, slow\n   IO, or an adversary deliberately holding the chain-tail lock)\n   therefore bounds the per-agent emission throughput, because every new\n   receipt MUST resolve the digest of the immediately prior receipt\n   before it can be linked.  A partial-write failure between\n   predecessor-pointer commit and signature commit can additionally\n   produce chain-head ambiguity if not handled defensively.\n\n   Issuers SHOULD use a bounded predecessor-lookup timeout (operator-\n   tuned, typically on the order of seconds rather than tens of seconds)\n   and SHOULD emit a structured audit event with type\n   protectmcp:lifecycle and a stable reason code (RECOMMENDED:\n   chain_emission_blocked) when the timeout fires, rather than silently\n   dropping the receipt or stalling caller threads.  Issuers SHOULD\n   additionally document a chain-head recovery procedure for crashed\n   emitters: on restart, the issuer re-reads the predecessor row,\n   verifies that no orphan signature exists for the next sequence\n   position, and resumes emission.  Operators that require parallel per-\n   issuer throughput beyond what a single linear chain sustains MUST use\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 50]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   distinct issuer_id values per parallel path, with separate signing\n   keys and chains rooted at the all-zero genesis value, per the rule in\n   Section 5.3.\n\n   The threat profile here is availability, not confidentiality or\n   integrity: a successful chain-availability attack delays or drops\n   emission, but it cannot tamper with already-emitted receipts (those\n   are protected by Section 10.1) and it cannot forge receipts (those\n   are protected by Section 10.3).  The chain_emission_blocked lifecycle\n   receipt is itself a Compliance Receipt and therefore links into the\n   chain once emission resumes, so the gap is detectable rather than\n   silent.\n\n10.3.  Key Compromise\n\n   A Compliance Receipt is only as trustworthy as the key that signed\n   it.  On suspected compromise of an issuer key, the Deployer MUST\n   publish a revocation notice that names the key, the time of suspected\n   compromise, and the chain head at that time.  Receipts signed by the\n   compromised key after the named time MUST NOT be treated as\n   Compliance Receipts.\n\n   Verifiers MUST consult revocation metadata supplied with the Audit\n   Pack and MUST reject Compliance Receipts whose signing key was\n   revoked at or before issued_at.  Where the Deployer publishes its\n   verification keys through a well-known JWK Set endpoint, a revoked\n   key remains published and its entry carries a revoked_at timestamp,\n   so that a verifier can pass a receipt issued before that instant and\n   fail one issued at or after it.\n\n10.4.  Retention and Long-Term Verifiability\n\n   The longest retention floor in this profile is 2192 days (six\n   calendar years), set by Section 7.4 and Section 7.6; the EU side has\n   a parallel five-year (1827-day) floor under Section 6.3.  Both exceed\n   the typical operational crypto-period of a signing key under\n   recommended key-management practice.  Implementations SHOULD use ML-\n   DSA-65 from the [ACTA-RECEIPTS] algorithm registry ([FIPS204]) for\n   receipts expected to be verified after the cryptographic lifetime of\n   classical signature schemes ends.  Implementations MUST retain public\n   key material for the entire retention window.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 51]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n10.5.  Privacy\n\n   [ACTA-RECEIPTS] prohibits the inclusion of raw prompts, tool\n   arguments, and credentials in the signed payload.  This profile\n   extends that prohibition to the extension fields defined in this\n   document.  The risk_class and incident_class values MUST be drawn\n   from controlled vocabularies and MUST NOT carry free-text personal\n   data.\n\n   Where the underlying Action references a data subject, the\n   payload_digest field MUST cover the data; the data itself MUST be\n   held in a separate store that respects the data subject&#x27;s rights\n   under applicable law (including but not limited to the General Data\n   Protection Regulation for EU data subjects, the California Consumer\n   Privacy Act and Virginia Consumer Data Protection Act for the\n   corresponding US states, and the HIPAA Privacy Rule where electronic\n   protected health information is involved).  A request for erasure\n   that is granted under applicable data protection law MUST be\n   reflected by deletion of the referenced payload, not by deletion of\n   the receipt; the receipt remains as evidence that an Action occurred\n   and was governed by a named policy at a named time.\n\n10.6.  Anchor Trust\n\n   The trust assumptions of an anchor depend on the anchor type.\n   [RFC3161] timestamp tokens depend on the trust placed in the named\n   Time Stamping Authority.  OpenTimestamps commitments depend on the\n   inclusion of the commitment in a public Bitcoin block.  A Compliance\n   Verifier SHOULD treat the simultaneous presence of both anchor types\n   as stronger evidence than the presence of only one.\n\n10.7.  Replay\n\n   A Compliance Receipt is bound to a single Action via action_ref.\n   Replay of a Compliance Receipt against a different Action is\n   detectable by action_ref mismatch.  The 300-second issued_at skew\n   bound stated in Section 5.1.2 limits the window in which a freshly-\n   replayed receipt can be presented as recent.\n\n   Where the verifier supports it, two receipts sharing action_ref and\n   issuer_id SHOULD be flagged as a candidate duplicate-emission event\n   for human review.  This profile does not require verifiers to\n   maintain a cross-receipt index; deployers needing duplicate-emission\n   detection should arrange it at the Audit Pack production layer.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 52]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n10.8.  Cross-Regime Conflict\n\n   Where the same Action is in scope of more than one regime addressed\n   by this document, the producing system MUST satisfy the union of the\n   applicable requirements.  Where a SHOULD clause in one regime\n   conflicts with a MUST clause in another, the MUST clause prevails.\n   Where two MUST clauses conflict, the producing system MUST refuse to\n   issue the receipt and MUST log the refusal as a protectmcp:lifecycle\n   Compliance Receipt.\n\n10.9.  Algorithm Agility\n\n   This profile inherits its algorithm registry from [ACTA-RECEIPTS].\n   Implementations MUST treat the verification of a historical receipt\n   according to the algorithm registry that was in force at issued_at,\n   not the registry in force at the time of verification, provided that\n   the signing key was not revoked.\n\n10.10.  Issuer-Misrepresentation Residual\n\n   Per-agent hash chains under Section 5.3 detect tampering inside a\n   single issuer&#x27;s stream but not the cross-agent attack in which a\n   compromised intermediary silently swaps payload bytes between two\n   honest agents.  Both per-agent chains validate; action_ref is a\n   correlation anchor, not a cryptographic binding ([ACTA-RECEIPTS]\n   Section 2.2).  Without a cross-agent binding primitive, a regulator\n   obtains no cryptographic answer to &quot;did the acknowledging agent\n   acknowledge the bytes the originating agent actually sent&quot;.  This\n   profile defines counterparty_binding (Section 5.6) as the partial\n   mitigation; the following residuals remain.\n\n   *  Endpoint collusion.  If both signing keys are compromised by the\n      same attacker, the attacker produces a coordinated forgery; no\n      signature scheme defends against this case.\n\n   *  Intermediary holds the originating agent&#x27;s key.  In hosted-agent\n      deployments where the intermediary possesses the originating\n      agent&#x27;s private key, it can sign anything as either party.  Remote\n      attestation of key origin is the appropriate countermeasure and is\n      out of scope here.\n\n   *  Originator offline at verification time.  Section 5.6.3 requires\n      the originating envelope to be retrievable; if unpublished,\n      offline, or rate-limited, the binding becomes unverifiable\n      (liveness loss, observable as failure).\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 53]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  Fan-out witness gap.  When an originator broadcasts to N\n      acknowledgers, each emits an independent pairwise binding; none\n      witnesses any other.  Append-only log profiles (future SCITT-style\n      transparency) are deferred to a later revision.\n\n   *  Key rotation orphan.  If the originating agent rotates keys after\n      emission but before an acknowledger binds it, the storage\n      obligation of Section 5.6.3 still requires the old envelope to\n      remain retrievable; if retention discipline fails, the binding\n      orphans.\n\n   *  Privacy of envelope hashes. envelope_hash is computed over the\n      full signed bytes including A&#x27;s signature; an observer of B&#x27;s\n      receipt learns a stable identifier for A&#x27;s exact action and\n      therefore can correlate B&#x27;s behaviour across receipts even when\n      A&#x27;s payload is otherwise confidential.  Where this correlation is\n      unacceptable, a commitment scheme (for example, HMAC over the\n      envelope with a per-counterparty key disclosed only to the\n      verifier) is appropriate; this profile does not specify one.\n\n   *  Real-time prevention. counterparty_binding is detective, not\n      preventive: B has already accepted the bytes by the time the\n      binding is signed.  Verifiers detect tampering only at audit time;\n      the in-flight bytes were not blocked.  Where prevention is\n      required, transport-level integrity per Section 10.11 is the\n      appropriate primitive in addition to (not instead of) this\n      profile.\n\n   *  Payload-content semantics.  The binding proves byte equality, not\n      semantic equality.  An intermediary that re-encodes A&#x27;s bytes into\n      a different but JCS-equivalent canonical form is detected (the\n      SHA-256 differs); an intermediary that swaps A&#x27;s bytes for\n      entirely different bytes that B&#x27;s policy happens to interpret as\n      semantically equivalent is detected too.  But an intermediary that\n      swaps A&#x27;s bytes for an A-signed REPLAY of a prior valid envelope\n      from A is not detected by this binding alone; replay protection\n      requires that the verifier also check action_ref and\n      previousReceiptHash uniqueness within the chain segment.\n\n10.11.  Cross-Agent Integrity Trust Boundary\n\n   This section is informative.  It records operator guidance for cases\n   where channel-level protection is the only available defence and\n   counterparty_binding per Section 5.6 has not yet been adopted by both\n   endpoints.  For channels between named principals, implementers\n   SHOULD secure the channel using mutually authenticated TLS 1.3 per\n   [RFC8446]; MAY use the tls-exporter channel binding per [RFC9266]\n   derived via [RFC5705] where higher channel uniqueness is required;\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 54]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   and MAY layer HTTP Message Signatures per [RFC9421] where\n   intermediaries perform legitimate transformations.\n\n   Operators MUST NOT interpret transport-layer security alone as\n   evidence of cross-agent byte equality.  Only counterparty_binding\n   produces application-layer, signed, replay-after-the-fact evidence\n   answering that question.  Topologies where the intermediary\n   terminates TLS (CDN edges, MCP servers, message buses, orchestrators)\n   defeat transport-layer integrity against the threat case of\n   Section 10.10; in those topologies counterparty_binding is the only\n   defence this profile offers, and the absence of channel-binding\n   evidence in the Audit Pack SHOULD be documented as a known residual.\n\n10.12.  Compromised Intermediary Between Two Honest Endpoints\n\n   This section is informative.  Where an Action travels from a sending\n   agent A to a receiving agent B through one or more intermediary\n   processes M, and where M is compromised in such a way that M presents\n   byte sequence X to A and a different byte sequence X&#x27; to B, neither\n   A&#x27;s nor B&#x27;s cryptographic signature detects the divergence in\n   isolation: each endpoint signs the bytes it observed, and each\n   endpoint&#x27;s per-agent hash chain per Section 5.3 remains internally\n   valid.  Absent the counterparty_binding primitive this profile\n   introduces, the only available cross-agent primitive is action_ref as\n   a SHA-256 join key per Section 5.1.5; both A&#x27;s chain and B&#x27;s chain\n   remain valid in isolation, and divergence is only recoverable through\n   a regulator-driven post-hoc comparison of the two chains.\n\n   counterparty_binding introduced in Section 5.6 closes the case where\n   M silently swaps bytes between two honest endpoints A and B.  An\n   acknowledging receipt under this binding is REQUIRED to carry an\n   envelope_hash computed over the exact byte stream B received (SHA-\n   256(A&#x27;s envelope) under the digest-scope rule of Section 5.6.1).  A\n   verifier resolves receipt_ref to A&#x27;s stored envelope, recomputes the\n   digest, and compares; a mismatch indicates that the bytes B signed\n   are not the bytes A signed, and the acknowledging receipt MUST be\n   reported non-conformant per Section 5.6.3.  The binding is detective\n   rather than preventive: it does not stop M from performing the swap\n   in flight, but it produces signed, replay-after-the-fact evidence\n   that the swap occurred.\n\n   The following residuals remain and are not closed by\n   counterparty_binding alone.  The list is intentionally honest about\n   the audit-time, not sign-time, nature of the detective evidence: a\n   verifier resolves receipt_ref to A&#x27;s retained envelope and recomputes\n   the digest at audit time, so any residual reasoning that depends on\n   &quot;A is not in the loop at sign time&quot; is rhetorical, not load-bearing.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 55]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  Collusion of M and B.  If M and B are jointly compromised, M swaps\n      the bytes in flight and B issues an acknowledging receipt carrying\n      an envelope_hash computed over the altered bytes that B signs as\n      if they were A&#x27;s.  Under counterparty_binding the audit-time\n      verifier resolves receipt_ref to A&#x27;s retained envelope and\n      recomputes the digest, so the binding is reported non-conformant\n      when A&#x27;s storage is honest and reachable; M+B collusion alone does\n      NOT silently succeed.  M+B collusion silently succeeds only when\n      the collusion ALSO extends to corrupting A&#x27;s retained envelope,\n      suppressing A&#x27;s chain segment, or making A&#x27;s storage unreachable\n      to the auditor; that is, the true residual is M+B+(A&#x27;s-storage\n      compromise or unavailability).  Operator mitigation: anchor A&#x27;s\n      chain on independent witnesses (combined [RFC3161] +\n      [OPENTIMESTAMPS] anchors per Section 5.4, and OPTIONAL deployer-\n      operated transparency logs) so that A&#x27;s anchored chain-segment\n      digests are independently recoverable from public evidence;\n      regulator-side comparison of A&#x27;s anchored chain against B&#x27;s stored\n      chain detects the divergence even when A&#x27;s local storage is\n      impeached.\n\n   *  Collusion of M and A.  If M and A are jointly compromised, A signs\n      a fabricated envelope at M&#x27;s direction and M relays it to B; B\n      verifies M&#x27;s relay normally, B&#x27;s counterparty_binding correctly\n      digests the bytes A signed, A&#x27;s per-agent chain validates, and B&#x27;s\n      per-agent chain validates.  Every cryptographic invariant in this\n      profile holds because the binding correctly attests that the bytes\n      B received were the bytes A signed; the fraud is in A&#x27;s intent,\n      not in any byte mismatch.  This residual is fundamentally outside\n      the receipt model&#x27;s threat surface: no application-layer\n      cryptographic primitive in this profile distinguishes a fraudulent\n      A-signed envelope from an honest A-signed envelope when M is also\n      colluding to corroborate plausibility (relay logs, timestamping,\n      message ordering).  Operator mitigation: separation of duties\n      between issuer (A) and intermediary (M) so that the same operator\n      cannot control both signing keys and relay logs; anchor evidence\n      on independent witnesses under different trust roots so that an\n      attacker controlling A and M still cannot retroactively coordinate\n      anchor inclusion across uncolluding timestamping authorities; out-\n      of-band attestation by the regulator or auditor of A&#x27;s operational\n      context (provenance, code signing, runtime attestation) where the\n      policy regime authorises it.\n\n   *  Compromise of B itself.  A B that has been compromised (private\n      key extraction, supply-chain compromise, or insider operation) can\n      sign any envelope_hash the attacker chooses; counterparty_binding\n      proves only that the signing key acknowledged some bytes, not that\n      those bytes match what an honest B would have observed.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 56]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  Loss of A&#x27;s stored envelope. counterparty_binding requires the\n      verifier to resolve receipt_ref to A&#x27;s full signed envelope; if\n      A&#x27;s chain segment is unavailable (retention discipline failure,\n      key rotation orphan, deliberate withholding), the binding becomes\n      unverifiable and the receipt is reported non-conformant on\n      liveness grounds rather than on byte-equality grounds.  An\n      adversary who can arrange A-envelope unavailability and then re-\n      emit colluding bytes can degrade the binding from a byte-equality\n      check to a liveness-loss flag.\n\n   Operators concerned about these residuals in the absence of single-\n   point cryptographic defence SHOULD:\n\n   *  Anchor receipts to multiple independent witnesses.  Where both\n      [RFC3161] and [OPENTIMESTAMPS] anchors are present per\n      Section 5.4, a coordinated M-B collusion attack must also induce\n      both timestamping authorities to anchor the colluding bytes within\n      the operator&#x27;s anchor interval, raising the conjunction-cost of\n      the attack.  Operators MAY add further anchors (e.g. a Deployer-\n      operated transparency log or a witness service) without changing\n      the wire format defined here.\n\n   *  Use side-by-side chain comparison under regulator subpoena.  The\n      audit-trail alternative semantics established for SEC 17a-4\n      recordkeeping (see Section 7.6.1) and the post-market surveillance\n      regime of EU AI Act Articles 12 and 26 (see Section 6.1 and\n      Section 6.2) authorise the regulator to compel both A&#x27;s and B&#x27;s\n      Audit Packs and to reconstruct the relay by joining on action_ref\n      per Section 5.1.5. counterparty_binding reduces the regulator&#x27;s\n      workload from &quot;compare both chains and detect divergence&quot; to\n      &quot;verify B&#x27;s bound digest against A&#x27;s stored envelope&quot;; the\n      underlying subpoena-and-compare workflow remains the regulator&#x27;s\n      ultimate authority and remains operative when the binding is\n      unverifiable.\n\n   *  Document M&#x27;s relay logs out-of-band.  Where the intermediary M is\n      identifiable (a named MCP server, message bus, orchestrator, or\n      relay), the operator SHOULD require M to produce signed relay logs\n      covering the time window of the Action and SHOULD submit those\n      logs to the same Audit Pack production layer as A&#x27;s and B&#x27;s\n      chains.  Out-of-band relay logs do not require a wire-format\n      change in this profile; they are operational evidence that\n      complements counterparty_binding rather than replacing it.\n\n   The worst-case latency to detection for an M-only compromise (not M-B\n   collusion) is bounded by the anchor interval recommended in\n   Section 10.1: 24 hours by default, one hour for Deployers operating\n   under [DORA] Article 17, 23 NYCRR 500.17, or [CIRCIA].  After the\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 57]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   next anchor commits, the divergence between A&#x27;s anchored chain\n   segment and the digest carried in B&#x27;s counterparty_binding is\n   permanently recoverable from the anchored evidence alone, without\n   trust in M.\n\n11.  IANA Considerations\n\n   This document requests two new IANA registries to support stable,\n   machine-checkable extensions to the Compliance Receipt format.\n\n11.1.  Compliance Receipt Extension Fields Registry\n\n   IANA is requested to create a new registry titled &quot;Compliance Receipt\n   Extension Fields&quot; under a new &quot;Compliance Receipts&quot; registry group.\n\n   This registry covers both signed-payload fields and envelope-level\n   fields (siblings of payload and signature); each entry&#x27;s Description\n   identifies which.\n\n   Each entry contains:\n\n   *  Field Name: a JSON object key, lowercase ASCII letters, digits,\n      and underscore.\n\n   *  Description: a one-line summary of the field&#x27;s purpose.\n\n   *  Reference: the document that defines the field&#x27;s semantics.\n\n   *  Vocabulary: a URL or registry pointer for the controlled\n      vocabulary that field values are drawn from, or &quot;free-form&quot; if\n      none.\n\n   The registration policy is Specification Required, per [RFC8126].\n   The Designated Expert(s) SHOULD verify that the field name does not\n   collide with any field defined by [ACTA-RECEIPTS], that the Reference\n   is a stable, dereferenceable specification, and that the Vocabulary\n   is documented sufficiently for an independent verifier to validate\n   values.\n\n   Initial registry contents (each entry labelled with Scope to\n   disambiguate signed-payload fields from envelope-level fields per the\n   registry description above):\n\n   *  risk_class - Scope: signed-payload - Risk classification term\n      under the Deployer&#x27;s risk management documentation - This document\n      - Vocabulary referenced in Audit Pack metadata.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 58]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  incident_class - Scope: signed-payload - Incident classification\n      term spanning DORA Article 18(1) (with further specification in\n      [REG-2024-1772] and the canonical reporting enumeration of Annex\n      II field 3.23 of [REG-2025-302]), 23 NYCRR 500.1 Cybersecurity\n      Event/Incident, [CIRCIA] Covered Cyber Incident, and HIPAA\n      security incident under 45 CFR 164.304 - This document - Audit\n      Pack metadata.\n\n   *  counterparty_binding - Scope: signed-payload - Signed-payload\n      object carrying a base64-encoded SHA-256 digest (envelope_hash) of\n      a peer agent&#x27;s full signed envelope including signature bytes, a\n      resolvable opaque locator (receipt_ref), an OPTIONAL expected-\n      acknowledger identifier (expect_ack_from), and an OPTIONAL\n      operational transport_label; see Section 5.6 for the full member\n      set and the digest-scope rule - This document - Member vocabulary\n      defined in Section 5.6.1; digest algorithm is SHA-256 per\n      [ACTA-RECEIPTS] with base64 encoding per [RFC4648].\n\n   *  result_digest - Scope: signed-payload - Object of the upstream\n      payload_digest shape (hash, size, OPTIONAL preview) carrying a\n      SHA-256 digest of the downstream Action&#x27;s result body; defined in\n      Section 5.7 - This document - Digest algorithm is SHA-256 with hex\n      encoding under the sha256:&lt;64 hex&gt; form.\n\n   *  expires_at - Scope: signed-payload - ISO 8601 timestamp with\n      explicit timezone declaring the wall-clock time after which the\n      decision result is stale and not safe to replay; defined in\n      Section 5.7 - This document - Free-form ISO 8601 string.\n\n   *  nonce - Scope: signed-payload - Producer-generated string unique\n      across the producer&#x27;s emission stream for the lifetime of kid;\n      defined in Section 5.7 - This document - Lowercase hexadecimal\n      encoding of 12 random bytes (24 hexadecimal characters).\n\n   *  tool_fingerprint - Scope: signed-payload - JSON string of 32\n      lowercase hex characters carrying the truncated (first 128 bits)\n      SHA-256 digest of the JCS-canonical ([RFC8785]) serialization of\n      the JSON object {&quot;tool_name&quot;: &lt;tool name&gt;, &quot;schema&quot;: &lt;declared\n      input schema&gt;}; defined in Section 5.7 - This document - Digest\n      algorithm is SHA-256 over [RFC8785] canonical bytes, truncated to\n      its first 32 hexadecimal characters.\n\n   *  config_manifest_digest - Scope: signed-payload - JSON string\n      formatted sha256:&lt;64 hex&gt; over the canonical bytes of the\n      producer&#x27;s configuration manifest in effect at signing time;\n      defined in Section 5.7 - This document - Manifest content is\n      operator-defined; canonicalization rule is operator-declared in\n      the Audit Pack manifest entry.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 59]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  cve_inventory_digest - Scope: signed-payload - JSON string\n      formatted sha256:&lt;64 hex&gt; over the canonical bytes of the\n      producer&#x27;s CVE inventory at signing time; defined in Section 5.7 -\n      This document - Inventory content lists CVE identifiers per the\n      producer&#x27;s accepted-residual rationale.\n\n   *  executable_hash - Scope: signed-payload - JSON string formatted\n      sha256:&lt;64 hex&gt; over the canonical bytes of the executable that\n      invoked the Action (OCI image manifest digest for container\n      producers, on-disk SHA-256 for non-container executables); defined\n      in Section 5.8 - This document - Digest algorithm is SHA-256.\n\n   *  sbom_digest - Scope: signed-payload - JSON string formatted\n      sha256:&lt;64 hex&gt; over the canonical bytes of the CycloneDX or SPDX\n      SBOM document covering the executing image; defined in Section 5.8\n      - This document - SBOM format and version declared in the Audit\n      Pack manifest entry.\n\n   *  slsa_provenance_pointer - Scope: signed-payload - JSON string\n      carrying an https URL resolving to the SLSA provenance attestation\n      envelope for the build of the executable identified by\n      executable_hash; defined in Section 5.8 - This document - Target\n      SHOULD be SLSA Provenance v1.0 in-toto statement form.\n\n   *  supply_chain_pointer - Scope: signed-payload - JSON string\n      carrying an https URL resolving to a transparency-log entry (in-\n      toto, Sigstore, or Rekor) covering the build of the executable\n      identified by executable_hash; defined in Section 5.8 - This\n      document - Verifier acceptance is SHOULD across the three log\n      formats.\n\n   *  anchors - Scope: envelope-level - Envelope-level array of\n      timestamp / transparency-log anchors covering the signed envelope;\n      entries carry a REQUIRED type discriminator (rfc3161 or\n      opentimestamps) and a REQUIRED value field, plus OPTIONAL\n      informational members status (anchored / pending / failed) and\n      anchor_block_hash (string Bitcoin block hash for upgraded\n      OpenTimestamps entries); full schema is defined in Section 5.4 -\n      This document - Anchor type vocabulary: rfc3161 per [RFC3161],\n      opentimestamps per [OPENTIMESTAMPS].\n\n   *  witness_policy - Scope: envelope-level - Envelope-level object\n      declaring an N-of-M durable-anchoring quorum over the anchors\n      array; carries a REQUIRED integer required in the closed range [1,\n      length of witnesses] and a REQUIRED non-empty array witnesses\n      whose distinct values are a subset of {rfc3161, opentimestamps}\n      (Rekor and other transparency-log pointers are NOT witness types\n      and MUST be rejected).  The receipt reaches the quorum-met state\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 60]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      only when at least required distinct witness types each hold a\n      verifiable inclusion proof; a producer MUST NOT assert durable\n      anchoring unless that holds, per the false-attestation rule of\n      Section 5.4 - This document - Witness type vocabulary: rfc3161 per\n      [RFC3161], opentimestamps per [OPENTIMESTAMPS]; inclusion-proof\n      prior art per [RFC9943] and [RFC6962].\n\n   *  mitre_techniques - Scope: signed-payload - JSON array of MITRE\n      ATT&amp;CK technique identifiers (for example T1059, T1078) self-\n      declared by the producer; not verifier-checked by the issuing\n      platform; flips framework_mappings_self_declared to true when\n      populated; defined in Section 5.12 - This document - Vocabulary\n      referenced by id from the MITRE ATT&amp;CK enterprise matrix.\n\n   *  mitre_atlas - Scope: signed-payload - JSON array of MITRE ATLAS\n      identifiers (for example AML.T0051) covering AI-system-specific\n      adversary techniques; self-declared; flips\n      framework_mappings_self_declared to true when populated; defined\n      in Section 5.12 - This document - Vocabulary referenced by id from\n      the MITRE ATLAS catalogue.\n\n   *  owasp_llm_top10 - Scope: signed-payload - JSON array of OWASP Top\n      10 for LLM Applications identifiers (for example LLM01, LLM02);\n      self-declared; flips framework_mappings_self_declared to true when\n      populated; defined in Section 5.12 - This document - Vocabulary\n      referenced by id from the OWASP Top 10 for LLM Applications\n      publication.\n\n   *  nist_ai_rmf - Scope: signed-payload - JSON array of NIST AI Risk\n      Management Framework function identifiers and subcategories (for\n      example GOVERN-1.1, MEASURE-2.7); self-declared; flips\n      framework_mappings_self_declared to true when populated; defined\n      in Section 5.12 - This document - Vocabulary referenced from NIST\n      AI RMF 1.0.\n\n   *  iso_42001 - Scope: signed-payload - JSON array of ISO/IEC\n      42001:2023 control identifiers (for example A.6.2.6); self-\n      declared; flips framework_mappings_self_declared to true when\n      populated; defined in Section 5.12 - This document - Vocabulary\n      referenced from ISO/IEC 42001:2023.\n\n   *  eu_ai_act_articles - Scope: signed-payload - JSON array of EU AI\n      Act article identifiers (for example Article-12, Article-15);\n      self-declared; flips framework_mappings_self_declared to true when\n      populated; defined in Section 5.12 - This document - Vocabulary\n      referenced from [EU-AI-ACT].\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 61]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  rfc3161_timestamp - Scope: signed-payload - JSON string carrying a\n      base64-encoded RFC 3161 TimeStampResp (DER) supplied by the\n      producer at signing time and preserved verbatim on the receipt for\n      offline TSA chain verification independent of any platform-issued\n      anchors; payload entry is an opaque caller-supplied token, not the\n      per-receipt anchor produced by the platform; defined in\n      Section 5.12 - This document - Bytes are an RFC 3161 TimeStampResp\n      per [RFC3161]; base64 encoding per [RFC4648].\n\n   *  framework_mappings_self_declared - Scope: signed-payload - JSON\n      boolean false-attestation guard set by the issuing platform to\n      true whenever any of mitre_techniques, mitre_atlas,\n      owasp_llm_top10, nist_ai_rmf, iso_42001, or eu_ai_act_articles is\n      populated; a producer-supplied value of false alongside a\n      populated taxonomy field MUST be overridden by the issuing\n      platform; defined in Section 5.12 - This document - Boolean.\n\n   *  authorized_under_mandate - Scope: signed-payload - Server-built\n      object recording a self-declared authorizing mandate the Action\n      was signed under; carries REQUIRED mandate_id, REQUIRED issuer_id,\n      a REQUIRED scope_digest formatted sha256:&lt;64 hex&gt; over the\n      mandate&#x27;s authorized-action-types scope, and a REQUIRED verified\n      boolean whose true value asserts self-declared issuer authority\n      (the same trust level as framework_mappings_self_declared, never\n      issuing-platform-verified third-party authorization); a present-\n      but-malformed object is rejected at signing time by the\n      false_mandate_attestation_guard; defined in Section 5.9 - This\n      document - Member vocabulary defined in Section 5.9; scope_digest\n      digest algorithm is SHA-256.\n\n   *  controls_evaluated - Scope: signed-payload - Server-built object\n      enumerating the enforcement controls that genuinely fired on this\n      sign plus the allow result; member keys are a closed set\n      (emergency_halt, delegation_scope, quorum, mandate, policy,\n      content_scan, result) and an unknown key is rejected; a key is\n      present only when its control ran (omission-over-false\n      attestation), quorum requires fired=true plus a 64-hex\n      attestation_hash, and a policy member asserting evaluation\n      requires matched_count at least 1; a caller-supplied value is\n      dropped before signing (the false_control_attestation_guard);\n      defined in Section 5.9 - This document - Control-key vocabulary\n      defined in Section 5.9.\n\n   *  approver_id - Scope: signed-payload - Producer-asserted identity\n      (bare kid or issuer_id) that authored a risk acceptance on a\n      protectmcp:lifecycle:risk_acceptance receipt; a FIELD bound into\n      the signed bytes with NO authority check, NO authentication, and\n      NO identity resolution performed by the issuing platform, only the\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 62]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      compliance_mode string-equality refusal against initiator_id (the\n      risk_acceptance_self_approval_guard); REQUIRED on the receipt type\n      and enforced by the risk_acceptance_missing_required_field false-\n      attestation guard; defined in Section 5.10 - This document - Bare-\n      identifier form per Section 5.1.3.\n\n   *  initiator_id - Scope: signed-payload - Producer-asserted identity\n      (bare kid or issuer_id) that requested the acceptance; a FIELD\n      bound into the signed bytes; under compliance_mode a value that\n      string-equals approver_id is refused at signing time by the\n      risk_acceptance_self_approval_guard (a string-incoherence check,\n      not identity resolution; an absent field never fires it); defined\n      in Section 5.10 - This document - Bare-identifier form per\n      Section 5.1.3.\n\n   *  acceptance_reason - Scope: signed-payload - Free-text producer\n      rationale for accepting a risk; proves the rationale existed and\n      was key-authored at issued_at, never parsed or scored; REQUIRED on\n      the risk-acceptance receipt type and enforced by the\n      risk_acceptance_missing_required_field guard; defined in\n      Section 5.10 - This document - Free-form string.\n\n   *  accepted_at - Scope: signed-payload - Producer-asserted ISO 8601\n      authoring time of the acceptance; self-declared, distinct from the\n      platform-attested issued_at and anchors times; defined in\n      Section 5.10 - This document - Free-form ISO 8601 string.\n\n   *  supersedes - Scope: signed-payload - Producer-asserted pointer\n      (opaque receipt locator OR sha256:&lt;64 hex&gt;) to the prior risk-\n      acceptance receipt this one replaces; proves the supersession\n      claim existed at issued_at; the issuing platform NEVER invalidates\n      the prior receipt (the chain of Section 5.3 is immutable, this is\n      a forward pointer only); defined in Section 5.10 - This document -\n      Opaque locator or sha256:&lt;64 hex&gt; digest.\n\n   *  sarif_digest - Scope: signed-payload - JSON string formatted\n      sha256:&lt;64 hex&gt; over the producer-declared canonical bytes of the\n      SARIF scan artifact the acceptance rested on; a SHAPE-ONLY\n      existence proof that THAT artifact existed unaltered at issued_at\n      and nothing more; the issuing platform NEVER parses, fetches, re-\n      runs, or validates the scan; defined in Section 5.10 - This\n      document - Digest algorithm is SHA-256; canonicalization rule\n      declared in the Audit Pack manifest entry.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 63]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  finding_ref - Scope: signed-payload - Producer-asserted opaque\n      free-text pointer to a finding or rule id inside the SARIF\n      artifact; proves the reference existed at issued_at, never\n      resolved or validated; defined in Section 5.10 - This document -\n      Free-form string.\n\n   *  approval_ref - Scope: signed-payload - Producer-asserted opaque\n      free-text correlation pointer to a human-in-the-loop approval id\n      or external ticket; proves the pointer existed at issued_at, never\n      resolved or validated; defined in Section 5.10 - This document -\n      Free-form string.\n\n   *  risk_snapshot - Scope: signed-payload - Object carrying a\n      producer-asserted point-in-time snapshot of THIRD-PARTY risk\n      signals (snapshot_at, snapshot_source, OPTIONAL epss, cvss,\n      cvss_vector, kev_listed, cve_ids); the issuing platform does NOT\n      fetch, compute, verify, query, or vouch for these values, and the\n      snapshot is explicitly NOT reproducible from any input the\n      platform holds; numerics are strings (floats prohibited per\n      Section 4) and snapshot_source is REQUIRED whenever any numeric or\n      KEV signal is present (a populated signal without it is rejected\n      by the risk_snapshot_numeric_requires_snapshot_source guard) so a\n      value can never be read as a platform-derived or verified score;\n      defined in Section 5.10 - This document - Third-party feed\n      vocabulary named per-receipt in snapshot_source; the platform\n      defines no controlled vocabulary for the signal values.\n\n   *  repo_ref - Scope: signed-payload - Producer-asserted opaque\n      pointer to the repository a change was authored against, carried\n      on a protectmcp:lifecycle:code_authorship receipt; REQUIRED on the\n      receipt type and enforced by the\n      code_authorship_missing_required_field false-attestation guard;\n      free-text, proves the reference existed at issued_at, never\n      resolved, cloned, or validated by the issuing platform; defined in\n      Section 5.11 - This document - Free-form string.\n\n   *  commit_sha - Scope: signed-payload - Producer-asserted commit\n      identifier of the authored change; REQUIRED on the receipt type\n      and enforced by the code_authorship_missing_required_field false-\n      attestation guard; bound into the signed bytes only, NEVER fetched\n      or verified by the issuing platform, proves only that the producer\n      asserted it at issued_at; defined in Section 5.11 - This document\n      - Free-form string.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 64]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  base_sha - Scope: signed-payload - Producer-asserted base commit\n      identifier the change was authored on top of; bound into the\n      signed bytes only, NEVER fetched or verified by the issuing\n      platform; defined in Section 5.11 - This document - Free-form\n      string.\n\n   *  change_digest - Scope: signed-payload - JSON string formatted\n      sha256:&lt;64 hex&gt; over the producer-declared canonical bytes of the\n      change; a SHAPE-ONLY existence proof that THAT change existed\n      unaltered at issued_at and nothing more; the issuing platform\n      NEVER fetches, re-diffs, or re-computes the change; a value\n      outside the sha256:&lt;64 hex&gt; wire form is rejected at signing time\n      by the change_digest_not_sha256_wire_form guard; defined in\n      Section 5.11 - This document - Digest algorithm is SHA-256;\n      canonicalization rule declared in the Audit Pack manifest entry.\n\n   *  change_ref - Scope: signed-payload - Producer-asserted opaque\n      free-text pointer to the change as a unit (for example a pull-\n      request id); proves the reference existed at issued_at, never\n      resolved or validated; defined in Section 5.11 - This document -\n      Free-form string.\n\n   *  change_approval_ref - Scope: signed-payload - Producer-asserted\n      opaque free-text correlation pointer to a human-in-the-loop\n      approval id or external review ticket for the change; proves the\n      pointer existed at issued_at, never resolved or validated; defined\n      in Section 5.11 - This document - Free-form string.\n\n   *  change_class - Scope: signed-payload - Producer-asserted class of\n      the change drawn from the closed vocabulary read, write, delete,\n      execute, deploy; self-declared, the issuing platform records but\n      does NOT verify the change matches the class; a value outside the\n      closed vocabulary is rejected at signing time as an out-of-\n      vocabulary value; defined in Section 5.11 - This document - Closed\n      vocabulary {read, write, delete, execute, deploy}.\n\n   *  authored_by - Scope: signed-payload - Object carrying a producer-\n      asserted description of the authoring agent (agent_id, model_id,\n      model_version, tool, attestation_source); the issuing platform\n      does NOT verify the named model; attestation_source is REQUIRED\n      whenever model_id or model_version is populated (a populated model\n      field without it is rejected by the\n      authored_by_model_requires_attestation_source guard) so a model\n      claim can never be read as a platform-verified attestation;\n      defined in Section 5.11 - This document - Member vocabulary\n      defined in Section 5.11; the platform defines no controlled\n      vocabulary for the member values.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 65]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   This document additionally requests that IANA register\n   counterparty_binding as a new claim in the CBOR Web Token (CWT)\n   Claims registry established by [RFC8392], with this document as the\n   reference and the semantics defined in Section 5.6.  The requested\n   CWT claim key is TBD by IANA; this document proposes allocation from\n   the IANA First Come First Served range (claim keys greater than or\n   equal to -65536 and less than -256, or greater than or equal to\n   65536, per [RFC8392] Section 9.1) so as not to consume Expert Review\n   or Standards Action space.  The JSON-form claim name is the literal\n   string counterparty_binding as registered above in the Compliance\n   Receipt Extension Fields Registry.\n\n11.2.  Compliance Receipt Type Namespaces Registry\n\n   IANA is requested to create a new registry titled &quot;Compliance Receipt\n   Type Namespaces&quot; under the same &quot;Compliance Receipts&quot; registry group.\n\n   Each entry contains:\n\n   *  Namespace: a colon-separated identifier prefix used as a value of\n      the type field, lowercase ASCII letters, digits, hyphen,\n      underscore, and colon.\n\n   *  Description: a one-line summary of the receipt category.\n\n   *  Reference: the document that defines the namespace.\n\n   The registration policy is Specification Required, per [RFC8126].\n   The Designated Expert(s) SHOULD verify that the namespace does not\n   collide with any namespace already registered or any namespace\n   reserved by [ACTA-RECEIPTS], and that the Reference is a stable\n   specification.\n\n   Initial registry contents:\n\n   *  protectmcp:acknowledgment - A receipt emitted by the B-party in a\n      counterparty_binding pair, confirming receipt of the A-party\n      action and carrying a digest of the bound envelope per Section 5.6\n      - This document.\n\n   *  protectmcp:decision - A receipt recording a policy evaluation\n      outcome (allow, deny, rate_limit) for an MCP-mediated tool call\n      where a policy was actually evaluated; observation is reserved to\n      protectmcp:lifecycle and protectmcp:observation per Section 5.2 -\n      This document.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 66]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  protectmcp:restraint - A receipt recording the application or\n      release of a restraint on an agent (e.g., quota, rate limit,\n      sandbox tightening) - This document.\n\n   *  protectmcp:lifecycle - A receipt recording an agent or system\n      lifecycle event (e.g., configuration change, key rotation,\n      oversight review, or a decision=observation record indicating an\n      Action was signed without policy evaluation per Section 5.2) -\n      This document.\n\n   *  protectmcp:lifecycle:configuration_change - A receipt recording a\n      configuration change to an agent or producing system, including\n      changes that disable or re-enable receipt generation (see\n      Section 6.1.1); a registered sub-namespace under\n      protectmcp:lifecycle that the reference cloud implementation emits\n      today; the implementation rejects at signing time, as the\n      configuration_change_missing_config_manifest_digest guard, a\n      receipt of this type that lacks a well-formed\n      config_manifest_digest (Section 5.7) - This document.\n\n   *  protectmcp:lifecycle:risk_acceptance - A receipt recording a\n      producer&#x27;s acceptance of a known risk, security finding, or policy\n      exception; a registered sub-namespace under protectmcp:lifecycle\n      that signs through the no-policy lifecycle path\n      (decision=observation, no policy evaluated) and carries the risk-\n      acceptance extension fields of Section 5.10 - This document.\n\n   *  protectmcp:lifecycle:code_authorship - A receipt recording a\n      producer&#x27;s assertion that an agent-authored change to a code\n      repository existed at a point in time; a registered sub-namespace\n      under protectmcp:lifecycle that signs through the no-policy\n      lifecycle path (decision=observation, no policy evaluated) and\n      carries the code-authorship extension fields of Section 5.11; the\n      receipt proves only that the change existed, was key-authored, and\n      was chained at the receipt time, and the issuing platform never\n      clones the repository, re-diffs the change, verifies the code, or\n      verifies the model - This document.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 67]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  protectmcp:observation - A receipt recording passive telemetry\n      about an Action that was signed without a policy evaluation,\n      emitted under one of the capture topologies catalogued in\n      Appendix &quot;Appendix - Capture Topologies for Compliance Receipt\n      Emission&quot; (typically network_proxy, browser_extension,\n      ebpf_observer, or mcp_proxy) where the originating application\n      could not call the receipt-emitting SDK directly; the reference\n      cloud implementation rejects at signing time, as the\n      false_attestation_guard, a receipt that declares the\n      passive_telemetry capture topology but carries a type outside\n      protectmcp:observation and its sub-namespaces - This document.\n\n   *  protectmcp:observation:result_bound - A sub-namespace under\n      protectmcp:observation for a follow-up observation receipt that\n      carries a result_digest (Section 5.7) binding the byte-equality of\n      a downstream Action&#x27;s result to the originating\n      protectmcp:decision receipt identified by action_ref; the\n      reference cloud implementation emits this type for tool calls\n      whose downstream result is regulator-relevant (LLM completions\n      under EU AI Act Article 12, audit-log entries under HIPAA\n      164.312(b), broker-dealer communications under SEC 17a-4); the\n      implementation rejects at signing time, as the\n      result_bound_missing_result_digest guard, a receipt of this type\n      that lacks a well-formed result_digest - This document.\n\n12.  Related Work\n\n   This section catalogues parallel proposals that overlap the problem\n   space of signed records for AI-agent actions.  The intent is to\n   position this profile within the broader Independent Submissions and\n   individual drafts landscape so that an implementer can choose the\n   surface that matches the trust model and the regulator that the\n   implementer is bound by.  The citations follow the RFC 7322 form and\n   are informative; this section places no normative constraint on a\n   Compliance Receipt implementation.\n\n   *  [DRAFT-SHARIF-APKI] defines a certificate-based Public Key\n      Infrastructure for autonomous AI agents, with X.509 certificate\n      profiles, naming conventions, and revocation considerations.  Its\n      scope is identity issuance and trust-root anchoring for agent\n      principals; it does not define a per-action receipt format.  This\n      profile is complementary to [DRAFT-SHARIF-APKI]: an implementer\n      that anchors agent identity through APKI can express the resulting\n      kid and issuer_id values in Compliance Receipts under\n      Section 5.1.3, with the trust-anchor metadata of the Audit Pack\n      resolving through the APKI certificate chain.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 68]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  [DRAFT-SHARIF-AML] defines cryptographic attestation across the AI\n      model lifecycle, from training-data provenance to inference-time\n      output binding.  Its scope is the model-build and model-evaluation\n      surface, addressing what evidence a model producer or model\n      consumer SHOULD retain about the model&#x27;s lineage and behaviour.\n      This profile is complementary at the per-action layer: a Deployer\n      that consumes a model whose lifecycle attestations are produced\n      under [DRAFT-SHARIF-AML] can reference those attestation digests\n      in Compliance Receipts via config_manifest_digest (Section 5.7) or\n      via the build-provenance four-tuple of Section 5.8 where the model\n      is delivered as a containerized executable.\n\n   *  [PIPELOCK-ER2] proposes an alternative receipt format for AI agent\n      actions under the EvidenceReceipt v2 schema.  The Pipelock format\n      is published as a public reference outside the IETF process and\n      addresses overlapping evidence-class requirements with a different\n      envelope, a different canonicalization choice, and a different\n      anchoring posture.  This profile and the Pipelock format are\n      bidding for the same regulator audience under different design\n      tradeoffs; an implementer that already deploys EvidenceReceipt v2\n      receipts can map the field set across the two surfaces, though\n      byte-equality across the formats is not preserved (the\n      canonicalization rules differ) and a cross-format verifier would\n      have to recompute digests under each format&#x27;s rule.\n\n   *  [LYRIE-ATP] defines the Agent Trust Protocol, an open\n      cryptographic trust framework for AI agent identity published\n      outside the IETF process, built from five primitives: an Agent\n      Identity Certificate binding an agent name, version, and model to\n      a signed key; a Scoped Authorization Token declaring time-bounded\n      permissions; a Tamper-Evident Action Log of hash-chained signed\n      action records; a Delegation Receipt recording authority transfer\n      between agents; and a Runtime Attestation Bundle tying runtime\n      state to the declared identity.  Its Tamper-Evident Action Log\n      overlaps this profile&#x27;s per-action receipt surface, while its\n      identity, authorization, and delegation primitives sit on the\n      identity-anchoring and delegation layer that this profile composes\n      on top of rather than redefines.  This profile is complementary:\n      an implementer that anchors agent identity and delegation through\n      the Agent Trust Protocol can express the resulting identity as the\n      issuer_id of Compliance Receipts under Section 5.1.3, while this\n      profile&#x27;s receipts are signed server-side by an operator\n      unaffiliated with the agent&#x27;s operator and carry the regulator-\n      facing field bindings of Sections 5 and 6 that a self-produced\n      action log does not.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 69]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  [RFC9943] defines the Supply Chain Integrity, Transparency, and\n      Trust architecture: an append-only Transparency Service that\n      admits signed statements about an artefact and returns a receipt\n      proving inclusion in the log, with verification reducing to a\n      Merkle inclusion proof in the tradition of [RFC6962] Certificate\n      Transparency.  SCITT and RFC 6962 are the canonical inclusion-\n      proof prior art that this profile&#x27;s witness_policy (Section 5.4)\n      generalizes from a single log to an N-of-M quorum over\n      heterogeneous durable-anchoring witnesses.  This profile is\n      complementary to SCITT rather than competitive with it: a SCITT\n      Transparent Statement MAY carry a Compliance Receipt as its signed\n      payload, so that a Deployer operating a SCITT Transparency Service\n      obtains a SCITT receipt whose inclusion proof can be named as one\n      witness in a Compliance Receipt&#x27;s witness_policy, while the\n      Compliance Receipt continues to carry the regulator-facing field\n      bindings that SCITT&#x27;s artefact-neutral envelope does not define.\n      This closes the append-only-log gap deferred under Section 10.12.\n\n   *  [A2A] defines the Agent2Agent protocol, a vendor-neutral\n      horizontal protocol for communication between independent agents,\n      hosted as a Linux Foundation project.  A2A defines an Agent Card,\n      an extension mechanism (data-only, profile, method, and state-\n      machine extension classes declared inside the Agent Card\n      capabilities and activated by clients through a request header),\n      and an Agent Card signature that carries a detached JSON Web\n      Signature over the Agent Card document itself.  A2A is\n      complementary to this profile rather than competitive with it:\n      A2A&#x27;s Agent Card signature attests the integrity of the card, not\n      the execution of a per-action authorization decision, and A2A is\n      explicitly method-agnostic on identity verification.  A Deployer\n      can reference a Compliance Receipt from an A2A Agent Card through\n      a verifier-issued attestation pointer (a resolvable URL, a content\n      hash over the referenced receipt, and the verifier identity\n      expressed as a decentralized identifier), so that the Compliance\n      Receipt&#x27;s issuer_id (Section 5.1.3) is the receipt subject and the\n      per-action regulator-facing bindings of Sections 5 and 6 compose\n      on top of A2A&#x27;s identity layer without either layer redefining the\n      other.\n\n   *  [A2A-IDF] is the Agent Identity Verification and Trust Framework\n      proposal under the A2A protocol&#x27;s contribution process, defining\n      tiered identity verification levels (self-asserted, domain-\n      verified, organization-verified), Agent Card signing for\n      production agents, revocation endpoints, delegation-chain\n      verification, and per-message signing.  Its scope is the identity\n      and trust-anchoring layer beneath per-action receipts; it does not\n      define a regulator-facing per-action receipt format, and its post-\n      quantum cryptography work is scheduled for a later cycle.  This\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 70]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      profile is complementary to [A2A-IDF] at the per-action layer: an\n      implementer that anchors agent identity through an A2A-IDF\n      verification level can express the resulting identity as the\n      issuer_id and kid of Compliance Receipts under Section 5.1.3,\n      while this profile already signs receipts with the ML-DSA-65 post-\n      quantum signature algorithm of [FIPS204] that the surrounding\n      agent-identity ecosystem largely defers.\n\n   *  [DRAFT-HOPLEY-X402] is the closest parallel receipt format: it\n      defines a Compliance Receipt minted at admission time under a\n      payment-gate remote procedure call, carrying an ALLOW, REFER, or\n      DENY verdict bound to a payment mandate.  The format canonicalizes\n      under [RFC8785] JCS, digests under SHA-256, and links receipts in\n      a monotonic hash chain (position plus content hash plus previous-\n      hash), in the same family of design primitives as this profile\n      (JCS canonicalization, SHA-256 digests, hash-chain linkage under\n      Section 5.3, and a categorical decision under Section 5.2 bound to\n      an authorizing mandate under Section 5.9).  The two drafts differ\n      in scope and trust model.  [DRAFT-HOPLEY-X402] is narrowed to\n      payment anti-money-laundering and sanctions-screening admission\n      decisions, is bound to a payment-settlement substrate, and its\n      REFER verdict carries a jurisdiction-specific suspicious-activity-\n      reporting meaning.  This profile is the broader superset: it\n      covers general agent-action receipts across regulatory regimes\n      rather than payment screening alone (Sections 5 and 6), it is\n      signed by a neutral third party rather than by the screening party\n      itself (the unaffiliated-custodian posture the recordkeeping\n      bindings of Sections 5 and 6 anchor), it carries the organization-\n      wide enforcement controls enumerated in controls_evaluated\n      (Section 5.9) rather than a single admission verdict, and it signs\n      with the ML-DSA-65 post-quantum algorithm of [FIPS204].  An\n      implementer deploying both can map the verdict and mandate-binding\n      fields across the two surfaces, though byte-equality is not\n      preserved because the envelope shapes differ.\n\n   *  [IN-TOTO-ATTESTATION] defines the in-toto Attestation Framework, a\n      specification for authenticated metadata about software supply-\n      chain artifacts: a signed statement binds a subject (an artifact\n      identified by a digest) to a predicate carrying claims about how\n      that artifact was produced.  Its scope is the build-and-provenance\n      surface for software artifacts; it does not define a regulator-\n      facing per-action receipt format.  This profile is complementary\n      to [IN-TOTO-ATTESTATION] at the code-authorship layer of\n      Section 5.11: a producer that authors a change whose build\n      provenance is attested under in-toto can bind the in-toto subject\n      digest into a code-authorship receipt via change_digest\n      (Section 5.11) or reference the in-toto attestation through the\n      build-provenance pointers of Section 5.8, while the code-\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 71]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      authorship receipt carries the time-of-authorship existence proof\n      and the chained per-action evidence that the in-toto statement\n      does not by itself provide.\n\n   *  [DRAFT-NELSON-DELEGATION] proposes a delegation-receipt format for\n      AI agents, recording that one agent delegated a scoped authority\n      to another and the resulting authorization chain.  Its scope is\n      the delegation-and-authorization surface between agent principals;\n      it does not define a code-authorship or change-existence receipt.\n      This profile is complementary at the per-action layer: a code-\n      authorship receipt under Section 5.11 can reference the\n      authorizing mandate the change was signed under through the reused\n      authorized_under_mandate field of Section 5.9, while a delegation\n      receipt under [DRAFT-NELSON-DELEGATION] can supply the upstream\n      delegation chain that the mandate&#x27;s authority rests on, without\n      either layer redefining the other.\n\n   *  [DRAFT-SHARIF-AAT] defines a JSON-based structured logging format\n      for autonomous AI systems, covering event capture, retention, and\n      compliance-mapping to the EU AI Act, SOC 2, ISO/IEC 42001, and PCI\n      DSS v4.0.1.  Its scope is the per-system audit log surface; it\n      does not define a cryptographically signed, hash-chained per-\n      action receipt or a regulator-facing field binding.  This profile\n      is complementary: a Deployer that produces audit-log entries under\n      [DRAFT-SHARIF-AAT] can reference a Compliance Receipt&#x27;s action_ref\n      (Section 5.1.5) as the stable per-action anchor correlating an\n      audit-log entry with the cryptographic evidence of the access-\n      control decision, while this profile&#x27;s signing is performed\n      server-side by an operator unaffiliated with the agent&#x27;s operator,\n      providing a tamper-evidence guarantee that a self-produced audit\n      log does not carry.\n\n   *  [DRAFT-NARAJALA-ANSv2] defines a domain-anchored trust layer for\n      autonomous AI agent identity through a dual-certificate model and\n      a cryptographic Transparency Log, supplying verifiable identity\n      resolution for agent principals at discovery time.  Its scope is\n      the naming and identity-anchoring surface; it does not define a\n      per-action receipt format or regulator-facing retention bindings.\n      This profile is complementary: an implementer that resolves agent\n      identity through ANS v2 can express the resulting well-known\n      domain anchor as the issuer_id of Compliance Receipts under\n      Section 5.1.3, while this profile&#x27;s receipts are signed server-\n      side by an operator unaffiliated with the agent&#x27;s operator, so the\n      trust guarantee at the per-action layer is independent of whether\n      the agent&#x27;s operator controls the ANS v2 identity anchor.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 72]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   This section is non-exhaustive.  The Independent Submissions stream\n   and the individual-draft search surface of the IETF Datatracker host\n   additional proposals whose scope intersects the Compliance Receipt\n   problem space; an implementer evaluating the field is encouraged to\n   re-query the Datatracker against the keywords &quot;agent&quot;, &quot;receipt&quot;,\n   &quot;attestation&quot;, and &quot;audit trail&quot; at the time of implementation.  The\n   author welcomes pull requests against the source repository of this\n   draft naming additional active parallel work.\n\n13.  Acknowledgements\n\n   The author thanks Tom Farley for [ACTA-RECEIPTS], on which this\n   profile is built.  This profile would not exist without the field\n   catalogue and envelope structure that the upstream draft defines.\n   The author also thanks the Asqav community for review of early\n   drafts.\n\n14.  Normative References\n\n   [RFC2119]  Bradner, S., &quot;Key words for use in RFCs to Indicate\n              Requirement Levels&quot;, BCP 14, RFC 2119,\n              DOI 10.17487/RFC2119, March 1997,\n              &lt;https://www.rfc-editor.org/info/rfc2119&gt;.\n\n   [RFC8174]  Leiba, B., &quot;Ambiguity of Uppercase vs Lowercase in RFC\n              2119 Key Words&quot;, BCP 14, RFC 8174, DOI 10.17487/RFC8174,\n              May 2017, &lt;https://www.rfc-editor.org/info/rfc8174&gt;.\n\n   [RFC8032]  Josefsson, S. and I. Liusvaara, &quot;Edwards-Curve Digital\n              Signature Algorithm (EdDSA)&quot;, RFC 8032,\n              DOI 10.17487/RFC8032, January 2017,\n              &lt;https://www.rfc-editor.org/info/rfc8032&gt;.\n\n   [RFC7518]  Jones, M., &quot;JSON Web Algorithms (JWA)&quot;, RFC 7518,\n              DOI 10.17487/RFC7518, May 2015,\n              &lt;https://www.rfc-editor.org/info/rfc7518&gt;.\n\n   [FIPS204]  National Institute of Standards and Technology, &quot;Module-\n              Lattice-Based Digital Signature Standard&quot;, FIPS 204,\n              DOI 10.6028/NIST.FIPS.204, 13 August 2024,\n              &lt;https://csrc.nist.gov/pubs/fips/204/final&gt;.\n\n   [RFC5816]  Santesson, S. and N. Pope, &quot;ESSCertIDv2 Update for RFC\n              3161&quot;, RFC 5816, DOI 10.17487/RFC5816, April 2010,\n              &lt;https://www.rfc-editor.org/info/rfc5816&gt;.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 73]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [RFC3161]  Adams, C., Cain, P., Pinkas, D., and R. Zuccherato,\n              &quot;Internet X.509 Public Key Infrastructure Time-Stamp\n              Protocol (TSP)&quot;, RFC 3161, DOI 10.17487/RFC3161, August\n              2001, &lt;https://www.rfc-editor.org/info/rfc3161&gt;.\n\n   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, &quot;Guidelines for\n              Writing an IANA Considerations Section in RFCs&quot;, BCP 26,\n              RFC 8126, DOI 10.17487/RFC8126, June 2017,\n              &lt;https://www.rfc-editor.org/info/rfc8126&gt;.\n\n   [OPENTIMESTAMPS]\n              OpenTimestamps, &quot;OpenTimestamps Server&quot;, September 2016,\n              &lt;https://github.com/opentimestamps/opentimestamps-server&gt;.\n\n   [ACTA-RECEIPTS]\n              Farley, T., &quot;Signed Decision Receipts for Machine-to-\n              Machine Access Control&quot;, Work in Progress, Internet-Draft,\n              draft-farley-acta-signed-receipts-02, 28 June 2026,\n              &lt;https://datatracker.ietf.org/doc/html/draft-farley-acta-\n              signed-receipts-02&gt;.\n\n   [RFC8785]  Rundgren, A., Jordan, B., and S. Erdtman, &quot;JSON\n              Canonicalization Scheme (JCS)&quot;, RFC 8785,\n              DOI 10.17487/RFC8785, June 2020,\n              &lt;https://www.rfc-editor.org/info/rfc8785&gt;.\n\n   [ISO17442] ISO, &quot;Financial services - Legal entity identifier (LEI) -\n              Part 1: Assignment&quot;, ISO 17442-1:2020, August 2020,\n              &lt;https://www.iso.org/standard/78829.html&gt;.\n\n   [W3C-DID]  W3C, &quot;Decentralized Identifiers (DIDs) v1.0&quot;, 19 July\n              2022, &lt;https://www.w3.org/TR/did-1.0/&gt;.\n\n   [RFC9052]  Schaad, J., &quot;CBOR Object Signing and Encryption (COSE):\n              Structures and Process&quot;, STD 96, RFC 9052,\n              DOI 10.17487/RFC9052, August 2022,\n              &lt;https://www.rfc-editor.org/info/rfc9052&gt;.\n\n   [RFC8949]  Bormann, C. and P. Hoffman, &quot;Concise Binary Object\n              Representation (CBOR)&quot;, STD 94, RFC 8949,\n              DOI 10.17487/RFC8949, December 2020,\n              &lt;https://www.rfc-editor.org/info/rfc8949&gt;.\n\n   [RFC7515]  Jones, M., Bradley, J., and N. Sakimura, &quot;JSON Web\n              Signature (JWS)&quot;, RFC 7515, DOI 10.17487/RFC7515, May\n              2015, &lt;https://www.rfc-editor.org/info/rfc7515&gt;.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 74]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [RFC8392]  Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig,\n              &quot;CBOR Web Token (CWT)&quot;, RFC 8392, DOI 10.17487/RFC8392,\n              May 2018, &lt;https://www.rfc-editor.org/info/rfc8392&gt;.\n\n   [RFC4648]  Josefsson, S., &quot;The Base16, Base32, and Base64 Data\n              Encodings&quot;, RFC 4648, DOI 10.17487/RFC4648, October 2006,\n              &lt;https://www.rfc-editor.org/info/rfc4648&gt;.\n\n   [NIST-GENAI-PROFILE]\n              National Institute of Standards and Technology,\n              &quot;Artificial Intelligence Risk Management Framework:\n              Generative Artificial Intelligence Profile&quot;, NIST AI\n              600-1, DOI 10.6028/NIST.AI.600-1, 26 July 2024,\n              &lt;https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.600-1.pdf&gt;.\n\n15.  Informative References\n\n   [RFC8446]  Rescorla, E., &quot;The Transport Layer Security (TLS) Protocol\n              Version 1.3&quot;, RFC 8446, DOI 10.17487/RFC8446, August 2018,\n              &lt;https://www.rfc-editor.org/info/rfc8446&gt;.\n\n   [RFC5705]  Rescorla, E., &quot;Keying Material Exporters for Transport\n              Layer Security (TLS)&quot;, RFC 5705, DOI 10.17487/RFC5705,\n              March 2010, &lt;https://www.rfc-editor.org/info/rfc5705&gt;.\n\n   [RFC9266]  Whited, S., &quot;Channel Bindings for TLS 1.3&quot;, RFC 9266,\n              DOI 10.17487/RFC9266, July 2022,\n              &lt;https://www.rfc-editor.org/info/rfc9266&gt;.\n\n   [RFC9421]  Backman, A., Ed., Richer, J., Ed., and M. Sporny, &quot;HTTP\n              Message Signatures&quot;, RFC 9421, DOI 10.17487/RFC9421,\n              February 2024, &lt;https://www.rfc-editor.org/info/rfc9421&gt;.\n\n   [ISO8601-2]\n              ISO, &quot;Date and time - Representations for information\n              interchange - Part 2: Extensions&quot;, ISO 8601-2:2019,\n              February 2019, &lt;https://www.iso.org/standard/70908.html&gt;.\n\n   [EU-AI-ACT]\n              European Parliament and Council, &quot;Regulation (EU)\n              2024/1689 of the European Parliament and of the Council of\n              13 June 2024 laying down harmonised rules on artificial\n              intelligence and amending Regulations (EC) No 300/2008,\n              (EU) No 167/2013, (EU) No 168/2013, (EU) 2018/858, (EU)\n              2018/1139 and (EU) 2019/2144 and Directives 2014/90/EU,\n              (EU) 2016/797 and (EU) 2020/1828 (Artificial Intelligence\n              Act) (Text with EEA relevance)&quot;, 12 July 2024,\n              &lt;https://eur-lex.europa.eu/eli/reg/2024/1689/oj&gt;.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 75]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [DORA]     European Parliament and Council, &quot;Regulation (EU)\n              2022/2554 of the European Parliament and of the Council of\n              14 December 2022 on digital operational resilience for the\n              financial sector and amending Regulations (EC) No\n              1060/2009, (EU) No 648/2012, (EU) No 600/2014, (EU) No\n              909/2014 and (EU) 2016/1011 (Text with EEA relevance)&quot;, 27\n              December 2022,\n              &lt;https://eur-lex.europa.eu/eli/reg/2022/2554/oj&gt;.\n\n   [REG-2025-301]\n              European Commission, &quot;Commission Delegated Regulation (EU)\n              2025/301 of 23 October 2024 supplementing Regulation (EU)\n              2022/2554 of the European Parliament and of the Council\n              with regard to regulatory technical standards specifying\n              the content, timelines and templates on the reporting of\n              major ICT-related incidents and significant cyber threats\n              (Text with EEA relevance)&quot;, 20 February 2025,\n              &lt;https://eur-lex.europa.eu/eli/reg_del/2025/301/oj&gt;.\n\n   [REG-2025-302]\n              European Commission, &quot;Commission Implementing Regulation\n              (EU) 2025/302 of 23 October 2024 laying down implementing\n              technical standards for the application of Regulation (EU)\n              2022/2554 of the European Parliament and of the Council\n              with regard to the standard forms, templates, and\n              procedures for financial entities to report a major ICT-\n              related incident and to notify a significant cyber threat\n              (Text with EEA relevance)&quot;, 20 February 2025,\n              &lt;https://eur-lex.europa.eu/eli/reg_impl/2025/302/oj&gt;.\n\n   [REG-2024-1772]\n              European Commission, &quot;Commission Delegated Regulation (EU)\n              2024/1772 of 13 March 2024 supplementing Regulation (EU)\n              2022/2554 of the European Parliament and of the Council\n              with regard to regulatory technical standards specifying\n              the criteria for the classification of ICT-related\n              incidents and cyber threats, setting out materiality\n              thresholds and specifying the details of reports of major\n              incidents (Text with EEA relevance)&quot;, 25 June 2024,\n              &lt;https://eur-lex.europa.eu/eli/reg_del/2024/1772/oj&gt;.\n\n   [MIFID2]   European Parliament and Council, &quot;Directive 2014/65/EU of\n              the European Parliament and of the Council of 15 May 2014\n              on markets in financial instruments and amending Directive\n              2002/92/EC and Directive 2011/61/EU (recast) (Text with\n              EEA relevance)&quot;, 12 June 2014,\n              &lt;https://eur-lex.europa.eu/eli/dir/2014/65/oj&gt;.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 76]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [REG-2017-565]\n              European Commission, &quot;Commission Delegated Regulation (EU)\n              2017/565 of 25 April 2016 supplementing Directive 2014/65/\n              EU of the European Parliament and of the Council as\n              regards organisational requirements and operating\n              conditions for investment firms and defined terms for the\n              purposes of that Directive (Text with EEA relevance)&quot;, 31\n              March 2017,\n              &lt;https://eur-lex.europa.eu/eli/reg_del/2017/565/oj&gt;.\n\n   [AMLD]     European Parliament and Council, &quot;Directive (EU) 2015/849\n              of the European Parliament and of the Council of 20 May\n              2015 on the prevention of the use of the financial system\n              for the purposes of money laundering or terrorist\n              financing, amending Regulation (EU) No 648/2012 of the\n              European Parliament and of the Council, and repealing\n              Directive 2005/60/EC of the European Parliament and of the\n              Council and Commission Directive 2006/70/EC (Text with EEA\n              relevance)&quot;, 5 June 2015,\n              &lt;https://eur-lex.europa.eu/eli/dir/2015/849/oj&gt;.\n\n   [AMLR]     European Parliament and Council, &quot;Regulation (EU)\n              2024/1624 of the European Parliament and of the Council of\n              31 May 2024 on the prevention of the use of the financial\n              system for the purposes of money laundering or terrorist\n              financing (Text with EEA relevance)&quot;, 19 June 2024,\n              &lt;https://eur-lex.europa.eu/eli/reg/2024/1624/oj&gt;.\n\n   [NIST-AI-RMF]\n              National Institute of Standards and Technology,\n              &quot;Artificial Intelligence Risk Management Framework (AI RMF\n              1.0)&quot;, NIST AI 100-1, DOI 10.6028/NIST.AI.100-1, 26\n              January 2023,\n              &lt;https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.100-1.pdf&gt;.\n\n   [COLORADO-AI-ACT]\n              State of Colorado, Seventy-Fourth General Assembly,\n              &quot;Senate Bill 24-205, Consumer Protections for Artificial\n              Intelligence&quot;, 17 May 2024,\n              &lt;https://leg.colorado.gov/bills/sb24-205&gt;.\n\n   [TEXAS-TRAIGA]\n              State of Texas, 89th Legislature, Regular Session, &quot;House\n              Bill 149, Texas Responsible Artificial Intelligence\n              Governance Act&quot;, 22 June 2025,\n              &lt;https://capitol.texas.gov/BillLookup/\n              History.aspx?LegSess=89R&amp;Bill=HB149&gt;.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 77]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [HIPAA-SECURITY]\n              United States Department of Health and Human Services,\n              &quot;HIPAA Security Rule, 45 CFR Part 164, Subpart C, Security\n              Standards for the Protection of Electronic Protected\n              Health Information&quot;, 20 February 2003,\n              &lt;https://www.ecfr.gov/current/title-45/subtitle-A/\n              subchapter-C/part-164&gt;.\n\n   [NYDFS-500]\n              New York State Department of Financial Services, &quot;23 NYCRR\n              Part 500, Cybersecurity Requirements for Financial\n              Services Companies&quot;, 1 March 2017,\n              &lt;https://www.dfs.ny.gov/industry-guidance/cybersecurity&gt;.\n\n   [SEC-17A-4]\n              United States Securities and Exchange Commission,\n              &quot;Electronic Recordkeeping Requirements for Broker-Dealers,\n              Security-Based Swap Dealers, and Major Security-Based Swap\n              Participants (Rule 17a-4 Amendments)&quot;, 3 November 2022,\n              &lt;https://www.federalregister.gov/\n              documents/2022/11/03/2022-22670/electronic-recordkeeping-\n              requirements-for-broker-dealers-security-based-swap-\n              dealers-and-major&gt;.  Effective date January 3, 2023;\n              compliance date for amendments to 17 CFR 240.17a-4 May 3,\n              2023.\n\n   [CIRCIA]   United States Congress, &quot;Cyber Incident Reporting for\n              Critical Infrastructure Act of 2022, enacted as Division Y\n              of the Consolidated Appropriations Act, 2022 (Public Law\n              117-103); statutory authority codified at 6 U.S.C. 681 et\n              seq.&quot;, 15 March 2022,\n              &lt;https://www.congress.gov/117/plaws/publ103/PLAW-\n              117publ103.pdf&gt;.  Public Law 117-103 was enacted on March\n              15, 2022.  Implementing regulations are proceeding under a\n              CISA notice of proposed rulemaking at 89 FR 23644 (April\n              4, 2024); the final rule is pending publication.\n\n   [DRAFT-SHARIF-APKI]\n              Independent, &quot;Agent Public Key Infrastructure (APKI):\n              Certificate-Based Identity and Trust for Autonomous AI\n              Agents&quot;, Work in Progress, Internet-Draft, draft-sharif-\n              apki-agent-pki-00, 2025,\n              &lt;https://datatracker.ietf.org/doc/draft-sharif-apki-agent-\n              pki/&gt;.  Active Independent Submission on the IETF\n              Datatracker; defines a certificate-based PKI for\n              autonomous AI agents.  Cited under Section 12 as parallel\n              work on the identity-anchoring surface complementary to\n              this profile&#x27;s per-action receipt format.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 78]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [DRAFT-SHARIF-AML]\n              Independent, &quot;Cryptographic Attestation for AI Model\n              Lifecycle: From Training Data to Inference Output&quot;, Work\n              in Progress, Internet-Draft, draft-sharif-ai-model-\n              lifecycle-attestation-00, 2025,\n              &lt;https://datatracker.ietf.org/doc/draft-sharif-ai-model-\n              lifecycle-attestation/&gt;.  Active Independent Submission on\n              the IETF Datatracker; defines cryptographic attestation\n              across the AI model lifecycle from training- data\n              provenance to inference-time output binding.  Cited under\n              Section 12 as parallel work on the model-build and model-\n              evaluation surface complementary to this profile&#x27;s per-\n              action receipt format.\n\n   [PIPELOCK-ER2]\n              Pipelock, &quot;EvidenceReceipt v2: An Alternative Receipt\n              Format for AI Agent Actions&quot;, 2025,\n              &lt;https://github.com/luckyPipewrench/pipelock&gt;.  Public\n              reference published outside the IETF process, documented\n              in the project&#x27;s open-source repository.  Cited under\n              Section 12 as an alternative receipt-format proposal under\n              different envelope, canonicalization, and anchoring\n              choices; byte-equality across the two formats is not\n              preserved.\n\n   [LYRIE-ATP]\n              OTT Cybersecurity, &quot;Agent Trust Protocol (ATP)&quot;, 2026,\n              &lt;https://atp.lyrie.ai&gt;.  Open cryptographic trust\n              framework for AI agent identity published outside the IETF\n              process, defining an Agent Identity Certificate, a Scoped\n              Authorization Token, a Tamper-Evident Action Log of hash-\n              chained signed action records, a Delegation Receipt, and a\n              Runtime Attestation Bundle.  Cited under Section 12 as\n              parallel work whose Tamper-Evident Action Log overlaps\n              this profile&#x27;s per-action receipt surface and whose\n              identity and delegation primitives sit on the identity-\n              anchoring layer beneath it.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 79]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [A2A]      A2A Project, a Linux Foundation project, &quot;Agent2Agent\n              (A2A) Protocol&quot;, 2025,\n              &lt;https://github.com/a2aproject/A2A&gt;.  Vendor-neutral\n              horizontal protocol for communication between independent\n              agents, hosted as a Linux Foundation project.  Defines an\n              Agent Card, an extension mechanism, and a JSON Web\n              Signature over the Agent Card document.  Cited under\n              Section 12 as parallel work on the agent- interoperation\n              surface complementary to this profile&#x27;s per-action receipt\n              format; A2A is method-agnostic on identity verification\n              and does not define a regulator-facing per-action receipt\n              format.\n\n   [A2A-IDF]  A2A Project contributors, &quot;Agent Identity Verification and\n              Trust Framework (A2A-IDF)&quot;, 2026,\n              &lt;https://github.com/a2aproject/A2A/issues/1497&gt;.  Identity\n              and trust-framework proposal under the A2A protocol\n              contribution process, defining tiered verification levels,\n              Agent Card signing, revocation, and delegation-chain\n              verification.  Cited under Section 12 as parallel work on\n              the identity-anchoring layer beneath this profile&#x27;s per-\n              action receipts; post-quantum cryptography is scheduled\n              for a later cycle.\n\n   [DRAFT-HOPLEY-X402]\n              Hopley, C., &quot;x402 Compliance Receipt&quot;, Work in Progress,\n              Internet-Draft, draft-hopley-x402-compliance-receipt-02,\n              25 May 2026, &lt;https://datatracker.ietf.org/doc/draft-\n              hopley-x402-compliance-receipt/&gt;.  Independent Submission,\n              Informational.  Defines a JCS-canonicalized, SHA-256 hash-\n              chained Compliance Receipt carrying an ALLOW, REFER, or\n              DENY admission verdict bound to a payment mandate under\n              the x402 payment substrate.  Cited under Section 12 as the\n              closest parallel receipt format; this profile is the\n              broader superset (general agent-action receipts, neutral\n              third-party signing, organization-wide control\n              attestation, ML-DSA-65) and that draft is narrowed to\n              payment anti- money-laundering and sanctions-screening\n              admission decisions.\n\n   [RFC9943]  IETF SCITT Working Group, &quot;An Architecture for Trustworthy\n              and Transparent Digital Supply Chains&quot;, RFC 9943, June\n              2026, &lt;https://www.rfc-editor.org/info/rfc9943&gt;.\n              Published as RFC 9943 (Proposed Standard), the Supply\n              Chain Integrity, Transparency, and Trust (SCITT)\n              architecture defining an append-only Transparency Service\n              that issues inclusion-proof receipts over signed\n              statements; formerly the Internet-Draft draft-ietf-scitt-\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 80]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n              architecture. Cited under Section 12 as canonical\n              inclusion-proof prior art complementary to this profile&#x27;s\n              witness_policy; a SCITT Transparent Statement can carry a\n              Compliance Receipt as its payload.\n\n   [RFC6962]  Laurie, B., Langley, A., and E. Kasper, &quot;Certificate\n              Transparency&quot;, RFC 6962, DOI 10.17487/RFC6962, June 2013,\n              &lt;https://www.rfc-editor.org/info/rfc6962&gt;.  Defines the\n              Merkle-tree inclusion-proof model for an append-only\n              public log.  Cited under Section 12 as the foundational\n              inclusion-proof prior art that this profile&#x27;s\n              witness_policy generalizes to an N-of-M quorum over\n              heterogeneous durable-anchoring witnesses.\n\n   [IN-TOTO-ATTESTATION]\n              in-toto project, a Cloud Native Computing Foundation\n              project, &quot;in-toto Attestation Framework&quot;, 2024,\n              &lt;https://github.com/in-toto/attestation&gt;.  Specification\n              for authenticated metadata about software supply-chain\n              artifacts, binding a subject artifact digest to a\n              predicate of provenance claims.  Cited under Section 12 as\n              parallel work on the build-and-provenance surface\n              complementary to this profile&#x27;s code- authorship receipt\n              format.\n\n   [DRAFT-NELSON-DELEGATION]\n              Independent, &quot;Agent Delegation Receipts&quot;, Work in\n              Progress, Internet-Draft, draft-nelson-agent-delegation-\n              receipts, 2025, &lt;https://datatracker.ietf.org/doc/draft-\n              nelson-agent-delegation-receipts/&gt;.  Individual Internet-\n              Draft proposing a delegation-receipt format that records\n              scoped authority delegated between agent principals and\n              the resulting authorization chain.  Cited under Section 12\n              as parallel work on the delegation-and-authorization\n              surface complementary to this profile&#x27;s code-authorship\n              and per-action receipt format.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 81]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   [DRAFT-SHARIF-AAT]\n              Sharif, R., &quot;Agent Audit Trail: A Standard Logging Format\n              for Autonomous AI Systems&quot;, Work in Progress, Internet-\n              Draft, draft-sharif-agent-audit-trail-00, March 2026,\n              &lt;https://datatracker.ietf.org/doc/draft-sharif-agent-\n              audit-trail/&gt;.  Individual Internet-Draft defining a JSON-\n              based structured logging format for autonomous AI systems\n              with compliance mapping to the EU AI Act, SOC 2, ISO/IEC\n              42001, and PCI DSS v4.0.1.  Cited under Section 12 as\n              parallel work on the per-system audit-log surface\n              complementary to this profile&#x27;s cryptographically signed,\n              hash-chained, third-party- signed per-action receipt\n              format.\n\n   [DRAFT-NARAJALA-ANSv2]\n              Courtney, S., Narajala, V. S., Huang, K., Habler, I., and\n              A. Sheriff, &quot;Agent Name Service v2 (ANS): A Domain-\n              Anchored Trust Layer for Autonomous AI Agent Identity&quot;,\n              Work in Progress, Internet-Draft, draft-narajala-courtney-\n              ansv2-01, April 2026, &lt;https://datatracker.ietf.org/doc/\n              draft-narajala-courtney-ansv2/&gt;.  Individual Internet-\n              Draft defining a domain-anchored trust layer for\n              autonomous AI agent identity through a dual-certificate\n              model and a cryptographic Transparency Log. Cited under\n              Section 12 as parallel work on the naming and identity-\n              anchoring surface complementary to this profile&#x27;s per-\n              action receipt format; this profile&#x27;s receipts are signed\n              by an operator unaffiliated with the agent&#x27;s operator,\n              providing a per- action trust guarantee independent of the\n              identity anchor.\n\nWorked Example (Informative)\n\n   This appendix illustrates a Compliance Receipt that satisfies the EU\n   AI Act Article 26 binding for a tool invocation by a High-Risk AI\n   System deployed by a Financial Entity.  The wire shape applies\n   identically to United States bindings; the only differences are the\n   values placed in issuer_id (LEI, EIN, or CIK depending on the regime)\n   and in the risk_class and incident_class vocabularies referenced in\n   the Audit Pack manifest.  Field values are abbreviated for\n   readability and are not cryptographically valid.  The example shows a\n   mid-chain receipt; a chain-genesis receipt would carry a\n   previousReceiptHash of 64 zero hex characters per Section 5.3.\n\n   The worked example below is illustrative.  The digest-valued fields\n   (action_ref, policy_digest, the hash member of payload_digest, and\n   previousReceiptHash) are shown abbreviated with an internal ellipsis\n   so each line fits the column width; a real receipt carries the full\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 82]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   64-character lowercase hex digest.  The keys are shown in human-\n   readable order rather than JCS-canonical lexicographic order; the\n   JCS-canonical bytes used as input to SHA-256 reorder keys\n   lexicographically (so the on-the-wire byte order for hashing is\n   action_ref, decision, issued_at, issuer_id, iteration_id,\n   payload_digest, policy_digest, previousReceiptHash, reason,\n   risk_class, sandbox_state, tool_name, type, with each nested object&#x27;s\n   keys also lexicographically sorted, per [RFC8785]).  The sig value,\n   the anchors value entries, and the hash hex values are deterministic\n   placeholders chosen for shape rather than cryptographic validity.\n   Implementations MUST NOT replay or trust this example as a real\n   receipt; the example is not signed by any allocated issuer_id, is not\n   anchored against any TSA or OpenTimestamps calendar, and does not\n   chain into any retained predecessor.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 83]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   {\n     &quot;payload&quot;: {\n       &quot;type&quot;: &quot;protectmcp:decision&quot;,\n       &quot;issued_at&quot;: &quot;2026-05-04T09:14:22.118Z&quot;,\n       &quot;issuer_id&quot;: &quot;00000000000000000098&quot;,\n       &quot;action_ref&quot;: &quot;c1f3a09a4d2e7f6b8c5a91e3d7b04f2a...3c5e7f9d&quot;,\n       &quot;tool_name&quot;: &quot;deploy&quot;,\n       &quot;iteration_id&quot;: &quot;task-2026-05-04-01a3&quot;,\n       &quot;decision&quot;: &quot;allow&quot;,\n       &quot;reason&quot;: &quot;policy:within_limits&quot;,\n       &quot;policy_digest&quot;: &quot;sha256:7b214e8c3d9f4a2b1e6c8f5a...1f3a5d7b&quot;,\n       &quot;sandbox_state&quot;: &quot;enabled&quot;,\n       &quot;payload_digest&quot;: {\n         &quot;hash&quot;: &quot;0a44d2c8e3f5b7a9d1c4e6f8b2a5d7c9...e7f9b2a4&quot;,\n         &quot;size&quot;: 1024\n       },\n       &quot;previousReceiptHash&quot;: &quot;f80c11a3b5d7e9c2f4a6b8d1...b8d1e3c5&quot;,\n       &quot;risk_class&quot;: &quot;deployer:financial:medium&quot;\n     },\n     &quot;signature&quot;: {\n       &quot;alg&quot;: &quot;EdDSA&quot;,\n       &quot;kid&quot;: &quot;00000000000000000098&quot;,\n       &quot;sig&quot;: &quot;...&quot;\n     },\n     &quot;anchors&quot;: [\n       {\n         &quot;type&quot;: &quot;rfc3161&quot;,\n         &quot;value&quot;: &quot;...&quot;\n       },\n       {\n         &quot;type&quot;: &quot;opentimestamps&quot;,\n         &quot;value&quot;: &quot;...&quot;\n       }\n     ]\n   }\n\n   The above receipt satisfies the Article 26 binding because:\n\n   *  issuer_id is a 20-character ISO 17442 Legal Entity Identifier\n      (LEI) that resolves through the trust anchor metadata in the Audit\n      Pack to the named Deployer;\n\n   *  policy_digest resolves to a retained policy artefact;\n\n   *  sandbox_state is enabled, satisfying the High-Risk system\n      constraint of Section 5.1.6;\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 84]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  previousReceiptHash links the receipt into the chain per\n      Section 5.3;\n\n   *  both an [RFC3161] anchor and an [OPENTIMESTAMPS] anchor are\n      present per Section 5.4.\n\n   Under the DORA Article 17 binding a Compliance Verifier additionally\n   checks the longest applicable sectoral retention floor (1827 days as\n   the default, per Section 6.3.4) and, where present, that\n   incident_class flattens to the canonical vocabulary referenced in\n   Section 5.5 (resolved from [REG-2025-302] Annex II field 3.23\n   directly).  Under the United States bindings of Section 6 the same\n   verifier additionally checks the longest applicable retention floor\n   (2192 days as the default for receipts under Section 7.4 or\n   Section 7.6) and, where the Deployer is a NYDFS Covered Entity, a\n   HIPAA Covered Entity, or a CIRCIA Covered Entity, that incident_class\n   resolves to the applicable canonical category for each in-scope\n   regime.\n\nChange Log\n\n   [RFC Editor: please remove this appendix and its subsections before\n   publication.]\n\nChanges in draft -07\n\n   Reference-maintenance and editorial revision.  This revision\n   refreshes three reference citations to their current canonical\n   locations and adds one parallel Related Work citation.  No change to\n   any normative requirement, signing algorithm, canonicalization\n   transformation (JCS), hash-chain scope, anchor type set, retention\n   floor, Audit Pack manifest, verifier reporting field, or IANA\n   registry content; a -06 receipt is a conformant -07 receipt.\n\n   *  The normative [ACTA-RECEIPTS] reference is advanced from the -01\n      to the -02 revision of the upstream draft, which is the current\n      revision on the IETF Datatracker; the profiled envelope and field\n      catalogue this document overlays are unchanged across that\n      upstream revision.\n\n   *  The informative [PIPELOCK-ER2] reference target is updated from\n      the retired standalone vendor page to the project&#x27;s live open-\n      source repository, where the EvidenceReceipt v2 format is\n      documented; the citation title and framing are otherwise\n      unchanged.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 85]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  The informative citation for the Supply Chain Integrity,\n      Transparency, and Trust architecture, cited in -06 as the\n      Internet-Draft draft-ietf-scitt-architecture, is advanced to its\n      published form: that draft has since been published as [RFC9943],\n      and the reference and its citation label are updated from the\n      Internet-Draft to the RFC.  The related-work framing is unchanged.\n\n   *  Section 12 is extended with a cite of [LYRIE-ATP] (the Agent Trust\n      Protocol, an open cryptographic trust framework for AI agent\n      identity published outside the IETF process), framed as parallel\n      work whose Tamper-Evident Action Log of hash-chained signed action\n      records overlaps this profile&#x27;s per-action receipt surface and\n      whose identity and delegation primitives sit on the identity-\n      anchoring layer beneath it.  New informative reference:\n      [LYRIE-ATP].\n\nChanges in draft -06\n\n   Risk-acceptance and code-authorship revision.  This revision\n   registers the risk-acceptance and code-authorship receipt types and\n   their extension fields, which the reference cloud implementation, the\n   asqav-sdk Python and TypeScript halves, and the published /.well-\n   known/governance.json already emit and accept, keeping the IETF\n   surface in parity with deployed reality.  The additions are additive:\n   a -05 receipt is a conformant -06 receipt, and a -06 receipt that\n   carries the new fields remains a conformant [ACTA-RECEIPTS] receipt\n   under the upstream extension semantics of Section 4.2 (verifiers that\n   do not implement the extension ignore it).\n\n   *  Section 11.2 Initial registry contents are extended with\n      protectmcp:lifecycle:risk_acceptance, a registered sub-namespace\n      under protectmcp:lifecycle recording a producer&#x27;s acceptance of a\n      known risk, security finding, or policy exception.  It signs\n      through the no-policy lifecycle path of Section 5.2\n      (decision=observation, no policy evaluated), so the false-\n      attestation honesty rule is preserved: no policy result is\n      asserted.\n\n   *  New normative Section 5.10 defines the OPTIONAL signed-payload\n      extension fields carried on a risk-acceptance receipt: approver_id\n      and acceptance_reason (REQUIRED on the type), and OPTIONAL\n      initiator_id, accepted_at, supersedes, sarif_digest, finding_ref,\n      approval_ref, and the risk_snapshot object (snapshot_at,\n      snapshot_source, epss, cvss, cvss_vector, kev_listed, cve_ids).\n      The scope-honesty labels are normative: risk_snapshot is a\n      producer-asserted snapshot the issuing platform never computes,\n      fetches, verifies, queries, or vouches for and that is NOT\n      reproducible from any input the platform holds; sarif_digest is a\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 86]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      shape-only existence proof of the scan artifact at issued_at,\n      never a re-scan; expires_at on the type is declared, not enforced\n      (no auto-revoke); and approver_id and initiator_id are bound\n      fields with NO segregation-of-duties check.\n\n   *  Section 11.1 Initial registry contents are extended with the nine\n      new risk-acceptance fields (approver_id, initiator_id,\n      acceptance_reason, accepted_at, supersedes, sarif_digest,\n      finding_ref, approval_ref, risk_snapshot), each labelled Scope:\n      signed-payload, each carrying the normative producer-asserted\n      scope labels.  The existing expires_at entry is unchanged and is\n      reused type-agnostically on the risk-acceptance receipt.  Two\n      false-attestation guards govern the type:\n      risk_acceptance_missing_required_field (rejects a risk-acceptance\n      receipt lacking approver_id or acceptance_reason) and\n      risk_snapshot_numeric_requires_snapshot_source (rejects any\n      populated epss, cvss, cvss_vector, or kev_listed without\n      snapshot_source).\n\n   *  Section 5.4 adds a one-line note that an rfc3161 anchor MAY be\n      obtained from a Time-Stamping Authority operated independently of\n      the issuer (a public RFC 3161 TSA under a distinct trust root), in\n      addition to or instead of an issuer-operated TSA.  The\n      independently operated TSA is the genuinely independent witness of\n      Section 10.6 and is one of the N witnesses of witness_policy,\n      never the sole anchor.  The baseline single-anchor requirement of\n      Section 5.4 is unchanged.\n\n   *  Section 11.2 Initial registry contents are extended with\n      protectmcp:lifecycle:code_authorship, a registered sub-namespace\n      under protectmcp:lifecycle recording a producer&#x27;s assertion that\n      an agent-authored change to a code repository existed at a point\n      in time.  It signs through the no-policy lifecycle path of\n      Section 5.2 (decision=observation, no policy evaluated), so the\n      false-attestation honesty rule is preserved: no policy result is\n      asserted, and the receipt proves only that the change existed, was\n      key-authored, and was chained at the receipt time.\n\n   *  New normative Section 5.11 defines eight signed-payload extension\n      fields carried on a code-authorship receipt, repo_ref and\n      commit_sha REQUIRED on the type and the rest OPTIONAL: repo_ref,\n      commit_sha, base_sha, change_digest, change_ref,\n      change_approval_ref, change_class, and the authored_by object\n      (agent_id, model_id, model_version, tool, attestation_source).\n      The scope-honesty labels are normative: the issuing platform NEVER\n      clones the repository, re-diffs the change, verifies the code, or\n      verifies the model; change_digest is a shape-only existence proof\n      of the change at issued_at never re-diffed; change_class is drawn\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 87]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      from the closed vocabulary read, write, delete, execute, deploy;\n      and authored_by model fields (model_id, model_version) require\n      attestation_source.  Authorization reuses the server-built\n      authorized_under_mandate field of Section 5.9; no separate\n      authorization field is defined.\n\n   *  Section 11.1 Initial registry contents are extended with the eight\n      new code-authorship fields (repo_ref, commit_sha, base_sha,\n      change_digest, change_ref, change_approval_ref, change_class,\n      authored_by), each labelled Scope: signed-payload.  The\n      authored_by_model_requires_attestation_source guard rejects a\n      populated model_id or model_version without attestation_source; a\n      change_class value outside the closed vocabulary is rejected at\n      signing time as an out-of-vocabulary value.\n\n   *  Section 12 is extended with a cite of [IN-TOTO-ATTESTATION] (the\n      in-toto Attestation Framework, parallel work on the build-and-\n      provenance surface) and [DRAFT-NELSON-DELEGATION] (Agent\n      Delegation Receipts, parallel work on the delegation-and-\n      authorization surface), both framed as complementary to the code-\n      authorship layer.  New informative references:\n      [IN-TOTO-ATTESTATION], [DRAFT-NELSON-DELEGATION].\n\n   *  The abstract and the Section 5.5 overview are extended to\n      enumerate the risk-acceptance and code-authorship groupings.  No\n      changes to the signing algorithms, the canonicalization\n      transformation (JCS), the hash-chain scope, the anchor type set,\n      the retention floors of Sections 5 and 6, the Audit Pack manifest\n      fields, or the verifier reporting fields.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 88]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  The deployed guard tokens that the issuing platform publishes in\n      its /.well-known/governance.json wire-vocabulary surface are now\n      named verbatim where the body defines each behaviour, completing\n      the parity that Section 5.10 and Section 5.11 began:\n      witness_policy_required_exceeds_confirmed (Section 5.4),\n      false_attestation_guard and\n      configuration_change_missing_config_manifest_digest and\n      result_bound_missing_result_digest (Section 11.2),\n      false_mandate_attestation_guard and\n      false_control_attestation_guard (Section 5.9), and the code-\n      authorship guards\n      code_authorship_fields_require_code_authorship_receipt,\n      code_authorship_requires_compliance_mode,\n      code_authorship_requires_no_policy_decision,\n      code_authorship_missing_required_field, and\n      change_digest_not_sha256_wire_form (Section 5.11). repo_ref and\n      commit_sha are labelled REQUIRED on the code-authorship receipt\n      type, matching the deployed validator that rejects a receipt of\n      the type lacking either field.\n\n   *  Section 5.10 names the risk_acceptance_self_approval_guard: the\n      reference cloud implementation refuses at signing time a risk-\n      acceptance receipt signed under compliance_mode whose initiator_id\n      string-equals approver_id, because a receipt asserting an approval\n      flow approved by its own initiator is incoherent on its face.  The\n      guard is a string-incoherence check (case-sensitive exact match),\n      not identity resolution; it fires only when both fields are\n      present, and an absent field never fires it.  The approver_id and\n      initiator_id prose and their Section 11.1 registry entries are\n      updated to name the guard, matching the deployed validator and the\n      published /.well-known/governance.json labels.\n\n   *  Deployed-vocabulary parity: the OPTIONAL informational member of\n      an anchors entry carrying the Bitcoin block hash of an upgraded\n      OpenTimestamps commitment is renamed to anchor_block_hash in\n      Section 5.4, in the anchors entry of Section 11.1, and in the\n      Appendix &quot;Changes in draft -04&quot; recap; the -05 member name tied\n      the member to the Bitcoin chain by name, and the new name matches\n      the wire key the reference implementation emits.\n\n   *  The tool_fingerprint wire form in Section 5.7, its Section 11.1\n      entry, and the Appendix &quot;Changes in draft -05&quot; recap are corrected\n      from sha256:&lt;64 hex&gt; to a bare string of 32 lowercase hexadecimal\n      characters, and the digest input is pinned to the JCS\n      canonicalization ([RFC8785]) of the JSON object {&quot;tool_name&quot;:\n      &lt;tool name&gt;, &quot;schema&quot;: &lt;declared input schema&gt;}, matching the\n      deployed producer and the deployed validator that rejects any\n      other form.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 89]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  The nonce SHOULD-form in Section 5.7 and its Section 11.1 entry\n      are corrected to the lowercase hexadecimal encoding of 12 random\n      bytes (24 hexadecimal characters), the form the deployed producer\n      emits; the -05 text named base64url and UUID/ULID forms the\n      deployed producer does not use.\n\n   *  The informational payload-capture manifest attribute recommended\n      by the -05 text of the Appendix &quot;Appendix - Capture Topologies for\n      Compliance Receipt Emission&quot; appendix (the eBPF observer and\n      passive-telemetry entries) is struck; the deployed Audit Pack\n      manifest builder carries no such attribute.\n\n   *  The mcp_proxy entry of Appendix &quot;Appendix - Capture Topologies for\n      Compliance Receipt Emission&quot; is rewritten to name the manifest\n      attributes the deployed Audit Pack builder carries (action_type\n      and, where declared, capture_topology) in place of an invoked-\n      method attribute the builder does not emit, and the entry&#x27;s\n      reference-implementation hint is dropped: the entry defines the\n      topology vocabulary only.\n\n   *  Normative tightening in Section 5.6.3: where expect_ack_from is\n      present, a mismatch between the acknowledging receipt&#x27;s\n      signature.kid and the declared identifier MUST cause the\n      acknowledging receipt to be reported non-conformant, exactly as an\n      envelope_hash digest mismatch is.  This replaces the -05 rule\n      under which the check was a SHOULD and a mismatch was reported as\n      an axis flag; the check now fails closed, matching the deployed\n      verifier.  The expect_ack_from field definition in Section 5.6.1\n      is updated to point at the tightened rule.\n\n   *  Section 10.3 adds the JWK Set publication rule for revoked keys:\n      where the Deployer publishes verification keys through a well-\n      known JWK Set endpoint, a revoked key remains published and its\n      entry carries a revoked_at timestamp, so a verifier can pass a\n      receipt issued before that instant and fail one issued at or after\n      it, matching the deployed endpoint.\n\nChanges in draft -05\n\n   Build-provenance and result-bound extension revision.  This revision\n   registers vocabulary that the reference cloud implementation, the\n   asqav-sdk Python and TypeScript halves, and the published /.well-\n   known/governance.json already emit and accept, bringing the IETF\n   surface back into parity with deployed reality.\n\n   *  New normative Section 5.7 defines six OPTIONAL signed-payload\n      extension fields: result_digest (object of the upstream\n      payload_digest shape carrying the downstream Action&#x27;s result-body\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 90]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      SHA-256), expires_at (ISO 8601 staleness bound additive to the\n      300-second forward-skew rule of Section 5.1.2), nonce (producer-\n      unique replay-resistance value), tool_fingerprint (truncated tool-\n      declaration SHA-256), config_manifest_digest (operator-defined\n      configuration manifest SHA-256), and cve_inventory_digest (CVE\n      inventory SHA-256 in effect at signing time).  The six fields are\n      type-agnostic; result_digest typically appears on receipts of the\n      newly registered protectmcp:observation:result_bound namespace.\n\n   *  New normative Section 5.8 defines a four-tuple of OPTIONAL signed-\n      payload extension fields binding the executing build to the\n      receipt: executable_hash (OCI image manifest digest for container\n      producers, on-disk SHA-256 for non-container executables),\n      sbom_digest (CycloneDX or SPDX SBOM SHA-256),\n      slsa_provenance_pointer (https URL to the SLSA Provenance v1.0 in-\n      toto attestation envelope), and supply_chain_pointer (https URL to\n      an in-toto, Sigstore, or Rekor transparency-log entry covering the\n      build).  The four fields form a layered subsumption set; an\n      implementation MAY emit any subset.\n\n   *  Section 11.1 Initial registry contents are extended with the ten\n      new fields registered in this revision (result_digest, expires_at,\n      nonce, tool_fingerprint, config_manifest_digest,\n      cve_inventory_digest, executable_hash, sbom_digest,\n      slsa_provenance_pointer, supply_chain_pointer), each labelled\n      Scope: signed-payload.  The four pre-existing entries (risk_class,\n      incident_class, counterparty_binding, anchors) are unchanged.\n\n   *  Section 11.2 Initial registry contents are extended with\n      protectmcp:observation (a passive-telemetry receipt emitted under\n      one of the capture topologies of Appendix &quot;Appendix - Capture\n      Topologies for Compliance Receipt Emission&quot; when the originating\n      application could not call the SDK directly) and\n      protectmcp:observation:result_bound (a follow-up sub-namespace\n      under protectmcp:observation for receipts carrying result_digest\n      bindings to an originating protectmcp:decision receipt via\n      action_ref).\n\n   *  The abstract and Section 1.1 overview text are rewritten to\n      enumerate the full extension-field set in five groupings\n      (regulatory classification; cross-agent envelope binding; per-\n      action freshness and integrity plus build-provenance; server-built\n      enforcement attestation; and self-declared threat-framework\n      taxonomy) rather than the legacy &quot;three extension fields&quot; phrasing\n      carried forward from -02 through -04.  The wire shape, the\n      signature scope, the canonicalization rule, the hash chain, and\n      the anchoring rules of earlier revisions are unchanged.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 91]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  New informative Section 12 cites parallel proposals under the\n      Independent Submissions and individual-draft surfaces of the IETF\n      Datatracker: [DRAFT-SHARIF-APKI] (certificate-based PKI for\n      autonomous AI agents), [DRAFT-SHARIF-AML] (cryptographic\n      attestation across the AI model lifecycle), and [PIPELOCK-ER2]\n      (the Pipelock EvidenceReceipt v2 alternative receipt-format\n      proposal, published as a public reference outside the IETF\n      process).  The section is non-exhaustive and is informative; this\n      profile places no normative constraint on a Compliance Receipt\n      implementation by virtue of citing parallel work.\n\n   *  New informative references: [DRAFT-SHARIF-APKI],\n      [DRAFT-SHARIF-AML], [PIPELOCK-ER2].\n\n   *  The four-tuple of build-provenance extensions in Section 5.8 is\n      the wire-level surface of the supply-chain notary use case;\n      Deployers under [EU-AI-ACT] Article 12 read together with [DORA]\n      Article 17, under 45 CFR 164.312(b) of [HIPAA-SECURITY], and under\n      [SEC-17A-4] read with [NYDFS-500] 23 NYCRR 500.6, SHOULD emit at\n      least executable_hash on every protectmcp:decision receipt.  The\n      wording is hortatory; the underlying regime obligations remain the\n      load-bearing requirement.\n\n   *  No changes to the signing algorithms, the canonicalization\n      transformation (JCS), the hash-chain scope corrected in\n      Appendix &quot;Changes in draft -04&quot;, the anchor type set, the\n      retention floors of Sections 5 and 6, the Audit Pack manifest\n      fields, or the verifier reporting fields.  A -04 receipt that\n      omits all ten new extensions is a conformant -05 receipt.  A -05\n      receipt that carries any of the ten new extensions remains a\n      conformant [ACTA-RECEIPTS] receipt under the upstream extension\n      semantics of Section 4.2 (verifiers that do not implement the\n      extension ignore it).\n\n   *  Threat-framework taxonomy subsumption.  New normative Section 5.12\n      defines, and Section 11.1 Initial registry contents are further\n      extended with, eight additional signed-payload entries that the\n      reference cloud implementation, both SDK halves, and the published\n      /.well-known/governance.json emit and accept: six caller-supplied\n      taxonomy lists (mitre_techniques, mitre_atlas, owasp_llm_top10,\n      nist_ai_rmf, iso_42001, eu_ai_act_articles), one caller-supplied\n      opaque token (rfc3161_timestamp, a base64-encoded TimeStampResp\n      per [RFC3161] preserved verbatim on the receipt for offline TSA\n      chain verification independent of any platform-issued anchors),\n      and one platform-set false-attestation guard boolean\n      (framework_mappings_self_declared, set to true by the issuing\n      platform whenever any of the six taxonomy lists is populated; a\n      producer-supplied false alongside a populated taxonomy field MUST\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 92]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      be overridden).  The taxonomy fields are not platform-verified;\n      the guard exists so verifiers can tell self-declared\n      classifications apart from platform-verified ones.  Pre-existing\n      entries are unchanged.  The total Initial registry contents now\n      enumerate twenty-two signed-payload-or-envelope-level fields.\n\n   *  Durable-anchoring quorum.  Section 5.4 is extended with a\n      normative OPTIONAL envelope-level witness_policy member (a sibling\n      of payload, signature, and anchors) that the reference cloud\n      implementation, both SDK halves, and the published /.well-known/\n      governance.json emit and accept. witness_policy declares an N-of-M\n      quorum over the anchors array: required (integer in [1, length of\n      witnesses]) and witnesses (non-empty array, distinct subset of\n      {rfc3161, opentimestamps}; Rekor and other transparency-log\n      pointers are rejected).  The quorum-met state (reported by the\n      reference implementation as witness_quorum_met) is reached only\n      when at least required distinct witness types each hold a\n      verifiable inclusion proof; a receipt MUST NOT claim durable\n      anchoring otherwise, extending the false-attestation principle to\n      the anchoring quorum.  Section 11.1 Initial registry contents are\n      extended with the witness_policy entry, labelled Scope: envelope-\n      level, bringing the total to twenty-three signed-payload-or-\n      envelope-level fields.  The baseline single-anchor requirement of\n      Section 5.4 is unchanged and continues to apply to every\n      Compliance Receipt regardless of whether witness_policy is\n      present.\n\n   *  Section 12 is extended with a cite of [RFC9943] (IETF SCITT\n      architecture) and [RFC6962] (Certificate Transparency Merkle\n      inclusion) as the canonical inclusion-proof prior art that\n      witness_policy generalizes; SCITT is framed as complementary (a\n      SCITT Transparent Statement can carry a Compliance Receipt as its\n      payload), closing the append-only-log gap deferred under\n      Section 10.12.  New informative references: [RFC9943], [RFC6962].\n\n   *  Enforcement-attestation extensions.  New normative Section 5.9\n      defines two OPTIONAL server-built signed-payload extension fields\n      that the reference cloud implementation and the published /.well-\n      known/governance.json emit: authorized_under_mandate (an object\n      recording a self-declared authorizing mandate with mandate_id,\n      issuer_id, a scope_digest over the mandate&#x27;s authorized-action-\n      types scope, and a verified boolean whose true value asserts self-\n      declared issuer authority, never platform-verified third-party\n      authorization; the binding is evaluated against the issuing\n      platform&#x27;s clock and scoped to action types, with no value cap and\n      no counterparty restriction) and controls_evaluated (a server-\n      built enumeration of which enforcement controls genuinely fired on\n      the sign, drawn from the closed key set emergency_halt,\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 93]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      delegation_scope, quorum, mandate, policy, content_scan, result,\n      where an absent key means the control did not run rather than that\n      it passed silently).  Both fields are server-built, never request\n      inputs; a caller-supplied value is dropped before signing.  Each\n      field carries a false-attestation guard that rejects a present-\n      but-malformed attestation at signing time.  Section 11.1 Initial\n      registry contents are extended with the two new entries, each\n      labelled Scope: signed-payload, bringing the total to twenty-five\n      signed-payload-or-envelope-level fields.\n\n   *  Section 12 is further extended with a cite of [A2A] (the\n      Agent2Agent protocol, a Linux Foundation project with an Agent\n      Card, an extension mechanism, and an Agent Card JSON Web\n      Signature), [A2A-IDF] (the Agent Identity Verification and Trust\n      Framework proposal under the A2A contribution process, framed as\n      the identity-anchoring layer beneath this profile&#x27;s per-action\n      receipts), and [DRAFT-HOPLEY-X402] (the closest parallel receipt\n      format: a JCS-canonicalized, SHA-256 hash-chained Compliance\n      Receipt with an ALLOW, REFER, or DENY admission verdict bound to a\n      payment mandate under the x402 substrate).  This profile is framed\n      as the broader superset of the x402 format: general agent-action\n      receipts across regulatory regimes rather than payment screening\n      alone, neutral third-party signing rather than self-signing by the\n      screening party, organization-wide control attestation via\n      controls_evaluated rather than a single admission verdict, and ML-\n      DSA-65 post-quantum signing.  New informative references: [A2A],\n      [A2A-IDF], [DRAFT-HOPLEY-X402].\n\nChanges in draft -04\n\n   Cross-agent integrity revision.  The threat case is a compromised\n   intermediary that swaps payload bytes between two honest agents while\n   both per-agent hash chains validate independently.\n\n   *  Section 5.3 digest-scope correction.  The chain-link digest scope\n      is the canonical signing-input bytes (the JCS-canonical\n      serialization of the predecessor&#x27;s signed payload object, the same\n      bytes the predecessor&#x27;s signature covers), NOT the envelope object\n      that additionally includes the signature or anchors top-level\n      keys.  The earlier -04 text that said the digest covers &quot;the\n      entire signed receipt object including the signature field&quot; was a\n      Security Considerations over-reach that did not match the\n      reference implementation and would have required every deployed\n      chain to be re-issued.  The corrected scope matches both the\n      reference implementation and the upstream [ACTA-RECEIPTS]\n      Section 5.7 rule.  The security rationale is updated accordingly:\n      the chain binds the signed-over content of the predecessor\n      (recomputable offline from the predecessor&#x27;s payload alone), and\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 94]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      cross-agent envelope-including-signature integrity is delegated to\n      counterparty_binding (Section 5.6), which IS at the envelope-\n      including-signature scope precisely because the peer signature is\n      the load-bearing artefact in that case.  Section 9.1 is updated to\n      match.\n\n   *  New informative Section 10.2 in Security Considerations\n      acknowledges that the single-linear per-agent chain rule of\n      Section 5.3 creates a per-issuer serialization bottleneck: a\n      denial-of-service against the predecessor pointer (database lock,\n      network partition, slow IO) bounds chain throughput.  Mitigation:\n      issuers SHOULD use bounded predecessor-lookup timeouts, emit a\n      structured protectmcp:lifecycle audit event with a stable\n      chain_emission_blocked reason code when the timeout fires, and\n      document a chain-head recovery procedure for crashed emitters.\n      Parallel per-issuer throughput beyond a single linear chain\n      remains the existing distinct-issuer_id escape hatch.\n\n   *  Section 10.12 residual list is rewritten for honesty.  The M+B\n      collusion residual is downgraded from &quot;M+B alone defeats\n      counterparty_binding&quot; to &quot;M+B+(A&#x27;s-storage compromise or\n      unavailability) defeats counterparty_binding&quot;: the audit-time\n      verifier resolves receipt_ref to A&#x27;s retained envelope and\n      recomputes the digest, so an honest reachable A&#x27;s storage defeats\n      M+B collusion alone.  A new M+A collusion residual is added: M and\n      A coordinating to produce a fraudulent A-signed envelope is\n      fundamentally outside the receipt model&#x27;s threat surface because\n      every cryptographic invariant holds; mitigation is separation of\n      duties between issuer and intermediary plus anchor evidence on\n      independent witnesses under different trust roots.\n\n   *  The worked-example appendix carries an explicit disclaimer that\n      the keys are shown in human-readable order (not JCS-canonical\n      lexicographic order), the sig/value/hash bytes are deterministic\n      placeholders, and implementations MUST NOT replay or trust the\n      example as a real receipt.  The disclaimer states the JCS-\n      canonical key ordering that an implementer would derive on the\n      wire.\n\n   *  Section 5.6.1 envelope_hash rule is tightened on three axes.\n      First, the base64 alphabet is no longer ambiguous: standard base64\n      per [RFC4648] Section 4 on emission, OR base64url per Section 5\n      where the transport requires URL-safe encoding, and verifiers MUST\n      accept both and normalise before comparison.  Second, JSON-framed\n      digest scope is now normative and mandatory-to-implement: the JCS-\n      canonical UTF-8 byte sequence of A&#x27;s signed envelope JSON object\n      per [RFC8785], where the envelope is the three-key object\n      {&quot;payload&quot;, &quot;signature&quot;, &quot;anchors&quot;} with anchors OPTIONAL and B\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 95]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      forbidden from re-canonicalizing or stripping any of the three\n      keys before computing the digest.  Third, cross-framing\n      equivalence is explicitly addressed: JCS-canonical JSON, COSE\n      deterministic encoding, and JWS Compact Serialization with JCS-\n      canonical payload produce different byte sequences from the same\n      semantic payload-and-signature, so envelope_hash is framing-\n      specific; a transcoding intermediary that re-frames A&#x27;s envelope\n      MUST be treated as a tampering event, and verifiers MUST NOT\n      reframe before recomputing.\n\n   *  Section 11.1 entries now carry an explicit Scope tag (signed-\n      payload for risk_class, incident_class, counterparty_binding;\n      envelope-level for anchors).  The CWT claim request for\n      counterparty_binding now proposes allocation from the IANA First\n      Come First Served range of [RFC8392] Section 9.1 rather than the\n      unqualified &quot;unassigned integer range&quot; placeholder, so as not to\n      consume Expert Review or Standards Action space.\n\n   *  The [CIRCIA] reference is corrected to cite the statutory\n      authority (Public Law 117-103 Division Y, codified at 6 U.S.C. 681\n      et seq.) rather than CISA&#x27;s general topic page; the March 15, 2022\n      enactment date is retained, and the pending NPRM at 89 FR 23644\n      (April 4, 2024) is named in the reference annotation.\n\n   *  New normative Section 4.6 (Section 5.6) defines the\n      counterparty_binding extension field, an in-payload object\n      carrying a base64-encoded SHA-256 digest (envelope_hash) over the\n      full signed envelope of a peer agent (including the peer&#x27;s\n      signature bytes), a resolvable opaque receipt_ref, an OPTIONAL\n      expect_ack_from identifier (kid/issuer_id of the expected\n      acknowledger), and an OPTIONAL operational transport_label.\n      Section 4.6.3 (Section 5.6.3) defines the MUST-reject rule when\n      the bound digest does not resolve, the storage obligation on the\n      Audit Pack production layer, and the pairwise default for N-\n      greater-than-2 chains.\n\n   *  The anchors top-level array schema is now defined inline in\n      Section 5.4: each entry MUST carry type and value (base64-encoded\n      anchor token bytes), with OPTIONAL informational status (anchored\n      / pending / failed) and anchor_block_hash (Bitcoin block hash for\n      upgraded OpenTimestamps entries).  The IANA Extension Fields\n      Registry entry for anchors is updated to reflect the four-member\n      schema.\n\n   *  The IANA Type Namespaces Registry initial contents now include the\n      registered sub-namespace protectmcp:lifecycle:configuration_change\n      emitted by the reference cloud implementation for configuration-\n      change receipts under Section 6.1.1.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 96]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  CIRCIA retention floor (Section 7.7.2) is rewritten to measure two\n      years from the submission of the most recently required CIRCIA\n      report per proposed Section 226.13(c) of the CIRCIA NPRM at 89 FR\n      23644 (April 4, 2024), not from the date of the underlying Action.\n\n   *  HIPAA retention (Section 7.4.2) is rewritten to cite 45 CFR\n      164.316(b)(2) with the six-year floor expressed as &quot;six years from\n      the date of creation or the date when last in effect, whichever is\n      later&quot; and the analogy basis for applying that floor to audit-log\n      content explicitly named.\n\n   *  EU AI Act Article 26(6) retention (Section 6.1.5) is rewritten to\n      express the six-month floor in calendar-arithmetic terms per\n      [ISO8601-2]; the 184-day day-count figure is retained as an\n      informative anchoring-interval floor, and the previously-endorsed\n      183-day pick is withdrawn.\n\n   *  Section 5.1.3 now states explicitly that issuer_id values MUST be\n      bare identifiers without a scheme prefix where the scheme is\n      unambiguous (LEI: 20-character alphanumeric self-identifying\n      form), aligning the spec with the reference cloud emitter under\n      the cloud-wire-conformance change.\n\n   *  New informative Section 9.11 (Section 10.12) documents the\n      residual threat that counterparty_binding partially mitigates (M\n      silently swaps bytes between honest A and B) and names three\n      operational mitigations Operators SHOULD adopt: multiple\n      independent anchor witnesses, regulator-driven side-by-side chain\n      comparison under SEC 17a-4 audit-trail workflow, and out-of-band M\n      relay logs.\n\n   *  Section 7 (Section 8) records two manifest-level fields shipped in\n      the reference Audit Pack producer: regime_mapping_disclaimer (when\n      per-receipt regime predicates derive from a producer-side mapping\n      the original signer did not co-sign) and stale_pending (per-entry\n      flag set when anchor evidence remains pending after the bound of\n      Section 5.4).\n\n   *  Section 8.3 (Section 9.3) replaces the prior one-paragraph clause\n      with five SHOULD-emit per-axis fields: regimes_satisfied,\n      anchor_valid_ots, anchor_valid_rfc3161, policy_digest_resolved,\n      duplicate_emission_candidate.\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 97]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   *  New informative Section 9.9 (Section 10.10) enumerates the\n      residuals counterparty_binding does not solve.  New informative\n      Section 9.10 (Section 10.11) records channel-level operator\n      guidance citing [RFC8446], [RFC9266], [RFC5705], and [RFC9421] and\n      disclaims transport-layer security as a substitute for\n      application-layer byte equality.\n\n   *  Section 11 (Section 11) adds counterparty_binding to the Extension\n      Fields Registry and requests registration as a CWT claim per\n      [RFC8392].\n\n   *  New normative references: [RFC9052], [RFC8949], [RFC7515],\n      [RFC8392].  New informative references for channel-level guidance\n      only: [RFC8446], [RFC5705], [RFC9266], [RFC9421].\n\n   *  New normative Section 4 bounds the inputs to which the inherited\n      JCS rule of [RFC8785] is applied: IEEE-754 floating-point numbers\n      MUST NOT appear in the digest-covered canonical form (callers\n      SHOULD serialize numerics as JSON strings or as integer-rational\n      pairs in the IEEE-754 safe range), and tool-version-specific\n      semantic equivalence (SQL case folding, path normalization,\n      locale-aware string collation, numeric tolerance, URL percent-\n      encoding choices) is OUT OF SCOPE for the chain layer.  The chain\n      answers byte equality for one agent identity at one wall-clock\n      time only; semantic equivalence belongs in the policy_digest\n      artefact and the Audit Pack manifest.\n\n   *  Section 5.3 now states explicitly that each issuer MUST maintain a\n      single linear per-agent chain and MUST serialize concurrent in-\n      agent emission (parallel tool calls, thread-pool fan-out) through\n      a single predecessor pointer in emission order.  Parallel sub-\n      chains within one agent identity (a per-receipt chain_id\n      discriminator) are NOT defined by this profile; an issuer that\n      requires parallel sub-chains MUST express each parallel path as a\n      distinct agent identity with its own issuer_id, signing key, and\n      chain rooted at the all-zero genesis value.\n\n   *  Wire tightenings introduced in this revision (additive at the\n      message level, restrictive at the verifier level): (a) the anchors\n      entry value member is now REQUIRED where the upstream profile\n      leaves it OPTIONAL; (b) issuer chains are normatively single-\n      linear per issuer (no parallel chain_id discriminator), so a -03\n      producer that ran parallel sub-chains under one issuer_id emits\n      non-conformant -04 receipts; and (c) IEEE-754 floating-point\n      numbers MUST NOT appear in the canonical form covered by SHA-256\n      digests.  A -03 receipt with a missing anchor value, parallel sub-\n      chains, or a digest-covered float is not a conformant -04 receipt.\n      Implementations targeting -04 SHOULD re-emit -03 receipts under\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 98]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      -04 emission rules.  The signing algorithms, the canonicalization\n      transformation itself (JCS), the anchor types, and the regime\n      bindings of Sections 5 and 6 are unchanged.  A -03 verifier\n      remains conformant for receipts that do not carry\n      counterparty_binding; -03 verifiers encountering the field will\n      ignore it per [ACTA-RECEIPTS] Section 4.2 extension semantics.\n\n   *  Rationale paragraph of Section 4 is rewritten to ground the\n      IEEE-754 float ban on documented divergence between mainstream\n      JSON serializers (Python json.dumps, Go encoding/json, Java\n      Jackson) and the ECMA-262 Number-to-String algorithm referenced by\n      Section 3.2.2.3 of [RFC8785], rather than on a misstated claim\n      that JCS itself fails to specify float serialization outside the\n      safe integer range.  The Unicode-normalization bullet of Section 4\n      is corrected to acknowledge that Section 3.1 of [RFC8785] mandates\n      as-is preservation of Unicode strings (no NFC default).\n\n   *  Security Considerations Section 10.1 is corrected to reflect the\n      tiered DORA deadlines: the four-hour initial-notice clock (with\n      72-hour intermediate-report and one-month final-report bounds) per\n      DORA Article 17 and the RTS in [REG-2025-301], rather than a flat\n      72-hour reporting deadline.  New informative reference\n      [REG-2025-301] added.\n\n   *  The Annex II field 3.23 (Type of the incident) citation in\n      Section 5.5 and the incident_class initial-registry entry of\n      Section 11.1 no longer reproduces the enumeration verbatim;\n      verifiers MUST resolve the canonical values from [REG-2025-302]\n      directly.\n\n   *  Section 5.2 extends the wire decision vocabulary with observation,\n      a fourth value reserved to type protectmcp:lifecycle for receipts\n      emitted when an Action was signed without any policy evaluation.\n      The new value is the regulator-honest alternative to a misleading\n      allow on the &quot;no policy matched&quot; path; emitters MUST refuse to\n      issue a protectmcp:decision receipt that carries observation, and\n      verifiers MUST reject the combination.  The vocabulary-namespace\n      registry entry for protectmcp:decision in Section 11.2 is updated\n      to reflect that observation is reserved to protectmcp:lifecycle.\n\n   *  New informative appendix (Appendix &quot;Appendix - Capture Topologies\n      for Compliance Receipt Emission&quot;) catalogues six capture\n      topologies an operator can use to emit conformant Compliance\n      Receipts in environments where the originating application code\n      cannot be modified to call the receipt-emitting SDK directly:\n      in_process_sdk, network_proxy, browser_extension, ebpf_observer,\n      mcp_proxy, passive_telemetry.  The appendix is non-normative; the\n      capture_topology attribute it defines is OPTIONAL at the wire\n\n<span>Gomes Marques            Expires 21 January 2027               [Page 99]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n      layer and, where present, lives in the Audit Pack manifest entry\n      rather than inside the signed payload object, so the topology\n      declaration does not alter signed bytes.  The six values form a\n      closed initial vocabulary at this revision;\n      Appendix &quot;capture_topology Vocabulary and Considerations for a\n      Future IANA Registry&quot; sketches a future &quot;Compliance Receipt\n      Capture Topologies&quot; IANA registry under the &quot;Compliance Receipts&quot;\n      registry group with Specification Required registration policy per\n      [RFC8126] for a follow-on revision, and names reserved-value\n      avoidance guidance for early extenders.\n\nChanges in draft -03\n\n   Multi-jurisdiction consolidation.  The European Union profile\n   (formerly the only profile in -02) and the United States profile\n   (formerly the separate draft draft-marques-asqav-us-compliance-\n   receipts-00) are merged into a single document with two regional\n   bindings sections: Section 5 (European Union) and Section 6 (United\n   States).  Sections 1 through 4 (Introduction, Conventions,\n   Relationship to upstream, Receipt Field Profile) and Sections 7\n   through 11 (Audit Pack, Verifier, Security, IANA, Acknowledgements)\n   are shared across both regimes.  Conventions terms that differ across\n   regimes are now disambiguated with regime suffixes (Deployer (EU AI\n   Act) vs Deployer (Colorado AI Act); High-Risk AI System (EU AI Act)\n   vs High-Risk AI System (Colorado AI Act)).  The incident_class\n   extension field now lists every applicable canonical category in one\n   place: ICT-related incident under [DORA] with the Annex II reporting\n   enumeration, Cybersecurity Event/Incident under [NYDFS-500], Covered\n   Cyber Incident under [CIRCIA], and security incident under\n   [HIPAA-SECURITY].  The issuer_id rule now permits EIN or CIK as\n   alternatives to LEI for US Deployers without an allocated LEI.  The\n   Tamper Resistance security consideration extends the one-hour\n   anchoring SHOULD to NYDFS 500.17 and CIRCIA in addition to DORA\n   Article 17.  The Privacy security consideration extends to GDPR for\n   EU data subjects and CCPA / VCDPA / HIPAA Privacy Rule for US data\n   subjects.  The Worked Example notes that the wire shape applies\n   identically to US bindings, with only the issuer_id identifier and\n   the vocabularies differing.  IANA registries are unchanged; the\n   Initial registry contents for incident_class now describe the multi-\n   regime category set.  No changes to the wire format, the field\n   profile, the hash chain, the anchoring rules, the Audit Pack\n   contents, or the Verifier checks.  Section 4.1.6 (sandbox_state) and\n   Section 4.5 (risk_class) corrected to attribute the EU risk-\n   management documentation requirement to Article 9 of [EU-AI-ACT]\n   (Provider&#x27;s risk management system) rather than Article 26, with\n   Article 26(1) cited as the deployer&#x27;s instructions-for-use obligation\n   that links to the Provider&#x27;s Article 9 documentation.  Section 6.5.3\n   (nydfs-retention) corrected to a single-tier five-year floor under 23\n\n<span>Gomes Marques            Expires 21 January 2027              [Page 100]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   NYCRR 500.6(b) (verified verbatim against LII Cornell); the prior\n   tiered 5-year/3-year split (claimed against the DFS Second Amendment)\n   was incorrect because the Second Amendment does not amend\n   Section 500.6, leaving the 2017 single-tier text in force.  The\n   1096-day three-year audit-trail floor previously stated for NYDFS is\n   removed.\n\nChanges in draft -02\n\n   Submission-ready EU-only profile.  Wire-shape alignment with upstream\n   [ACTA-RECEIPTS] (payload/signature/anchors envelope; payload_digest\n   object form; tool_name REQUIRED for protectmcp:decision; issuer_id\n   equals kid).  EU AI Act and DORA bindings authored against Official\n   Journal text.  Anchor MUST (at least one of RFC 3161 or\n   OpenTimestamps); both RECOMMENDED; 7-day OpenTimestamps upgrade\n   deadline profile-imposed.  Six-month AI Act floor expressed as 184\n   days; DORA-bound default expressed as 1827 days.  IANA registries\n   created.\n\nChanges in draft -01\n\n   Initial wire-shape alignment with upstream and addition of dual-\n   anchor, hash-chain, retention, and DORA classification bindings.\n   Subsequent revisions superseded the specific values introduced here.\n\nChanges in draft -00\n\n   Initial version.  Defines a profile of [ACTA-RECEIPTS] that binds\n   receipt fields to EU AI Act Article 12, EU AI Act Article 26, and\n   DORA Article 17.\n\n<span>Appendix - Capture Topologies for Compliance Receipt Emission</span>\n\n   This appendix is informational and non-normative.  It catalogues six\n   capture topologies an operator can use to emit conformant Compliance\n   Receipts in environments where the originating application code\n   cannot be modified to call the receipt-emitting SDK directly.  The\n   topologies are listed in order of payload fidelity, from highest (in-\n   process SDK, full payload digest) to lowest (passive telemetry, post-\n   hoc log ingestion only).  All six emit receipts that satisfy the wire\n   profile of Sections 3 and 4; they differ in trust boundary, payload\n   coverage, and the operational identity that the receipt binds.  The\n   intent is to give an operator vocabulary for declaring which topology\n   produced a given receipt, so that a verifier or auditor can interpret\n   the receipt&#x27;s evidentiary weight without re-deriving the architecture\n   from out-of-band documentation.\n\n<span>Gomes Marques            Expires 21 January 2027              [Page 101]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   An operator MAY declare the producing topology by including a\n   capture_topology attribute in the Audit Pack manifest entry for the\n   receipt.  The attribute is informational at the wire layer and\n   OPTIONAL.  The vocabulary defined below is closed for the topologies\n   catalogued in this appendix; future revisions or third-party profiles\n   MAY extend it through the future-IANA-registry mechanism noted at the\n   end of this appendix.\n\nIn-Process SDK\n\n   The originating application links the receipt-emitting SDK directly\n   and calls it inline with the action being recorded.  This is the\n   baseline pattern [ACTA-RECEIPTS] and Sections 3 and 4 of this\n   document are written against.  The receipt carries a full\n   payload_digest covering the action&#x27;s request bytes; the SDK has\n   direct access to the application&#x27;s principal identity, the policy\n   decision, and the request body.  Vocabulary value: in_process_sdk.\n   Trust boundary: the application process itself; the SDK runs inside\n   the application&#x27;s memory space and inherits its principal.  Threat-\n   model note: captures the full request and response payloads, the\n   deciding principal, and the policy context; does NOT capture out-of-\n   process side effects or actions taken by sibling processes that do\n   not link the SDK.  Reference implementation hint: the Asqav Python\n   and TypeScript SDKs published under the asqav-sdk umbrella implement\n   this pattern; an operator MAY substitute any other conformant\n   [ACTA-RECEIPTS] implementation.\n\nNetwork-Layer Egress Proxy\n\n   A customer-owned reverse proxy or egress gateway (Envoy, NGINX, or an\n   equivalent forward proxy) sits in the network path between the\n   application and the downstream LLM provider.  The proxy tees the\n   request to a co-located Compliance Signer process, which receives the\n   request bytes, applies the policy evaluation, and emits a receipt via\n   a signer RPC.  A DNS-rewrite on-ramp (CoreDNS rewriting the LLM\n   hostname to the proxy address) or a Server Name Indication (SNI)\n   router (SNIProxy at Layer 4) MAY be used to force application traffic\n   onto the proxy without per-application configuration.  Vocabulary\n   value: network_proxy.  Trust boundary: the customer&#x27;s network egress;\n   the proxy and signer run under the customer&#x27;s operational control,\n   and the receipt is signed by a key the customer&#x27;s signer holds.\n   Threat-model note: captures the request and response bytes that\n   traverse the proxy and the network-layer principal identity (source\n   IP, mTLS client cert if present); does NOT capture traffic that\n   bypasses the proxy (direct outbound from a non-routed host, DNS-over-\n   HTTPS to a hard-coded resolver, or TLS connections to certificate-\n   pinned endpoints that the customer&#x27;s enterprise CA cannot inspect).\n   The receipt&#x27;s issuer_id binds the customer&#x27;s signer, not the\n\n<span>Gomes Marques            Expires 21 January 2027              [Page 102]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   originating application; the application&#x27;s identity, where captured,\n   appears as an attribute resolved through the Audit Pack manifest.\n   Reference implementation hint: CoreDNS for the DNS on-ramp, SNIProxy\n   by dlundquist for the SNI router, and Envoy for the Layer-7 reverse\n   proxy plane; none of these are normative requirements.\n\nBrowser Extension\n\n   A managed-browser Manifest V3 (MV3) extension installed on employee\n   workstations via the enterprise Mobile Device Management (MDM) system\n   intercepts fetch, XMLHttpRequest, and EventSource requests to a\n   configured list of LLM hostnames.  The extension POSTs the\n   intercepted request and response bytes to a Compliance Signer\n   endpoint, which emits the receipt.  For LLM hosts that pin their TLS\n   certificates, the customer&#x27;s enterprise root Certificate Authority\n   (CA) MUST be installed in the browser trust store via MDM so that the\n   extension&#x27;s content-script interception can observe decrypted bytes.\n   Vocabulary value: browser_extension.  Trust boundary: the managed\n   browser process on the employee workstation; the extension runs under\n   the browser&#x27;s sandbox and the employee&#x27;s interactive session.\n   Threat-model note: captures the full request and response payload for\n   LLM calls initiated from the browser by the human user, and binds the\n   receipt to the browser&#x27;s principal identity (the user&#x27;s enterprise\n   single-sign-on subject, where the extension can read it).  Does NOT\n   capture LLM calls made by native desktop applications, server-side\n   daemons, or browsers without the extension installed; does NOT\n   capture traffic in incognito or private-window modes unless the\n   extension is explicitly authorised for those contexts.  Reference\n   implementation hint: the open-source Chrome MV3 extension scaffolding\n   published by Google under the chrome-extensions-samples repository is\n   a useful starting point; the customer&#x27;s signer endpoint is the Asqav\n   signer or any conformant [ACTA-RECEIPTS] implementation.\n\neBPF SNI Observer\n\n   A kernel-level extended Berkeley Packet Filter (eBPF) probe attached\n   to the host&#x27;s network stack observes outbound TLS ClientHello\n   records.  The probe extracts the SNI hostname, the JA3 client\n   fingerprint, the source and destination addresses and ports, and the\n   connection timestamp, and emits a lower-fidelity receipt that binds\n   the employee, the device, the wall-clock time, and the LLM host\n   without observing payload content.  Vocabulary value: ebpf_observer.\n   Trust boundary: the kernel of the host on which the probe runs; the\n   probe operates below the application&#x27;s user-space process and\n   observes traffic regardless of application configuration.  Threat-\n   model note: captures the existence and counterparty of an LLM call\n   (the &quot;did the call happen&quot; evidence class) and the device-and-\n   employee binding through host attestation; does NOT capture request\n\n<span>Gomes Marques            Expires 21 January 2027              [Page 103]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   or response bytes, the prompt content, the model parameters, or the\n   decision-relevant context.  Useful when payload capture is\n   operationally infeasible (TLS certificate pinning that the enterprise\n   CA cannot defeat, third-party SaaS that egresses outside the\n   customer&#x27;s proxy plane) but the operator still needs evidence that a\n   regulated LLM interaction occurred.  Reference implementation hint:\n   Inspektor Gadget and Tetragon both expose SNI and connection-metadata\n   events from eBPF probes; neither is a normative requirement.\n\nMCP Transparent Proxy\n\n   A transparent proxy sits in-path between a Model Context Protocol\n   (MCP) client and one or more downstream MCP servers, terminating the\n   client&#x27;s stdio, Server-Sent Events (SSE), or streamable-HTTP\n   transport on one side and re-establishing the same transport to each\n   downstream server on the other side.  The proxy observes every tools/\n   call and resources/read JSON-RPC method invocation, signs a receipt\n   at the moment the call is forwarded, and emits a second acknowledging\n   receipt carrying a counterparty_binding (see Section 5.6) at the\n   moment the downstream server&#x27;s response returns.  Both sides of the\n   call are therefore bound bilaterally, with the proxy&#x27;s signing key\n   serving as the integrity anchor for the pair.  Vocabulary value:\n   mcp_proxy.  The Audit Pack manifest entry for a proxy-captured\n   receipt carries the receipt&#x27;s action_type and, where declared, the\n   capture_topology attribute, so a verifier can filter proxy-captured\n   receipts without re-parsing payload bytes.  Trust boundary: the proxy\n   process and its signing key; the upstream MCP client and the\n   downstream MCP server are both treated as honest endpoints under the\n   threat model of Section 10.12, with the proxy itself being the named\n   intermediary whose tampering risk counterparty_binding mitigates.\n   Threat-model note: captures the full MCP request and response\n   payload, the method name, and the client and server principal\n   identities visible at the transport boundary; does NOT capture MCP\n   traffic that bypasses the proxy or that uses a transport the proxy\n   does not implement.  This entry defines the topology and its\n   vocabulary value only; no particular proxy implementation is\n   referenced or required.\n\nPassive Telemetry Ingestion\n\n   A passive ingestion pipeline reads structured records the originating\n   application or its runtime has already emitted (for example,\n   OpenTelemetry spans, application access logs, vendor-managed\n   observability exports, or batch CSV drops) and synthesises a\n   Compliance Receipt for each record after the fact.  The synthesiser\n   holds the signing key, applies the receipt-format wire profile, and\n   emits the receipt to the same downstream sink that the in-process SDK\n   and network-proxy paths feed.  Vocabulary value: passive_telemetry.\n\n<span>Gomes Marques            Expires 21 January 2027              [Page 104]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   Trust boundary: the telemetry pipeline operator&#x27;s signing key plus\n   the integrity of the upstream observability source; the receipt binds\n   the producer of the telemetry, not the originating application&#x27;s per-\n   request principal.  Threat-model note: captures whatever the upstream\n   telemetry source preserved (typically a subset of the action&#x27;s bytes\n   and metadata, often without request or response payload) plus the\n   wall-clock and counterparty identifiers visible in the telemetry\n   record; does NOT capture data the upstream source dropped, sampled\n   out, or never emitted, and inherits any tampering risk the upstream\n   source carries between emission and ingestion.  Useful when the in-\n   process SDK, network proxy, browser extension, eBPF observer, and MCP\n   proxy topologies are all operationally infeasible (legacy\n   applications without instrumentation hooks, third-party SaaS with\n   read-only export, fleet migrations where the producer has only logs\n   to work from) but the operator still needs a signed evidence artefact\n   tied to the historical action.  Reference implementation hint: any\n   OpenTelemetry collector exporter feeding a conformant receipt-\n   emitting signer; the upstream telemetry source is out of scope of\n   this profile.\n\ncapture_topology Vocabulary and Considerations for a Future IANA\nRegistry\n\n   The six values defined in this appendix (in_process_sdk,\n   network_proxy, browser_extension, ebpf_observer, mcp_proxy,\n   passive_telemetry) form the closed initial vocabulary for the\n   capture_topology attribute.  The attribute is OPTIONAL at the wire\n   layer and, where present, MUST appear in the Audit Pack manifest\n   entry for the receipt rather than inside the signed payload object,\n   so that the topology declaration is producer-side metadata that does\n   not alter the receipt&#x27;s signed bytes.  A verifier MUST NOT treat the\n   absence of a capture_topology attribute as a non-conformance\n   condition; absence simply means the producer did not declare a\n   topology.\n\n<span>Gomes Marques            Expires 21 January 2027              [Page 105]</span>\n<span>Internet-Draft         Compliance Receipts Profile             July 2026</span>\n\n   This document is an Independent Submission and does not request IANA\n   action for the capture_topology vocabulary at this revision.  A\n   future revision MAY request creation of a &quot;Compliance Receipt Capture\n   Topologies&quot; registry under the same &quot;Compliance Receipts&quot; registry\n   group described in Section 11, with the registration policy of\n   Specification Required per [RFC8126] and an initial set populated\n   from the six values above.  Until such a registry exists,\n   implementations that extend the vocabulary SHOULD document the new\n   value in a reference specification and SHOULD avoid colliding with\n   the six reserved values above.  The Designated Expert(s) for any\n   future registry SHOULD verify that a candidate value names a distinct\n   topology (a different trust boundary or a materially different\n   payload-fidelity class) rather than a variant of an existing one, and\n   that the candidate&#x27;s threat-model note states what is captured and\n   what is not, in the form used by the six entries in this appendix.\n\n<span>Author&#x27;s Address</span>\n\n   Joao Andre Gomes Marques\n   Asqav\n   Portugal\n   Email: info@asqav.com\n\n<span>Gomes Marques            Expires 21 January 2027              [Page 106]</span>\n</pre>\n                </div>\n            </div>\n            \n        \n    \n                    \n                </div>\n            </div>\n        </main>\n        \n            <footer class=\"col-md-12 col-sm-12 border-top mt-5 py-5 bg-light-subtle text-center position-sticky\">\n                <a href=\"https://www.ietf.org/\" class=\"p-3\">IETF</a>\n                <a href=\"https://www.ietf.org/iesg/\" class=\"p-3\">IESG</a>\n                <a href=\"https://www.iab.org/\" class=\"p-3\">IAB</a>\n                <a href=\"https://www.irtf.org/\" class=\"p-3\">IRTF</a>\n                <a href=\"https://www.ietf.org/llc/\" class=\"p-3 text-nowrap\">IETF LLC</a>\n                <a href=\"https://trustee.ietf.org/\" class=\"p-3 text-nowrap\">IETF Trust</a>\n                <a href=\"https://www.rfc-editor.org/\" class=\"p-3 text-nowrap\">RFC Editor</a>\n                <a href=\"https://www.iana.org/\" class=\"p-3\">IANA</a>\n                <a href=\"https://www.ietf.org/privacy-statement/\" class=\"p-3 text-nowrap\">Privacy Statement</a>\n                <div class=\"small text-body-secondary py-3\">\n                    \n                        <a class=\"mx-2\" href=\"/release/about\">About IETF Datatracker</a>\n                        <span class=\"mx-2\">\n                            \n                                <a href=\"https://github.com/ietf-tools/datatracker/releases/tag/12.69.0\">\n                            \n                            Version 12.69.0\n                            (release - 3cce873)\n                            \n                                </a>\n                            \n                        </span>\n                    \n                    <a class=\"mx-2\" href=\"https://status.ietf.org\" target=\"_blank\">System Status</a>\n                    <span class=\"mx-2 text-danger\">\n                        <i class=\"bi bi-bug\"></i>\n                        Report a bug:\n                        <a class=\"text-reset\" target=\"_blank\" href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">GitHub</a>\n                        \n                            <a class=\"text-reset\" href=\"mailto:tools-help@ietf.org\">Email</a>\n                        \n                    </span>\n                    \n                </div>\n            </footer>\n        \n        \n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/d3.js\">\n        </script>\n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/document_timeline.js\">\n        </script>\n    \n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/select2.js\"></script>\n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/navbar-doc-search.js\"></script>\n      \n<script>\n  var _paq = window._paq || [];\n  \n  _paq.push(['disableCookies']);\n  _paq.push(['trackPageView']);\n  _paq.push(['enableLinkTracking']);\n  (function() {\n    var u=\"//analytics.ietf.org/\";\n    _paq.push(['setTrackerUrl', u+'matomo.php']);\n    _paq.push(['setSiteId', 7]);\n    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];\n    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);\n  })();\n</script>\n<noscript><p><img src=\"//analytics.ietf.org/matomo.php?idsite=7\" style=\"border:0;\" alt=\"\" /></p></noscript>\n\n    <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a2369afd7be5ee14',t:'MTc4NTQzODAxOA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>\n</html>\n","snapshot_chars":337201,"live_check":"changed"},{"url":"https://datatracker.ietf.org/doc/html/draft-marques-asqav-compliance-receipts-02","committed_hash":"sha256:dc48f6b65128a2485f33b9f1209ad81890a6991f240c2f3703ab288eadfe1e4a","committed_hash_short":"sha256:dc48f6b6…adfe1e4a","mime_type":"text/html","committed_at":"2026-07-30T19:00:18.797688+00:00","content_snapshot":"\n<!DOCTYPE html>\n\n\n\n\n\n\n\n<html data-bs-theme=\"auto\" lang=\"en\">\n    <head>\n        \n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <title>\n            \n                draft-marques-asqav-compliance-receipts-02\n            \n        </title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <link href=\"https://static.ietf.org/fonts/inter/import.css\" rel=\"stylesheet\">\n        <link href=\"https://static.ietf.org/fonts/noto-sans-mono/import.css\" rel=\"stylesheet\">\n        \n            <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.69.0/ietf/css/document_html_referenced.css\">\n            \n                <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.69.0/ietf/css/document_html_txt.css\">\n            \n            <script type=\"module\" crossorigin=\"\" src=\"https://static.ietf.org/dt/12.69.0/assets/embedded-f7f04c22.js\"></script>\n<link href=\"https://static.ietf.org/dt/12.69.0/assets/create-pinia-singleton-e1887cc7.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n<link href=\"https://static.ietf.org/dt/12.69.0/assets/Scrollbar-f0f599a2.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n            <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/document_html.js\"></script>\n            <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/theme.js\"></script>\n        \n        <link rel=\"alternate\" type=\"application/atom+xml\" title=\"Document changes\" href=\"/feed/document-changes/draft-marques-asqav-compliance-receipts/\">\n        <meta name=\"description\"\n            \n                content=\"Compliance Profile of Signed Action Receipts for AI Agents (Internet-Draft, 2026)\"\n            >\n        \n\n<link rel=\"apple-touch-icon\"\n      sizes=\"180x180\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-180.png\">\n<link rel=\"icon\"\n      sizes=\"32x32\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-32.png\">\n<link rel=\"icon\"\n      sizes=\"16x16\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-16.png\">\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"mask-icon\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-mask.svg\"\n      color=\"#ffffff\">\n<meta name=\"msapplication-TileColor\"\n      content=\"#ffffff\">\n<meta name=\"theme-color\"\n      content=\"#ffffff\">\n        \n\n\n\n\n<meta property=\"og:title\" content=\"Compliance Profile of Signed Action Receipts for AI Agents\">\n<meta property=\"og:url\" content=\"https://datatracker.ietf.org/doc/html/draft-marques-asqav-compliance-receipts-02\">\n<link rel=\"canonical\" href=\"https://datatracker.ietf.org/doc/html/draft-marques-asqav-compliance-receipts-02\">\n<meta property=\"og:site_name\" content=\"IETF Datatracker\">\n<meta property=\"og:description\" content=\"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.\">\n<meta property=\"og:type\" content=\"article\">\n\n<meta property=\"article:section\" content=\"Individual Internet-Draft\">\n\n<meta property=\"article:author\" content=\"João André Gomes Marques\">\n\n\n\n        \n        <style>\n            \n            .diff-form .select2-selection__rendered {\n                direction: rtl;\n                text-align: left;\n            }\n        </style>\n    </head>\n    <body>\n        \n        <noscript><iframe class=\"status\" title=\"Site status\" src=\"/status/latest\"></iframe></noscript>\n<div class=\"vue-embed\" data-component=\"Status\"></div>\n        <div class=\"btn-toolbar sidebar-toolbar position-fixed top-0 end-0 m-2 m-lg-3 d-print-none\">\n            <div class=\"dropdown\">\n                <button class=\"btn btn-outline-secondary btn-sm me-1 dropdown-toggle d-flex align-items-center\"\n                    id=\"bd-theme\" type=\"button\" aria-expanded=\"false\" data-bs-toggle=\"dropdown\"\n                    aria-label=\"Toggle theme\">\n                        <i class=\"theme-icon-active bi bi-circle-half\"></i>\n                </button>\n\n                <ul class=\"dropdown-menu\" aria-labelledby=\"bd-theme\">\n                    <li>\n                        <button type=\"button\" class=\"dropdown-item d-flex align-items-center\"\n                            data-bs-theme-value=\"light\" aria-pressed=\"false\">\n                            <i class=\"me-2 opacity-50 theme-icon bi bi-sun-fill\"></i>\n                            Light<i class=\"bi bi-check2 ms-auto d-none\"></i>\n                        </button>\n                    </li>\n                    <li>\n                        <button type=\"button\" class=\"dropdown-item d-flex align-items-center\"\n                            data-bs-theme-value=\"dark\" aria-pressed=\"false\">\n                            <i class=\"me-2 opacity-50 theme-icon bi bi-moon-stars-fill\"></i>\n                            Dark<i class=\"bi bi-check2 ms-auto d-none\"></i>\n                        </button>\n                    </li>\n                    <li>\n                        <button type=\"button\" class=\"dropdown-item d-flex align-items-center active\"\n                            data-bs-theme-value=\"auto\" aria-pressed=\"true\">\n                            <i class=\"me-2 opacity-50 theme-icon bi bi-circle-half\"></i>\n                            Auto<i class=\"bi bi-check2 ms-auto d-none\"></i>\n                        </button>\n                    </li>\n                </ul>\n            </div>\n            <button class=\"btn btn-outline-secondary btn-sm sidebar-toggle\"\n                    type=\"button\"\n                    data-bs-toggle=\"collapse\"\n                    data-bs-target=\"#sidebar\"\n                    aria-expanded=\"true\"\n                    aria-controls=\"sidebar\"\n                    aria-label=\"Toggle metadata sidebar\"\n                    title=\"Toggle metadata sidebar\">\n            <i class=\"bi bi-arrow-bar-left sidebar-shown\"></i>\n            <i class=\"bi bi-arrow-bar-right sidebar-collapsed\"></i>\n            </button>\n        </div>\n        <nav class=\"navbar bg-light-subtle px-1 fixed-top d-print-none d-md-none\">\n            <a class=\"nav-link ps-1\"\n               href=\"/doc/draft-marques-asqav-compliance-receipts/\">\n                 \n                    draft-marques-asqav-compliance-receipts-02\n                \n                <br class=\"d-sm-none\">\n\n                <span class=\"ms-sm-3 badge rounded-pill badge-draft\">\n                    \n                        Internet-Draft\n                    \n                </span>\n            </a>\n            <button class=\"navbar-toggler p-1\"\n                    type=\"button\"\n                    data-bs-toggle=\"collapse\"\n                    data-bs-target=\"#docinfo-collapse\"\n                    aria-controls=\"docinfo-collapse\"\n                    aria-expanded=\"false\"\n                    aria-label=\"Show document information\">\n                <span class=\"navbar-toggler-icon small\"></span>\n            </button>\n            <div class=\"navbar-nav navbar-nav-scroll overscroll-none collapse pt-1\" id=\"docinfo-collapse\">\n                <div class=\"bg-light-subtle p-0\">\n                    <table class=\"table table-sm table-borderless small\">\n                        <tbody class=\"meta align-top\">\n                            <tr>\n                                <th scope=\"row\"></th>\n                                <th scope=\"row\">Title</th>\n                                <td class=\"edit\"></td>\n                                <td>Compliance Profile of Signed Action Receipts for AI Agents</td>\n                            </tr>\n                        </tbody>\n                        \n\n\n\n\n\n\n\n<tbody class=\"meta align-top \">\n    <tr>\n        <th scope=\"row\">Document</th>\n        <th scope=\"row\">Document type</th>\n        <td class=\"edit\"></td>\n        <td>\n            \n\n\n\n\n\n\n\n    <div>This is an older version of an Internet-Draft whose latest revision state is \"Active\".</div>\n\n            \n            \n            \n                \n\n\n\n\n    <div class=\"alert alert-warning small p-2 mt-2\" role=\"alert\">\n        This document is an Internet-Draft (I-D).\n        Anyone may submit an I-D to the IETF.\n        This I-D is <strong>not endorsed by the IETF</strong> and has <strong>no formal standing</strong> in the\n        <a href=\"/doc/rfc2026/\">IETF standards process</a>.\n    </div>\n\n\n            \n        </td>\n    </tr>\n    \n        <tr>\n            <td></td>\n            <th scope=\"row\">Select version</th>\n            <td class=\"edit\"></td>\n            <td>\n                \n\n\n\n    <ul class=\"revision-list pagination pagination-sm text-center flex-wrap my-0\">\n        \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-00\"\n                        >\n                            00\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-01\"\n                        rel=\"nofollow\">\n                            01\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item active\">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-02\"\n                        rel=\"nofollow\">\n                            02\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-03\"\n                        rel=\"nofollow\">\n                            03\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-04\"\n                        rel=\"nofollow\">\n                            04\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-05\"\n                        rel=\"nofollow\">\n                            05\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-06\"\n                        rel=\"nofollow\">\n                            06\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-07\"\n                        >\n                            07\n                        </a>\n                    </li>\n                \n            \n            \n        \n    </ul>\n\n            </td>\n        </tr>\n        \n            <tr>\n                <td></td>\n                <th scope=\"row\">Compare versions</th>\n                <td class=\"edit\"></td>\n                <td>\n                    \n\n\n\n<form class=\"form-horizontal diff-form\"\n      action=\"https://author-tools.ietf.org/iddiff\"\n      method=\"get\"\n      target=\"_blank\">\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"From revision\"\n                    name=\"url1\">\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-07\">\n                        draft-marques-asqav-compliance-receipts-07\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-06\" selected>\n                        draft-marques-asqav-compliance-receipts-06\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-05\">\n                        draft-marques-asqav-compliance-receipts-05\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-04\">\n                        draft-marques-asqav-compliance-receipts-04\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-03\">\n                        draft-marques-asqav-compliance-receipts-03\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-02\">\n                        draft-marques-asqav-compliance-receipts-02\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-01\">\n                        draft-marques-asqav-compliance-receipts-01\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-00\">\n                        draft-marques-asqav-compliance-receipts-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"To revision\"\n                    name=\"url2\">\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-07\" selected>\n                        draft-marques-asqav-compliance-receipts-07\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-06\">\n                        draft-marques-asqav-compliance-receipts-06\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-05\">\n                        draft-marques-asqav-compliance-receipts-05\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-04\">\n                        draft-marques-asqav-compliance-receipts-04\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-03\">\n                        draft-marques-asqav-compliance-receipts-03\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-02\">\n                        draft-marques-asqav-compliance-receipts-02\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-01\">\n                        draft-marques-asqav-compliance-receipts-01\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-00\">\n                        draft-marques-asqav-compliance-receipts-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--html\"\n                    name=\"difftype\">\n                Side-by-side\n            </button>\n            \n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--hwdiff\"\n                    name=\"difftype\">\n                Inline\n            </button>\n\n</form>\n                </td>\n            </tr>\n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Author</th>\n        <td class=\"edit\">\n            \n        </td>\n        <td>\n            \n            \n                <span ><a \n           title=\"Datatracker profile of João André Gomes Marques\"\n            href=\"/person/info@asqav.com\" >João André Gomes Marques</a> <a \n               href=\"mailto:info%40asqav.com\"\n               aria-label=\"Compose email to info@asqav.com\"\n               title=\"Compose email to info@asqav.com\">\n                <i class=\"bi bi-envelope\"></i></a></span>\n            \n            \n        </td>\n    </tr>\n    \n    \n        \n        \n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            RFC stream\n        </th>\n        <td class=\"edit\">\n            \n        </td>\n        <td class=\"text-body-secondary\">\n            \n                (None)\n            \n        </td>\n    </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            Other formats\n        </th>\n        <td class=\"edit\">\n        </td>\n        <td>\n            \n                \n    <div class=\"buttonlist\">\n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-02.txt\">\n            \n                <i class=\"bi bi-file-text\"></i> txt\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-02.html\">\n            \n                <i class=\"bi bi-file-code\"></i> html\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-02.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> xml\n            \n        </a>\n        \n    \n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/draft-marques-asqav-compliance-receipts/02/bibtex/\">\n            \n                <i class=\"bi bi-file-ruled\"></i> bibtex\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/bibxml3/draft-marques-asqav-compliance-receipts-02.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> bibxml\n            \n        </a>\n        \n    \n</div>\n\n            \n        </td>\n    </tr>\n    \n    \n        \n    \n</tbody>\n                        <tr>\n                            <th scope=\"row\"></th>\n                            <th scope=\"row\"></th>\n                            <td class=\"edit\"></td>\n                            <td>\n                                <a class=\"btn btn-sm btn-warning mb-3\"\n                                target=\"_blank\"\n                                href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n                                    Report a bug\n                                    <i class=\"bi bi-bug\"></i>\n                                </a>\n                            </td>\n                        </tr>\n                    </table>\n                </div>\n            </div>\n        </nav>\n        <div class=\"row g-0\">\n            <div class=\"col-md-9 d-flex justify-content-center lh-sm\"\n                 data-bs-spy=\"scroll\"\n                 data-bs-target=\"#toc-nav\"\n                 data-bs-smooth-scroll=\"true\"\n                 tabindex=\"0\"\n                 id=\"content\">\n                \n                    <div class=\"rfchtml\">\n                        <br class=\"noprint\">\n                        <div class=\"xml2rfc\">\n<table class=\"ears\">\n<thead><tr>\n<td class=\"left\">Internet-Draft</td>\n<td class=\"center\">Compliance Receipts Profile</td>\n<td class=\"right\">May 2026</td>\n</tr></thead>\n<tfoot><tr>\n<td class=\"left\">Gomes Marques</td>\n<td class=\"center\">Expires 7 November 2026</td>\n<td class=\"right\">[Page]</td>\n</tr></tfoot>\n</table>\n<div id=\"external-metadata\" class=\"document-information\"></div>\n<div id=\"internal-metadata\" class=\"document-information\">\n<dl id=\"identifiers\">\n<dt class=\"label-workgroup\">Workgroup:</dt>\n<dd class=\"workgroup\">Network Working Group</dd>\n<dt class=\"label-internet-draft\">Internet-Draft:</dt>\n<dd class=\"internet-draft\">draft-marques-asqav-compliance-receipts-02</dd>\n<dt class=\"label-published\">Published:</dt>\n<dd class=\"published\">\n<time datetime=\"2026-05-06\" class=\"published\">6 May 2026</time>\n    </dd>\n<dt class=\"label-intended-status\">Intended Status:</dt>\n<dd class=\"intended-status\">Informational</dd>\n<dt class=\"label-expires\">Expires:</dt>\n<dd class=\"expires\"><time datetime=\"2026-11-07\">7 November 2026</time></dd>\n<dt class=\"label-authors\">Author:</dt>\n<dd class=\"authors\">\n<div class=\"author\">\n      <div class=\"author-name\">J. A. Gomes Marques</div>\n<div class=\"org\">Asqav</div>\n</div>\n</dd>\n</dl>\n</div>\n<h1 id=\"title\">Compliance Profile of Signed Action Receipts for AI Agents</h1>\n<section id=\"section-abstract\">\n      <h2 id=\"abstract\"><a href=\"#abstract\" class=\"selfRef\">Abstract</a></h2>\n<p id=\"section-abstract-1\">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.<a href=\"#section-abstract-1\" class=\"pilcrow\">¶</a></p>\n</section>\n<div id=\"status-of-memo\">\n<section id=\"section-boilerplate.1\">\n        <h2 id=\"name-status-of-this-memo\">\n<a href=\"#name-status-of-this-memo\" class=\"section-name selfRef\">Status of This Memo</a>\n        </h2>\n<p id=\"section-boilerplate.1-1\">\n        This Internet-Draft is submitted in full conformance with the\n        provisions of BCP 78 and BCP 79.<a href=\"#section-boilerplate.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-2\">\n        Internet-Drafts are working documents of the Internet Engineering Task\n        Force (IETF). Note that other groups may also distribute working\n        documents as Internet-Drafts. The list of current Internet-Drafts is\n        at <span><a href=\"https://datatracker.ietf.org/drafts/current/\">https://datatracker.ietf.org/drafts/current/</a></span>.<a href=\"#section-boilerplate.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-3\">\n        Internet-Drafts are draft documents valid for a maximum of six months\n        and may be updated, replaced, or obsoleted by other documents at any\n        time. It is inappropriate to use Internet-Drafts as reference\n        material or to cite them other than as \"work in progress.\"<a href=\"#section-boilerplate.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-4\">\n        This Internet-Draft will expire on 7 November 2026.<a href=\"#section-boilerplate.1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"copyright\">\n<section id=\"section-boilerplate.2\">\n        <h2 id=\"name-copyright-notice\">\n<a href=\"#name-copyright-notice\" class=\"section-name selfRef\">Copyright Notice</a>\n        </h2>\n<p id=\"section-boilerplate.2-1\">\n            Copyright (c) 2026 IETF Trust and the persons identified as the\n            document authors. All rights reserved.<a href=\"#section-boilerplate.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.2-2\">\n            This document is subject to BCP 78 and the IETF Trust's Legal\n            Provisions Relating to IETF Documents\n            (<span><a href=\"https://trustee.ietf.org/license-info\">https://trustee.ietf.org/license-info</a></span>) in effect on the date of\n            publication of this document. Please review these documents\n            carefully, as they describe your rights and restrictions with\n            respect to this document.<a href=\"#section-boilerplate.2-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"toc\">\n<section id=\"section-toc.1\">\n        <a href=\"#\" onclick=\"scroll(0,0)\" class=\"toplink\">▲</a><h2 id=\"name-table-of-contents\">\n<a href=\"#name-table-of-contents\" class=\"section-name selfRef\">Table of Contents</a>\n        </h2>\n<nav class=\"toc\"><ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.1\">\n            <p id=\"section-toc.1-1.1.1\" class=\"keepWithNext\"><a href=\"#section-1\" class=\"auto internal xref\">1</a>.  <a href=\"#name-introduction\" class=\"internal xref\">Introduction</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.1.2.1\">\n                <p id=\"section-toc.1-1.1.2.1.1\" class=\"keepWithNext\"><a href=\"#section-1.1\" class=\"auto internal xref\">1.1</a>.  <a href=\"#name-profile-not-fork\" class=\"internal xref\">Profile, Not Fork</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.1.2.2\">\n                <p id=\"section-toc.1-1.1.2.2.1\" class=\"keepWithNext\"><a href=\"#section-1.2\" class=\"auto internal xref\">1.2</a>.  <a href=\"#name-scope\" class=\"internal xref\">Scope</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.2\">\n            <p id=\"section-toc.1-1.2.1\"><a href=\"#section-2\" class=\"auto internal xref\">2</a>.  <a href=\"#name-conventions-and-definitions\" class=\"internal xref\">Conventions and Definitions</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3\">\n            <p id=\"section-toc.1-1.3.1\"><a href=\"#section-3\" class=\"auto internal xref\">3</a>.  <a href=\"#name-relationship-to-acta-receip\" class=\"internal xref\">Relationship to ACTA-RECEIPTS</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4\">\n            <p id=\"section-toc.1-1.4.1\"><a href=\"#section-4\" class=\"auto internal xref\">4</a>.  <a href=\"#name-receipt-field-profile\" class=\"internal xref\">Receipt Field Profile</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1\">\n                <p id=\"section-toc.1-1.4.2.1.1\"><a href=\"#section-4.1\" class=\"auto internal xref\">4.1</a>.  <a href=\"#name-common-payload-fields\" class=\"internal xref\">Common Payload Fields</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1.2.1\">\n                    <p id=\"section-toc.1-1.4.2.1.2.1.1\"><a href=\"#section-4.1.1\" class=\"auto internal xref\">4.1.1</a>.  <a href=\"#name-type\" class=\"internal xref\">type</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1.2.2\">\n                    <p id=\"section-toc.1-1.4.2.1.2.2.1\"><a href=\"#section-4.1.2\" class=\"auto internal xref\">4.1.2</a>.  <a href=\"#name-issued_at\" class=\"internal xref\">issued_at</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1.2.3\">\n                    <p id=\"section-toc.1-1.4.2.1.2.3.1\"><a href=\"#section-4.1.3\" class=\"auto internal xref\">4.1.3</a>.  <a href=\"#name-issuer_id\" class=\"internal xref\">issuer_id</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1.2.4\">\n                    <p id=\"section-toc.1-1.4.2.1.2.4.1\"><a href=\"#section-4.1.4\" class=\"auto internal xref\">4.1.4</a>.  <a href=\"#name-payload_digest-optional-ups\" class=\"internal xref\">payload_digest (OPTIONAL upstream, REQUIRED in this profile)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1.2.5\">\n                    <p id=\"section-toc.1-1.4.2.1.2.5.1\"><a href=\"#section-4.1.5\" class=\"auto internal xref\">4.1.5</a>.  <a href=\"#name-action_ref-optional-upstrea\" class=\"internal xref\">action_ref (OPTIONAL upstream, REQUIRED in this profile)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1.2.6\">\n                    <p id=\"section-toc.1-1.4.2.1.2.6.1\"><a href=\"#section-4.1.6\" class=\"auto internal xref\">4.1.6</a>.  <a href=\"#name-sandbox_state-optional-upst\" class=\"internal xref\">sandbox_state (OPTIONAL upstream, REQUIRED for High-Risk in this profile)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1.2.7\">\n                    <p id=\"section-toc.1-1.4.2.1.2.7.1\"><a href=\"#section-4.1.7\" class=\"auto internal xref\">4.1.7</a>.  <a href=\"#name-iteration_id-optional-upstr\" class=\"internal xref\">iteration_id (OPTIONAL upstream, REQUIRED for multi-step in this profile)</a></p>\n</li>\n                </ul>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.2\">\n                <p id=\"section-toc.1-1.4.2.2.1\"><a href=\"#section-4.2\" class=\"auto internal xref\">4.2</a>.  <a href=\"#name-decision-receipt-fields-typ\" class=\"internal xref\">Decision Receipt Fields (type protectmcp:decision)</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.2.2.1\">\n                    <p id=\"section-toc.1-1.4.2.2.2.1.1\"><a href=\"#section-4.2.1\" class=\"auto internal xref\">4.2.1</a>.  <a href=\"#name-reason-optional-upstream-re\" class=\"internal xref\">reason (OPTIONAL upstream, REQUIRED for deny/rate_limit in this profile)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.2.2.2\">\n                    <p id=\"section-toc.1-1.4.2.2.2.2.1\"><a href=\"#section-4.2.2\" class=\"auto internal xref\">4.2.2</a>.  <a href=\"#name-policy_digest-optional-upst\" class=\"internal xref\">policy_digest (OPTIONAL upstream, REQUIRED in this profile)</a></p>\n</li>\n                </ul>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.3\">\n                <p id=\"section-toc.1-1.4.2.3.1\"><a href=\"#section-4.3\" class=\"auto internal xref\">4.3</a>.  <a href=\"#name-hash-chain-linkage-optional\" class=\"internal xref\">Hash-Chain Linkage (OPTIONAL upstream, REQUIRED in this profile)</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.4\">\n                <p id=\"section-toc.1-1.4.2.4.1\"><a href=\"#section-4.4\" class=\"auto internal xref\">4.4</a>.  <a href=\"#name-anchoring-no-upstream-equiv\" class=\"internal xref\">Anchoring (No Upstream Equivalent)</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.5\">\n                <p id=\"section-toc.1-1.4.2.5.1\"><a href=\"#section-4.5\" class=\"auto internal xref\">4.5</a>.  <a href=\"#name-extension-fields\" class=\"internal xref\">Extension Fields</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5\">\n            <p id=\"section-toc.1-1.5.1\"><a href=\"#section-5\" class=\"auto internal xref\">5</a>.  <a href=\"#name-eu-ai-act-article-12-bindin\" class=\"internal xref\">EU AI Act Article 12 Binding</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1\">\n                <p id=\"section-toc.1-1.5.2.1.1\"><a href=\"#section-5.1\" class=\"auto internal xref\">5.1</a>.  <a href=\"#name-article-121-automatic-recor\" class=\"internal xref\">Article 12(1), automatic recording of events</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.2\">\n                <p id=\"section-toc.1-1.5.2.2.1\"><a href=\"#section-5.2\" class=\"auto internal xref\">5.2</a>.  <a href=\"#name-article-122a-identifying-si\" class=\"internal xref\">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</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.3\">\n                <p id=\"section-toc.1-1.5.2.3.1\"><a href=\"#section-5.3\" class=\"auto internal xref\">5.3</a>.  <a href=\"#name-article-122b-facilitating-t\" class=\"internal xref\">Article 12(2)(b), facilitating the post-market monitoring referred to in Article 72</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.4\">\n                <p id=\"section-toc.1-1.5.2.4.1\"><a href=\"#section-5.4\" class=\"auto internal xref\">5.4</a>.  <a href=\"#name-article-122c-monitoring-the\" class=\"internal xref\">Article 12(2)(c), monitoring the operation of high-risk AI systems referred to in Article 26(5)</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.5\">\n                <p id=\"section-toc.1-1.5.2.5.1\"><a href=\"#section-5.5\" class=\"auto internal xref\">5.5</a>.  <a href=\"#name-retention\" class=\"internal xref\">Retention</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6\">\n            <p id=\"section-toc.1-1.6.1\"><a href=\"#section-6\" class=\"auto internal xref\">6</a>.  <a href=\"#name-eu-ai-act-article-26-bindin\" class=\"internal xref\">EU AI Act Article 26 Binding</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6.2.1\">\n                <p id=\"section-toc.1-1.6.2.1.1\"><a href=\"#section-6.1\" class=\"auto internal xref\">6.1</a>.  <a href=\"#name-article-261-in-accordance-w\" class=\"internal xref\">Article 26(1), in accordance with the instructions for use</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6.2.2\">\n                <p id=\"section-toc.1-1.6.2.2.1\"><a href=\"#section-6.2\" class=\"auto internal xref\">6.2</a>.  <a href=\"#name-article-262-assign-human-ov\" class=\"internal xref\">Article 26(2), assign human oversight</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6.2.3\">\n                <p id=\"section-toc.1-1.6.2.3.1\"><a href=\"#section-6.3\" class=\"auto internal xref\">6.3</a>.  <a href=\"#name-article-265-monitor-the-ope\" class=\"internal xref\">Article 26(5), monitor the operation</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6.2.4\">\n                <p id=\"section-toc.1-1.6.2.4.1\"><a href=\"#section-6.4\" class=\"auto internal xref\">6.4</a>.  <a href=\"#name-article-266-keep-the-logs-f\" class=\"internal xref\">Article 26(6), keep the logs for at least six months</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7\">\n            <p id=\"section-toc.1-1.7.1\"><a href=\"#section-7\" class=\"auto internal xref\">7</a>.  <a href=\"#name-dora-article-17-binding\" class=\"internal xref\">DORA Article 17 Binding</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7.2.1\">\n                <p id=\"section-toc.1-1.7.2.1.1\"><a href=\"#section-7.1\" class=\"auto internal xref\">7.1</a>.  <a href=\"#name-article-171-ict-related-inc\" class=\"internal xref\">Article 17(1), ICT-related incident management process</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7.2.2\">\n                <p id=\"section-toc.1-1.7.2.2.1\"><a href=\"#section-7.2\" class=\"auto internal xref\">7.2</a>.  <a href=\"#name-article-172-record-all-ict-\" class=\"internal xref\">Article 17(2), record all ICT-related incidents and significant cyber threats</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7.2.3\">\n                <p id=\"section-toc.1-1.7.2.3.1\"><a href=\"#section-7.3\" class=\"auto internal xref\">7.3</a>.  <a href=\"#name-article-173b-establish-proc\" class=\"internal xref\">Article 17(3)(b), establish procedures to identify, track, log, categorise and classify ICT-related incidents</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7.2.4\">\n                <p id=\"section-toc.1-1.7.2.4.1\"><a href=\"#section-7.4\" class=\"auto internal xref\">7.4</a>.  <a href=\"#name-retention-2\" class=\"internal xref\">Retention</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.8\">\n            <p id=\"section-toc.1-1.8.1\"><a href=\"#section-8\" class=\"auto internal xref\">8</a>.  <a href=\"#name-audit-pack-composition\" class=\"internal xref\">Audit Pack Composition</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.9\">\n            <p id=\"section-toc.1-1.9.1\"><a href=\"#section-9\" class=\"auto internal xref\">9</a>.  <a href=\"#name-verifier-behaviour\" class=\"internal xref\">Verifier Behaviour</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.9.2.1\">\n                <p id=\"section-toc.1-1.9.2.1.1\"><a href=\"#section-9.1\" class=\"auto internal xref\">9.1</a>.  <a href=\"#name-mandatory-checks\" class=\"internal xref\">Mandatory Checks</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.9.2.2\">\n                <p id=\"section-toc.1-1.9.2.2.1\"><a href=\"#section-9.2\" class=\"auto internal xref\">9.2</a>.  <a href=\"#name-optional-checks\" class=\"internal xref\">Optional Checks</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.9.2.3\">\n                <p id=\"section-toc.1-1.9.2.3.1\"><a href=\"#section-9.3\" class=\"auto internal xref\">9.3</a>.  <a href=\"#name-reporting\" class=\"internal xref\">Reporting</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10\">\n            <p id=\"section-toc.1-1.10.1\"><a href=\"#section-10\" class=\"auto internal xref\">10</a>. <a href=\"#name-security-considerations\" class=\"internal xref\">Security Considerations</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.1\">\n                <p id=\"section-toc.1-1.10.2.1.1\"><a href=\"#section-10.1\" class=\"auto internal xref\">10.1</a>.  <a href=\"#name-tamper-resistance\" class=\"internal xref\">Tamper Resistance</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.2\">\n                <p id=\"section-toc.1-1.10.2.2.1\"><a href=\"#section-10.2\" class=\"auto internal xref\">10.2</a>.  <a href=\"#name-key-compromise\" class=\"internal xref\">Key Compromise</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.3\">\n                <p id=\"section-toc.1-1.10.2.3.1\"><a href=\"#section-10.3\" class=\"auto internal xref\">10.3</a>.  <a href=\"#name-retention-and-long-term-ver\" class=\"internal xref\">Retention and Long-Term Verifiability</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.4\">\n                <p id=\"section-toc.1-1.10.2.4.1\"><a href=\"#section-10.4\" class=\"auto internal xref\">10.4</a>.  <a href=\"#name-privacy\" class=\"internal xref\">Privacy</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.5\">\n                <p id=\"section-toc.1-1.10.2.5.1\"><a href=\"#section-10.5\" class=\"auto internal xref\">10.5</a>.  <a href=\"#name-anchor-trust\" class=\"internal xref\">Anchor Trust</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.6\">\n                <p id=\"section-toc.1-1.10.2.6.1\"><a href=\"#section-10.6\" class=\"auto internal xref\">10.6</a>.  <a href=\"#name-replay\" class=\"internal xref\">Replay</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.7\">\n                <p id=\"section-toc.1-1.10.2.7.1\"><a href=\"#section-10.7\" class=\"auto internal xref\">10.7</a>.  <a href=\"#name-cross-regime-conflict\" class=\"internal xref\">Cross-Regime Conflict</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.8\">\n                <p id=\"section-toc.1-1.10.2.8.1\"><a href=\"#section-10.8\" class=\"auto internal xref\">10.8</a>.  <a href=\"#name-algorithm-agility\" class=\"internal xref\">Algorithm Agility</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.11\">\n            <p id=\"section-toc.1-1.11.1\"><a href=\"#section-11\" class=\"auto internal xref\">11</a>. <a href=\"#name-iana-considerations\" class=\"internal xref\">IANA Considerations</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.11.2.1\">\n                <p id=\"section-toc.1-1.11.2.1.1\"><a href=\"#section-11.1\" class=\"auto internal xref\">11.1</a>.  <a href=\"#name-compliance-receipt-extensio\" class=\"internal xref\">Compliance Receipt Extension Fields Registry</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.11.2.2\">\n                <p id=\"section-toc.1-1.11.2.2.1\"><a href=\"#section-11.2\" class=\"auto internal xref\">11.2</a>.  <a href=\"#name-compliance-receipt-type-nam\" class=\"internal xref\">Compliance Receipt Type Namespaces Registry</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.12\">\n            <p id=\"section-toc.1-1.12.1\"><a href=\"#section-12\" class=\"auto internal xref\">12</a>. <a href=\"#name-acknowledgements\" class=\"internal xref\">Acknowledgements</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.13\">\n            <p id=\"section-toc.1-1.13.1\"><a href=\"#section-13\" class=\"auto internal xref\">13</a>. <a href=\"#name-normative-references\" class=\"internal xref\">Normative References</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.14\">\n            <p id=\"section-toc.1-1.14.1\"><a href=\"#section-14\" class=\"auto internal xref\">14</a>. <a href=\"#name-informative-references\" class=\"internal xref\">Informative References</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.15\">\n            <p id=\"section-toc.1-1.15.1\"><a href=\"#appendix-A\" class=\"auto internal xref\"></a><a href=\"#name-worked-example-informative\" class=\"internal xref\">Worked Example (Informative)</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.16\">\n            <p id=\"section-toc.1-1.16.1\"><a href=\"#appendix-B\" class=\"auto internal xref\"></a><a href=\"#name-change-log\" class=\"internal xref\">Change Log</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.16.2.1\">\n                <p id=\"section-toc.1-1.16.2.1.1\"><a href=\"#appendix-B.1\" class=\"auto internal xref\"></a><a href=\"#name-draft-marques-asqav-complia\" class=\"internal xref\">draft-marques-asqav-compliance-receipts-02</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.16.2.2\">\n                <p id=\"section-toc.1-1.16.2.2.1\"><a href=\"#appendix-B.2\" class=\"auto internal xref\"></a><a href=\"#name-draft-marques-asqav-complian\" class=\"internal xref\">draft-marques-asqav-compliance-receipts-01</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.16.2.3\">\n                <p id=\"section-toc.1-1.16.2.3.1\"><a href=\"#appendix-B.3\" class=\"auto internal xref\"></a><a href=\"#name-draft-marques-asqav-complianc\" class=\"internal xref\">draft-marques-asqav-compliance-receipts-00</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.17\">\n            <p id=\"section-toc.1-1.17.1\"><a href=\"#appendix-C\" class=\"auto internal xref\"></a><a href=\"#name-authors-address\" class=\"internal xref\">Author's Address</a></p>\n</li>\n        </ul>\n</nav>\n</section>\n</div>\n<div id=\"introduction\">\n<section id=\"section-1\">\n      <h2 id=\"name-introduction\">\n<a href=\"#section-1\" class=\"section-number selfRef\">1. </a><a href=\"#name-introduction\" class=\"section-name selfRef\">Introduction</a>\n      </h2>\n<div id=\"profile-not-fork\">\n<section id=\"section-1.1\">\n        <h3 id=\"name-profile-not-fork\">\n<a href=\"#section-1.1\" class=\"section-number selfRef\">1.1. </a><a href=\"#name-profile-not-fork\" class=\"section-name selfRef\">Profile, Not Fork</a>\n        </h3>\n<p id=\"section-1.1-1\"><span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> specifies a generic, signed receipt envelope for recording machine-to-machine access control decisions made by AI agents. Section 2.2 of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> defines a common payload field set in which all fields except <code>type</code>, <code>issued_at</code>, and <code>issuer_id</code> are OPTIONAL. Section 5.7 of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> introduces hash chaining (<code>previousReceiptHash</code>) inside an optional Commitment Mode extension. <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> does not define receipt retention, does not require timestamping anchors, and does not bind to any regulatory regime.<a href=\"#section-1.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1.1-2\">This document is an additive overlay on <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>: 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 <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> receipt. Field references use upstream field names rather than section numbers, to reduce maintenance hazard if upstream re-numbers in a future revision.<a href=\"#section-1.1-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"scope\">\n<section id=\"section-1.2\">\n        <h3 id=\"name-scope\">\n<a href=\"#section-1.2\" class=\"section-number selfRef\">1.2. </a><a href=\"#name-scope\" class=\"section-name selfRef\">Scope</a>\n        </h3>\n<p id=\"section-1.2-1\">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 <a href=\"#art12-retention\" class=\"auto internal xref\">Section 5.5</a>.<a href=\"#section-1.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1.2-2\">A verifier that implements only <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> can cryptographically validate a profile receipt but cannot attest the additional compliance bindings of this document.<a href=\"#section-1.2-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"conventions\">\n<section id=\"section-2\">\n      <h2 id=\"name-conventions-and-definitions\">\n<a href=\"#section-2\" class=\"section-number selfRef\">2. </a><a href=\"#name-conventions-and-definitions\" class=\"section-name selfRef\">Conventions and Definitions</a>\n      </h2>\n<p id=\"section-2-1\">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 <span>[<a href=\"#RFC2119\" class=\"cite xref\">RFC2119</a>]</span> <span>[<a href=\"#RFC8174\" class=\"cite xref\">RFC8174</a>]</span> when, and only when, they appear in all capitals, as shown here.<a href=\"#section-2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-2\">The following terms are used in this document.<a href=\"#section-2-2\" class=\"pilcrow\">¶</a></p>\n<span class=\"break\"></span><dl class=\"dlParallel\" id=\"section-2-3\">\n        <dt id=\"section-2-3.1\">Action:</dt>\n        <dd style=\"margin-left: 1.5em\" id=\"section-2-3.2\">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.<a href=\"#section-2-3.2\" class=\"pilcrow\">¶</a>\n</dd>\n        <dd class=\"break\"></dd>\n<dt id=\"section-2-3.3\">Action Receipt:</dt>\n        <dd style=\"margin-left: 1.5em\" id=\"section-2-3.4\">A signed envelope conforming to <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> that records the policy evaluation result for a single Action.<a href=\"#section-2-3.4\" class=\"pilcrow\">¶</a>\n</dd>\n        <dd class=\"break\"></dd>\n<dt id=\"section-2-3.5\">Compliance Receipt:</dt>\n        <dd style=\"margin-left: 1.5em\" id=\"section-2-3.6\">An Action Receipt that additionally satisfies the requirements of this profile.<a href=\"#section-2-3.6\" class=\"pilcrow\">¶</a>\n</dd>\n        <dd class=\"break\"></dd>\n<dt id=\"section-2-3.7\">Deployer:</dt>\n        <dd style=\"margin-left: 1.5em\" id=\"section-2-3.8\">As defined in Article 3(4) of <span>[<a href=\"#EU-AI-ACT\" class=\"cite xref\">EU-AI-ACT</a>]</span>.<a href=\"#section-2-3.8\" class=\"pilcrow\">¶</a>\n</dd>\n        <dd class=\"break\"></dd>\n<dt id=\"section-2-3.9\">High-Risk AI System:</dt>\n        <dd style=\"margin-left: 1.5em\" id=\"section-2-3.10\">As defined in Article 6 of <span>[<a href=\"#EU-AI-ACT\" class=\"cite xref\">EU-AI-ACT</a>]</span>.<a href=\"#section-2-3.10\" class=\"pilcrow\">¶</a>\n</dd>\n        <dd class=\"break\"></dd>\n<dt id=\"section-2-3.11\">Financial Entity:</dt>\n        <dd style=\"margin-left: 1.5em\" id=\"section-2-3.12\">As defined in Article 2(2) of <span>[<a href=\"#DORA\" class=\"cite xref\">DORA</a>]</span>, for entities listed in Article 2(1).<a href=\"#section-2-3.12\" class=\"pilcrow\">¶</a>\n</dd>\n        <dd class=\"break\"></dd>\n<dt id=\"section-2-3.13\">Audit Pack:</dt>\n        <dd style=\"margin-left: 1.5em\" id=\"section-2-3.14\">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.<a href=\"#section-2-3.14\" class=\"pilcrow\">¶</a>\n</dd>\n      <dd class=\"break\"></dd>\n</dl>\n</section>\n</div>\n<div id=\"relationship\">\n<section id=\"section-3\">\n      <h2 id=\"name-relationship-to-acta-receip\">\n<a href=\"#section-3\" class=\"section-number selfRef\">3. </a><a href=\"#name-relationship-to-acta-receip\" class=\"section-name selfRef\">Relationship to ACTA-RECEIPTS</a>\n      </h2>\n<p id=\"section-3-1\">This profile is an additive overlay on <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>. It does not modify the envelope, the canonicalization rule, the signature object, or the algorithm registry of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>.<a href=\"#section-3-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3-2\">The following normative statements apply.<a href=\"#section-3-2\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-3-3.1\">Implementations of this profile MUST produce receipts that are cryptographically verifiable by a conformant <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> verifier under the canonicalization rules (JCS, <span>[<a href=\"#RFC8785\" class=\"cite xref\">RFC8785</a>]</span>) and the signature scope of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> Section 5.6.<a href=\"#section-3-3.1\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-3-3.2\">Implementations of this profile MUST NOT introduce new top-level fields in the signed payload that conflict with names reserved by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>.<a href=\"#section-3-3.2\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-3-3.3\">Implementations of this profile MAY use any signature algorithm permitted by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>: EdDSA (Ed25519, mandatory-to-implement, <span>[<a href=\"#RFC8032\" class=\"cite xref\">RFC8032</a>]</span>), ES256 (ECDSA using P-256 and SHA-256, <span>[<a href=\"#RFC7518\" class=\"cite xref\">RFC7518</a>]</span>), and ML-DSA-65 (<span>[<a href=\"#FIPS204\" class=\"cite xref\">FIPS204</a>]</span>).<a href=\"#section-3-3.3\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-3-3.4\">Where <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> marks a field OPTIONAL and this profile marks the same field REQUIRED, the stricter requirement applies to Compliance Receipts.<a href=\"#section-3-3.4\" class=\"pilcrow\">¶</a>\n</li>\n      </ul>\n<p id=\"section-3-4\">A receipt that fails any MUST clause of this profile is not a Compliance Receipt. It MAY still be a valid <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> receipt.<a href=\"#section-3-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3-5\">This profile differentiates from <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> 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).<a href=\"#section-3-5\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"field-profile\">\n<section id=\"section-4\">\n      <h2 id=\"name-receipt-field-profile\">\n<a href=\"#section-4\" class=\"section-number selfRef\">4. </a><a href=\"#name-receipt-field-profile\" class=\"section-name selfRef\">Receipt Field Profile</a>\n      </h2>\n<p id=\"section-4-1\">This section enumerates fields defined by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> and states the additional requirements that this profile places on them. Field names follow <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> exactly.<a href=\"#section-4-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4-2\">Compliance Receipts MUST use the upstream wire field name <code>signature</code> for the signature object, exactly as defined in Sections 2.1 and 2.1.1 of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>. The keys inside that object are <code>alg</code>, <code>kid</code>, <code>sig</code>. Implementations whose internal storage uses a different field name MUST translate to <code>signature</code> on emission and on canonicalization for verification; receipts that appear on the wire under any other top-level field name are non-conformant to <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> and to this profile. Anchors MUST be projected into a top-level <code>anchors</code> array with a <code>type</code> discriminator and a <code>value</code> field carrying the anchor bytes (base64-encoded for binary payloads). Flat-column implementations MUST project on emission and Audit Pack export.<a href=\"#section-4-2\" class=\"pilcrow\">¶</a></p>\n<div id=\"common-fields\">\n<section id=\"section-4.1\">\n        <h3 id=\"name-common-payload-fields\">\n<a href=\"#section-4.1\" class=\"section-number selfRef\">4.1. </a><a href=\"#name-common-payload-fields\" class=\"section-name selfRef\">Common Payload Fields</a>\n        </h3>\n<div id=\"type\">\n<section id=\"section-4.1.1\">\n          <h4 id=\"name-type\">\n<a href=\"#section-4.1.1\" class=\"section-number selfRef\">4.1.1. </a><a href=\"#name-type\" class=\"section-name selfRef\">type</a>\n          </h4>\n<p id=\"section-4.1.1-1\">Compliance Receipts MUST set <code>type</code> to a value drawn from the namespace <code>protectmcp:decision</code>, <code>protectmcp:restraint</code>, or <code>protectmcp:lifecycle</code>, or to an extension namespace registered for use with this profile.<a href=\"#section-4.1.1-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"issued-at\">\n<section id=\"section-4.1.2\">\n          <h4 id=\"name-issued_at\">\n<a href=\"#section-4.1.2\" class=\"section-number selfRef\">4.1.2. </a><a href=\"#name-issued_at\" class=\"section-name selfRef\">issued_at</a>\n          </h4>\n<p id=\"section-4.1.2-1\">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 <code>issued_at</code> is more than 300 seconds ahead of the verifier's own clock. Verifiers MUST NOT reject a receipt solely because <code>issued_at</code> lies in the past; past skew is bounded by retention (<a href=\"#art12-retention\" class=\"auto internal xref\">Section 5.5</a>, <a href=\"#dora-retention\" class=\"auto internal xref\">Section 7.4</a>), not freshness. Historical receipts within retention MUST verify on the same path as fresh ones.<a href=\"#section-4.1.2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"issuer-id\">\n<section id=\"section-4.1.3\">\n          <h4 id=\"name-issuer_id\">\n<a href=\"#section-4.1.3\" class=\"section-number selfRef\">4.1.3. </a><a href=\"#name-issuer_id\" class=\"section-name selfRef\">issuer_id</a>\n          </h4>\n<p id=\"section-4.1.3-1\">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 <code>issuer_id</code> 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 <code>issuer_id</code> MUST match the <code>kid</code> field of the signature object, Compliance Receipts MUST place the same value in both <code>issuer_id</code> and <code>kid</code>; 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 <code>sb:issuer:&lt;base58-fingerprint&gt;</code> form of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> Section 2.1.1. This profile thereby supersedes the upstream RECOMMENDED <code>kid</code> format for Compliance Receipts; the upstream RECOMMENDED format remains valid for non-Compliance receipts.<a href=\"#section-4.1.3-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.1.3-2\">Where the Deployer is an EU-regulated entity, implementations SHOULD use the Legal Entity Identifier (LEI) as defined by <span>[<a href=\"#ISO17442\" class=\"cite xref\">ISO17442</a>]</span>. 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 <code>00</code>, and whose two trailing characters (positions 19-20) are the ISO 7064 mod 97-10 check digits computed over positions 1-18 (for example <code>00000000000000000098</code>, where the all-zero 18-character base produces the check digits <code>98</code> 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 (<span>[<a href=\"#W3C-DID\" class=\"cite xref\">W3C-DID</a>]</span>) MAY be used otherwise. Implementations MUST treat the value as opaque on verification; identifier resolution is out of scope for this profile.<a href=\"#section-4.1.3-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"payload-digest\">\n<section id=\"section-4.1.4\">\n          <h4 id=\"name-payload_digest-optional-ups\">\n<a href=\"#section-4.1.4\" class=\"section-number selfRef\">4.1.4. </a><a href=\"#name-payload_digest-optional-ups\" class=\"section-name selfRef\">payload_digest (OPTIONAL upstream, REQUIRED in this profile)</a>\n          </h4>\n<p id=\"section-4.1.4-1\">REQUIRED for Compliance Receipts. The value MUST follow the upstream object form (<code>hash</code>, <code>size</code>, optional <code>preview</code>) defined in Section 2.2 of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>; 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.<a href=\"#section-4.1.4-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"action-ref\">\n<section id=\"section-4.1.5\">\n          <h4 id=\"name-action_ref-optional-upstrea\">\n<a href=\"#section-4.1.5\" class=\"section-number selfRef\">4.1.5. </a><a href=\"#name-action_ref-optional-upstrea\" class=\"section-name selfRef\">action_ref (OPTIONAL upstream, REQUIRED in this profile)</a>\n          </h4>\n<p id=\"section-4.1.5-1\">REQUIRED for Compliance Receipts. The value is a SHA-256 hash of the canonical Action representation as defined in <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>. This profile uses <code>action_ref</code> as the primary join key for cross-engine reconstruction during an audit.<a href=\"#section-4.1.5-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sandbox-state\">\n<section id=\"section-4.1.6\">\n          <h4 id=\"name-sandbox_state-optional-upst\">\n<a href=\"#section-4.1.6\" class=\"section-number selfRef\">4.1.6. </a><a href=\"#name-sandbox_state-optional-upst\" class=\"section-name selfRef\">sandbox_state (OPTIONAL upstream, REQUIRED for High-Risk in this profile)</a>\n          </h4>\n<p id=\"section-4.1.6-1\">REQUIRED for receipts produced by High-Risk AI Systems. Upstream defines <code>sandbox_state</code> as an OS-level containment status and restricts the value to one of <code>enabled</code>, <code>disabled</code>, or <code>unavailable</code>; this profile inherits that enumeration unchanged. A Deployer that operates a High-Risk AI System and produces a stream of receipts in which <code>sandbox_state</code> is consistently disabled SHOULD treat that stream as a finding under Article 26 and document the rationale in the Audit Pack metadata.<a href=\"#section-4.1.6-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"iteration-id\">\n<section id=\"section-4.1.7\">\n          <h4 id=\"name-iteration_id-optional-upstr\">\n<a href=\"#section-4.1.7\" class=\"section-number selfRef\">4.1.7. </a><a href=\"#name-iteration_id-optional-upstr\" class=\"section-name selfRef\">iteration_id (OPTIONAL upstream, REQUIRED for multi-step in this profile)</a>\n          </h4>\n<p id=\"section-4.1.7-1\">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. <code>iteration_id</code> is distinct from the upstream <code>session_id</code> field defined in <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> Section 3.1.1, which is an opaque MCP session identifier. A Compliance Receipt MAY carry both: <code>session_id</code> for MCP-session correlation and <code>iteration_id</code> for logical-task correlation.<a href=\"#section-4.1.7-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"decision-fields\">\n<section id=\"section-4.2\">\n        <h3 id=\"name-decision-receipt-fields-typ\">\n<a href=\"#section-4.2\" class=\"section-number selfRef\">4.2. </a><a href=\"#name-decision-receipt-fields-typ\" class=\"section-name selfRef\">Decision Receipt Fields (type protectmcp:decision)</a>\n        </h3>\n<p id=\"section-4.2-1\">The <code>decision</code> field value MUST be <code>allow</code>, <code>deny</code>, or <code>rate_limit</code>. Implementations using a different internal vocabulary (e.g. <code>permit</code> for allow) MUST normalise on emission and on Audit Pack export.<a href=\"#section-4.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.2-2\">The upstream <code>tool_name</code> field (REQUIRED in <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> Section 3.1.1) is REQUIRED for Compliance Receipts of type <code>protectmcp:decision</code>.<a href=\"#section-4.2-2\" class=\"pilcrow\">¶</a></p>\n<div id=\"reason\">\n<section id=\"section-4.2.1\">\n          <h4 id=\"name-reason-optional-upstream-re\">\n<a href=\"#section-4.2.1\" class=\"section-number selfRef\">4.2.1. </a><a href=\"#name-reason-optional-upstream-re\" class=\"section-name selfRef\">reason (OPTIONAL upstream, REQUIRED for deny/rate_limit in this profile)</a>\n          </h4>\n<p id=\"section-4.2.1-1\">REQUIRED for Compliance Receipts where <code>decision</code> is <code>deny</code> or <code>rate_limit</code>. The value MUST be a machine-readable <code>reason</code> code drawn from a vocabulary documented in the Deployer's Audit Pack metadata.<a href=\"#section-4.2.1-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"policy-digest\">\n<section id=\"section-4.2.2\">\n          <h4 id=\"name-policy_digest-optional-upst\">\n<a href=\"#section-4.2.2\" class=\"section-number selfRef\">4.2.2. </a><a href=\"#name-policy_digest-optional-upst\" class=\"section-name selfRef\">policy_digest (OPTIONAL upstream, REQUIRED in this profile)</a>\n          </h4>\n<p id=\"section-4.2.2-1\">REQUIRED for Compliance Receipts. The value MUST be of the form <code>sha256:&lt;hex&gt;</code> and MUST reference a policy artefact that the Deployer retains for the applicable retention window. Verifiers MUST reject Compliance Receipts whose <code>policy_digest</code> does not resolve in the Audit Pack.<a href=\"#section-4.2.2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"hash-chain\">\n<section id=\"section-4.3\">\n        <h3 id=\"name-hash-chain-linkage-optional\">\n<a href=\"#section-4.3\" class=\"section-number selfRef\">4.3. </a><a href=\"#name-hash-chain-linkage-optional\" class=\"section-name selfRef\">Hash-Chain Linkage (OPTIONAL upstream, REQUIRED in this profile)</a>\n        </h3>\n<p id=\"section-4.3-1\">Upstream Commitment Mode introduces <code>previousReceiptHash</code> as part of an optional extension. This profile makes the linkage REQUIRED. Implementations MUST emit a <code>previousReceiptHash</code> field, populated as specified by Section 5.7 of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>: the lowercase hex encoding of SHA-256(JCS(receipt)) per <span>[<a href=\"#RFC8785\" class=\"cite xref\">RFC8785</a>]</span>, 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; <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> Section 5.7 specifies only the digest scope of subsequent links). JSON key is the literal <code>previousReceiptHash</code> (camelCase, case-sensitive); snake_case aliases MUST NOT appear on the wire.<a href=\"#section-4.3-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"anchoring\">\n<section id=\"section-4.4\">\n        <h3 id=\"name-anchoring-no-upstream-equiv\">\n<a href=\"#section-4.4\" class=\"section-number selfRef\">4.4. </a><a href=\"#name-anchoring-no-upstream-equiv\" class=\"section-name selfRef\">Anchoring (No Upstream Equivalent)</a>\n        </h3>\n<p id=\"section-4.4-1\"><span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> lists Sigstore Rekor in its Implementation Status appendix as an OPTIONAL temporal anchor. This profile imposes a normative anchoring requirement.<a href=\"#section-4.4-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4-2\">Compliance Receipts MUST be anchored. An anchor is an <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span> timestamp token covering the signed envelope, an <span>[<a href=\"#OPENTIMESTAMPS\" class=\"cite xref\">OPENTIMESTAMPS</a>]</span> 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 <code>anchors</code> top-level key removed prior to canonicalization, leaving the two-key object {<code>payload</code>, <code>signature</code>}. The <code>anchors</code> 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.<a href=\"#section-4.4-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4-3\">An anchor MAY be attached after issuance if the receipt is persisted with an unambiguous <code>pending</code> marker and the anchor lands within a documented bound. For <span>[<a href=\"#OPENTIMESTAMPS\" class=\"cite xref\">OPENTIMESTAMPS</a>]</span>, 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. <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span> tokens MUST be obtained synchronously. A verifier MUST treat a pending receipt as non-conformant once the bound elapses.<a href=\"#section-4.4-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4-4\">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.<a href=\"#section-4.4-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4-5\">Where the anchor <code>type</code> is <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span>, 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 <span>[<a href=\"#RFC5816\" class=\"cite xref\">RFC5816</a>]</span> MUST be accepted by Compliance Verifiers. Where the anchor <code>type</code> is <span>[<a href=\"#OPENTIMESTAMPS\" class=\"cite xref\">OPENTIMESTAMPS</a>]</span>, 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.<a href=\"#section-4.4-5\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"extension-fields\">\n<section id=\"section-4.5\">\n        <h3 id=\"name-extension-fields\">\n<a href=\"#section-4.5\" class=\"section-number selfRef\">4.5. </a><a href=\"#name-extension-fields\" class=\"section-name selfRef\">Extension Fields</a>\n        </h3>\n<p id=\"section-4.5-1\">This profile defines two extension fields that MAY appear in the signed payload alongside the fields defined by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>. Neither field is defined upstream.<a href=\"#section-4.5-1\" class=\"pilcrow\">¶</a></p>\n<span class=\"break\"></span><dl class=\"dlParallel\" id=\"section-4.5-2\">\n          <dt id=\"section-4.5-2.1\">\n<code>risk_class</code>:</dt>\n          <dd style=\"margin-left: 1.5em\" id=\"section-4.5-2.2\">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.<a href=\"#section-4.5-2.2\" class=\"pilcrow\">¶</a>\n</dd>\n          <dd class=\"break\"></dd>\n<dt id=\"section-4.5-2.3\">\n<code>incident_class</code>:</dt>\n          <dd style=\"margin-left: 1.5em\" id=\"section-4.5-2.4\">A vocabulary term identifying the ICT-related incident classification of the Action. Binding classification criteria are drawn from <span>[<a href=\"#REG-2024-1772\" class=\"cite xref\">REG-2024-1772</a>]</span>. The reporting templates are bound by <span>[<a href=\"#REG-2025-302\" class=\"cite xref\">REG-2025-302</a>]</span>, 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 (<a href=\"#audit-pack\" class=\"auto internal xref\">Section 8</a>) projects each refinement to one of the six canonical values.<a href=\"#section-4.5-2.4\" class=\"pilcrow\">¶</a>\n</dd>\n        <dd class=\"break\"></dd>\n</dl>\n<p id=\"section-4.5-3\"><code>risk_class</code> MUST be encoded as a JSON string. <code>incident_class</code> 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 <span>[<a href=\"#REG-2025-302\" class=\"cite xref\">REG-2025-302</a>]</span>. Both extension fields appear inside the signed <code>payload</code> 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.<a href=\"#section-4.5-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.5-4\">Implementations MAY define additional extension fields. Such fields MUST NOT collide with names defined by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> or by this document. Implementations defining extension fields SHOULD register them in the registry described in <a href=\"#iana\" class=\"auto internal xref\">Section 11</a>.<a href=\"#section-4.5-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"article-12\">\n<section id=\"section-5\">\n      <h2 id=\"name-eu-ai-act-article-12-bindin\">\n<a href=\"#section-5\" class=\"section-number selfRef\">5. </a><a href=\"#name-eu-ai-act-article-12-bindin\" class=\"section-name selfRef\">EU AI Act Article 12 Binding</a>\n      </h2>\n<p id=\"section-5-1\">Each subsection cites the operative phrase of Article 12 and binds it to the receipt field that satisfies it.<a href=\"#section-5-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"art12-1\">\n<section id=\"section-5.1\">\n        <h3 id=\"name-article-121-automatic-recor\">\n<a href=\"#section-5.1\" class=\"section-number selfRef\">5.1. </a><a href=\"#name-article-121-automatic-recor\" class=\"section-name selfRef\">Article 12(1), automatic recording of events</a>\n        </h3>\n<p id=\"section-5.1-1\">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).<a href=\"#section-5.1-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"art12-2a\">\n<section id=\"section-5.2\">\n        <h3 id=\"name-article-122a-identifying-si\">\n<a href=\"#section-5.2\" class=\"section-number selfRef\">5.2. </a><a href=\"#name-article-122a-identifying-si\" class=\"section-name selfRef\">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</a>\n        </h3>\n<p id=\"section-5.2-1\">The combination of <code>type</code>, <code>decision</code>, <code>reason</code>, and <code>policy_digest</code> 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 <code>risk_class</code> extension field.<a href=\"#section-5.2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"art12-2b\">\n<section id=\"section-5.3\">\n        <h3 id=\"name-article-122b-facilitating-t\">\n<a href=\"#section-5.3\" class=\"section-number selfRef\">5.3. </a><a href=\"#name-article-122b-facilitating-t\" class=\"section-name selfRef\">Article 12(2)(b), facilitating the post-market monitoring referred to in Article 72</a>\n        </h3>\n<p id=\"section-5.3-1\">The hash-chain linkage required by <a href=\"#hash-chain\" class=\"auto internal xref\">Section 4.3</a> satisfies post-market monitoring traceability. The chain head MUST be made available to the Provider and to the competent authority on request.<a href=\"#section-5.3-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"art12-2c\">\n<section id=\"section-5.4\">\n        <h3 id=\"name-article-122c-monitoring-the\">\n<a href=\"#section-5.4\" class=\"section-number selfRef\">5.4. </a><a href=\"#name-article-122c-monitoring-the\" class=\"section-name selfRef\">Article 12(2)(c), monitoring the operation of high-risk AI systems referred to in Article 26(5)</a>\n        </h3>\n<p id=\"section-5.4-1\">Any change to the policy artefact referenced by <code>policy_digest</code> MUST produce a new digest. A change in <code>policy_digest</code> 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.<a href=\"#section-5.4-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"art12-retention\">\n<section id=\"section-5.5\">\n        <h3 id=\"name-retention\">\n<a href=\"#section-5.5\" class=\"section-number selfRef\">5.5. </a><a href=\"#name-retention\" class=\"section-name selfRef\">Retention</a>\n        </h3>\n<p id=\"section-5.5-1\">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 <a href=\"#dora-retention\" class=\"auto internal xref\">Section 7.4</a> applies.<a href=\"#section-5.5-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"article-26\">\n<section id=\"section-6\">\n      <h2 id=\"name-eu-ai-act-article-26-bindin\">\n<a href=\"#section-6\" class=\"section-number selfRef\">6. </a><a href=\"#name-eu-ai-act-article-26-bindin\" class=\"section-name selfRef\">EU AI Act Article 26 Binding</a>\n      </h2>\n<div id=\"art26-1\">\n<section id=\"section-6.1\">\n        <h3 id=\"name-article-261-in-accordance-w\">\n<a href=\"#section-6.1\" class=\"section-number selfRef\">6.1. </a><a href=\"#name-article-261-in-accordance-w\" class=\"section-name selfRef\">Article 26(1), in accordance with the instructions for use</a>\n        </h3>\n<p id=\"section-6.1-1\"><code>policy_digest</code> MUST resolve through <a href=\"#audit-pack\" class=\"auto internal xref\">Section 8</a> 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.<a href=\"#section-6.1-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"art26-2\">\n<section id=\"section-6.2\">\n        <h3 id=\"name-article-262-assign-human-ov\">\n<a href=\"#section-6.2\" class=\"section-number selfRef\">6.2. </a><a href=\"#name-article-262-assign-human-ov\" class=\"section-name selfRef\">Article 26(2), assign human oversight</a>\n        </h3>\n<p id=\"section-6.2-1\">For any Action whose <code>decision</code> is <code>allow</code> 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 <code>protectmcp:lifecycle</code> Compliance Receipt records the absence of such review with a <code>reason</code> 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.<a href=\"#section-6.2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"art26-5\">\n<section id=\"section-6.3\">\n        <h3 id=\"name-article-265-monitor-the-ope\">\n<a href=\"#section-6.3\" class=\"section-number selfRef\">6.3. </a><a href=\"#name-article-265-monitor-the-ope\" class=\"section-name selfRef\">Article 26(5), monitor the operation</a>\n        </h3>\n<p id=\"section-6.3-1\">A Deployer MUST be able to produce an Audit Pack covering any contiguous time window since the High-Risk AI System became operational.<a href=\"#section-6.3-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"art26-6\">\n<section id=\"section-6.4\">\n        <h3 id=\"name-article-266-keep-the-logs-f\">\n<a href=\"#section-6.4\" class=\"section-number selfRef\">6.4. </a><a href=\"#name-article-266-keep-the-logs-f\" class=\"section-name selfRef\">Article 26(6), keep the logs for at least six months</a>\n        </h3>\n<p id=\"section-6.4-1\">Compliance Receipts under this binding MUST be retained for at least the period stated in <a href=\"#art12-retention\" class=\"auto internal xref\">Section 5.5</a>. Where the Deployer is also a Financial Entity, the longer sectoral floor in <a href=\"#dora-retention\" class=\"auto internal xref\">Section 7.4</a> applies.<a href=\"#section-6.4-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"dora-17\">\n<section id=\"section-7\">\n      <h2 id=\"name-dora-article-17-binding\">\n<a href=\"#section-7\" class=\"section-number selfRef\">7. </a><a href=\"#name-dora-article-17-binding\" class=\"section-name selfRef\">DORA Article 17 Binding</a>\n      </h2>\n<div id=\"dora-17-1\">\n<section id=\"section-7.1\">\n        <h3 id=\"name-article-171-ict-related-inc\">\n<a href=\"#section-7.1\" class=\"section-number selfRef\">7.1. </a><a href=\"#name-article-171-ict-related-inc\" class=\"section-name selfRef\">Article 17(1), ICT-related incident management process</a>\n        </h3>\n<p id=\"section-7.1-1\">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. <code>action_ref</code> MUST be carried into the Financial Entity's incident workflow as the primary correlation key.<a href=\"#section-7.1-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"dora-17-2\">\n<section id=\"section-7.2\">\n        <h3 id=\"name-article-172-record-all-ict-\">\n<a href=\"#section-7.2\" class=\"section-number selfRef\">7.2. </a><a href=\"#name-article-172-record-all-ict-\" class=\"section-name selfRef\">Article 17(2), record all ICT-related incidents and significant cyber threats</a>\n        </h3>\n<p id=\"section-7.2-1\">The hash chain required by <a href=\"#hash-chain\" class=\"auto internal xref\">Section 4.3</a> 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.<a href=\"#section-7.2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"dora-17-3-b\">\n<section id=\"section-7.3\">\n        <h3 id=\"name-article-173b-establish-proc\">\n<a href=\"#section-7.3\" class=\"section-number selfRef\">7.3. </a><a href=\"#name-article-173b-establish-proc\" class=\"section-name selfRef\">Article 17(3)(b), establish procedures to identify, track, log, categorise and classify ICT-related incidents</a>\n        </h3>\n<p id=\"section-7.3-1\">For Actions identified as part of an ICT-related incident, the producing system MUST emit <code>incident_class</code>. The classification criteria are those set out in Article 18(1) of <span>[<a href=\"#DORA\" class=\"cite xref\">DORA</a>]</span>, with further specification in <span>[<a href=\"#REG-2024-1772\" class=\"cite xref\">REG-2024-1772</a>]</span>. The canonical reporting enumeration to which <code>incident_class</code> flattens is bound by Annex II field 3.23 of <span>[<a href=\"#REG-2025-302\" class=\"cite xref\">REG-2025-302</a>]</span> (see <a href=\"#extension-fields\" class=\"auto internal xref\">Section 4.5</a>). Implementations MUST publish a flattened mapping in the Audit Pack manifest as required by <a href=\"#extension-fields\" class=\"auto internal xref\">Section 4.5</a>.<a href=\"#section-7.3-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"dora-retention\">\n<section id=\"section-7.4\">\n        <h3 id=\"name-retention-2\">\n<a href=\"#section-7.4\" class=\"section-number selfRef\">7.4. </a><a href=\"#name-retention-2\" class=\"section-name selfRef\">Retention</a>\n        </h3>\n<p id=\"section-7.4-1\">Article 17 of <span>[<a href=\"#DORA\" class=\"cite xref\">DORA</a>]</span> 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 <span>[<a href=\"#MIFID2\" class=\"cite xref\">MIFID2</a>]</span>, with Article 72 and Annex I of <span>[<a href=\"#REG-2017-565\" class=\"cite xref\">REG-2017-565</a>]</span> fixing the form and content of those records. The explicit five-year retention period in <span>[<a href=\"#MIFID2\" class=\"cite xref\">MIFID2</a>]</span> 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.<a href=\"#section-7.4-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7.4-2\">Records of customer due diligence and of transactions under Article 40 of <span>[<a href=\"#AMLD\" class=\"cite xref\">AMLD</a>]</span> 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 <span>[<a href=\"#AMLR\" class=\"cite xref\">AMLR</a>]</span> 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.<a href=\"#section-7.4-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7.4-3\">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.<a href=\"#section-7.4-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"audit-pack\">\n<section id=\"section-8\">\n      <h2 id=\"name-audit-pack-composition\">\n<a href=\"#section-8\" class=\"section-number selfRef\">8. </a><a href=\"#name-audit-pack-composition\" class=\"section-name selfRef\">Audit Pack Composition</a>\n      </h2>\n<p id=\"section-8-1\">This section is informative. It describes the contents of an Audit Pack as introduced in <a href=\"#conventions\" class=\"auto internal xref\">Section 2</a>.<a href=\"#section-8-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-2\">An Audit Pack contains the following items.<a href=\"#section-8-2\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-8-3.1\">The set of Compliance Receipts covered by the requested time window, in the canonical envelope form defined by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>.<a href=\"#section-8-3.1\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-8-3.2\">The chain commitments that link the receipts: for each receipt, the value of <code>previousReceiptHash</code> and the recomputed digest of the predecessor envelope.<a href=\"#section-8-3.2\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-8-3.3\">The anchor evidence: <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span> tokens, OpenTimestamps proofs, or both. Each anchor item MUST be associated, by hash, with the receipt or aggregate it covers.<a href=\"#section-8-3.3\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-8-3.4\">The trust anchor metadata that identifies the Deployer or Financial Entity associated with each <code>issuer_id</code> value.<a href=\"#section-8-3.4\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-8-3.5\">The verification key material for every <code>kid</code> value present, in a form that does not require online retrieval.<a href=\"#section-8-3.5\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-8-3.6\">Vocabularies referenced by <code>reason</code>, <code>risk_class</code>, <code>incident_class</code>, and extension fields, embedded as JSON arrays with a stable identifier. The Audit Pack MUST expose a digest-resolution facility that, given a <code>policy_digest</code>, returns the retained artefact.<a href=\"#section-8-3.6\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-8-3.7\">A regime mapping document that names which receipts the producer asserts as evidence under Article 12, Article 26, or DORA Article 17.<a href=\"#section-8-3.7\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"section-8-3.8\">The chain heads valid at the start and end of the time window, signed by the Deployer or Financial Entity.<a href=\"#section-8-3.8\" class=\"pilcrow\">¶</a>\n</li>\n      </ul>\n<p id=\"section-8-4\">An Audit Pack MUST itself be signed per the <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> algorithm registry. The manifest MUST include <code>bundle_digest</code>, <code>bundle_signature</code>, <code>bundle_public_key</code>, and <code>algorithm_registry_version</code>.<a href=\"#section-8-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"verifier\">\n<section id=\"section-9\">\n      <h2 id=\"name-verifier-behaviour\">\n<a href=\"#section-9\" class=\"section-number selfRef\">9. </a><a href=\"#name-verifier-behaviour\" class=\"section-name selfRef\">Verifier Behaviour</a>\n      </h2>\n<p id=\"section-9-1\">A verifier conformant to this profile is referred to as a Compliance Verifier.<a href=\"#section-9-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"mandatory-checks\">\n<section id=\"section-9.1\">\n        <h3 id=\"name-mandatory-checks\">\n<a href=\"#section-9.1\" class=\"section-number selfRef\">9.1. </a><a href=\"#name-mandatory-checks\" class=\"section-name selfRef\">Mandatory Checks</a>\n        </h3>\n<p id=\"section-9.1-1\">A Compliance Verifier MUST perform all of the following checks before treating a receipt as a Compliance Receipt.<a href=\"#section-9.1-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-9.1-2.1\">Verify the signature using the algorithm declared in <code>signature.alg</code>, in accordance with <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>.<a href=\"#section-9.1-2.1\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.1-2.2\">Resolve the verification key through one of the key-distribution mechanisms described in Section 4.3 of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> (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.<a href=\"#section-9.1-2.2\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.1-2.3\">Verify that all fields marked REQUIRED by <a href=\"#field-profile\" class=\"auto internal xref\">Section 4</a> are present and well-formed.<a href=\"#section-9.1-2.3\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.1-2.4\">Verify the hash-chain linkage by recomputing the digest of the immediately preceding envelope and comparing it to <code>previousReceiptHash</code>.<a href=\"#section-9.1-2.4\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.1-2.5\">Verify at least one anchor: an <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span> token, an <span>[<a href=\"#OPENTIMESTAMPS\" class=\"cite xref\">OPENTIMESTAMPS</a>]</span> 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\".<a href=\"#section-9.1-2.5\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.1-2.6\">Verify the future-skew bound on <code>issued_at</code> per <a href=\"#issued-at\" class=\"auto internal xref\">Section 4.1.2</a>. Past skew MUST NOT cause non-conformance when the receipt is within retention.<a href=\"#section-9.1-2.6\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.1-2.7\">Verify that <code>policy_digest</code> resolves through <a href=\"#audit-pack\" class=\"auto internal xref\">Section 8</a>. A digest computed over a nonced or otherwise mixed-input form (for example, SHA-256(nonce || JCS(artefact))) MUST NOT be treated as <code>policy_digest</code>; 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 <span>[<a href=\"#RFC8785\" class=\"cite xref\">RFC8785</a>]</span>.<a href=\"#section-9.1-2.7\" class=\"pilcrow\">¶</a>\n</li>\n        </ul>\n<p id=\"section-9.1-3\">A receipt that fails any of these checks MUST be reported as non-conformant.<a href=\"#section-9.1-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"optional-checks\">\n<section id=\"section-9.2\">\n        <h3 id=\"name-optional-checks\">\n<a href=\"#section-9.2\" class=\"section-number selfRef\">9.2. </a><a href=\"#name-optional-checks\" class=\"section-name selfRef\">Optional Checks</a>\n        </h3>\n<p id=\"section-9.2-1\">A Compliance Verifier MAY additionally perform any of the following.<a href=\"#section-9.2-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-9.2-2.1\">Cross-check the <code>issuer_id</code> against an external registry of Deployers or Financial Entities.<a href=\"#section-9.2-2.1\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.2-2.2\">Resolve the policy artefact referenced by <code>policy_digest</code> and compare it to a Provider-supplied reference policy.<a href=\"#section-9.2-2.2\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.2-2.3\">Recompute the chain head and compare it to a Deployer-published value.<a href=\"#section-9.2-2.3\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-9.2-2.4\">Validate <code>incident_class</code> (each element if encoded as an array) and <code>risk_class</code> extension values against the vocabularies referenced in the Audit Pack.<a href=\"#section-9.2-2.4\" class=\"pilcrow\">¶</a>\n</li>\n        </ul>\n</section>\n</div>\n<div id=\"reporting\">\n<section id=\"section-9.3\">\n        <h3 id=\"name-reporting\">\n<a href=\"#section-9.3\" class=\"section-number selfRef\">9.3. </a><a href=\"#name-reporting\" class=\"section-name selfRef\">Reporting</a>\n        </h3>\n<p id=\"section-9.3-1\">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 <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>.<a href=\"#section-9.3-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"security\">\n<section id=\"section-10\">\n      <h2 id=\"name-security-considerations\">\n<a href=\"#section-10\" class=\"section-number selfRef\">10. </a><a href=\"#name-security-considerations\" class=\"section-name selfRef\">Security Considerations</a>\n      </h2>\n<p id=\"section-10-1\">This profile inherits all of the security considerations of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>. The following considerations are specific to the compliance binding.<a href=\"#section-10-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"tamper\">\n<section id=\"section-10.1\">\n        <h3 id=\"name-tamper-resistance\">\n<a href=\"#section-10.1\" class=\"section-number selfRef\">10.1. </a><a href=\"#name-tamper-resistance\" class=\"section-name selfRef\">Tamper Resistance</a>\n        </h3>\n<p id=\"section-10.1-1\">The hash-chain linkage required by <a href=\"#hash-chain\" class=\"auto internal xref\">Section 4.3</a> 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 <a href=\"#anchoring\" class=\"auto internal xref\">Section 4.4</a> binds segments of the chain to wall-clock time, raising the cost of a re-signing attack.<a href=\"#section-10.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10.1-2\">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.<a href=\"#section-10.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10.1-3\">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 <a href=\"#hash-chain\" class=\"auto internal xref\">Section 4.3</a> and <a href=\"#anchoring\" class=\"auto internal xref\">Section 4.4</a> close that window.<a href=\"#section-10.1-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"key-compromise\">\n<section id=\"section-10.2\">\n        <h3 id=\"name-key-compromise\">\n<a href=\"#section-10.2\" class=\"section-number selfRef\">10.2. </a><a href=\"#name-key-compromise\" class=\"section-name selfRef\">Key Compromise</a>\n        </h3>\n<p id=\"section-10.2-1\">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.<a href=\"#section-10.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10.2-2\">Verifiers MUST consult revocation metadata supplied with the Audit Pack and MUST reject Compliance Receipts whose signing key was revoked at or before <code>issued_at</code>.<a href=\"#section-10.2-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"long-term\">\n<section id=\"section-10.3\">\n        <h3 id=\"name-retention-and-long-term-ver\">\n<a href=\"#section-10.3\" class=\"section-number selfRef\">10.3. </a><a href=\"#name-retention-and-long-term-ver\" class=\"section-name selfRef\">Retention and Long-Term Verifiability</a>\n        </h3>\n<p id=\"section-10.3-1\">The 1827-day retention floor in <a href=\"#dora-17\" class=\"auto internal xref\">Section 7</a> exceeds the typical operational crypto-period of a signing key under recommended key-management practice. Implementations SHOULD use ML-DSA-65 from the <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> algorithm registry (<span>[<a href=\"#FIPS204\" class=\"cite xref\">FIPS204</a>]</span>) 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.<a href=\"#section-10.3-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"privacy\">\n<section id=\"section-10.4\">\n        <h3 id=\"name-privacy\">\n<a href=\"#section-10.4\" class=\"section-number selfRef\">10.4. </a><a href=\"#name-privacy\" class=\"section-name selfRef\">Privacy</a>\n        </h3>\n<p id=\"section-10.4-1\"><span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> 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 <code>risk_class</code> and <code>incident_class</code> values MUST be drawn from controlled vocabularies and MUST NOT carry free-text personal data.<a href=\"#section-10.4-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10.4-2\">Where the underlying Action references a data subject, the <code>payload_digest</code> 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.<a href=\"#section-10.4-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"anchor-trust\">\n<section id=\"section-10.5\">\n        <h3 id=\"name-anchor-trust\">\n<a href=\"#section-10.5\" class=\"section-number selfRef\">10.5. </a><a href=\"#name-anchor-trust\" class=\"section-name selfRef\">Anchor Trust</a>\n        </h3>\n<p id=\"section-10.5-1\">The trust assumptions of an anchor depend on the anchor <code>type</code>. <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span> 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.<a href=\"#section-10.5-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"replay\">\n<section id=\"section-10.6\">\n        <h3 id=\"name-replay\">\n<a href=\"#section-10.6\" class=\"section-number selfRef\">10.6. </a><a href=\"#name-replay\" class=\"section-name selfRef\">Replay</a>\n        </h3>\n<p id=\"section-10.6-1\">A Compliance Receipt is bound to a single Action via <code>action_ref</code>. Replay of a Compliance Receipt against a different Action is detectable by <code>action_ref</code> mismatch. The 300-second <code>issued_at</code> skew bound stated in <a href=\"#issued-at\" class=\"auto internal xref\">Section 4.1.2</a> limits the window in which a freshly-replayed receipt can be presented as recent.<a href=\"#section-10.6-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10.6-2\">Where the verifier supports it, two receipts sharing <code>action_ref</code> and <code>issuer_id</code> 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.<a href=\"#section-10.6-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"cross-regime\">\n<section id=\"section-10.7\">\n        <h3 id=\"name-cross-regime-conflict\">\n<a href=\"#section-10.7\" class=\"section-number selfRef\">10.7. </a><a href=\"#name-cross-regime-conflict\" class=\"section-name selfRef\">Cross-Regime Conflict</a>\n        </h3>\n<p id=\"section-10.7-1\">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.<a href=\"#section-10.7-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"algorithm-agility\">\n<section id=\"section-10.8\">\n        <h3 id=\"name-algorithm-agility\">\n<a href=\"#section-10.8\" class=\"section-number selfRef\">10.8. </a><a href=\"#name-algorithm-agility\" class=\"section-name selfRef\">Algorithm Agility</a>\n        </h3>\n<p id=\"section-10.8-1\">This profile inherits its algorithm registry from <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>. Implementations MUST treat the verification of a historical receipt according to the algorithm registry that was in force at <code>issued_at</code>, not the registry in force at the time of verification, provided that the signing key was not revoked.<a href=\"#section-10.8-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"iana\">\n<section id=\"section-11\">\n      <h2 id=\"name-iana-considerations\">\n<a href=\"#section-11\" class=\"section-number selfRef\">11. </a><a href=\"#name-iana-considerations\" class=\"section-name selfRef\">IANA Considerations</a>\n      </h2>\n<p id=\"section-11-1\">This document requests two new IANA registries to support stable, machine-checkable extensions to the Compliance Receipt format.<a href=\"#section-11-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"iana-extension-fields\">\n<section id=\"section-11.1\">\n        <h3 id=\"name-compliance-receipt-extensio\">\n<a href=\"#section-11.1\" class=\"section-number selfRef\">11.1. </a><a href=\"#name-compliance-receipt-extensio\" class=\"section-name selfRef\">Compliance Receipt Extension Fields Registry</a>\n        </h3>\n<p id=\"section-11.1-1\">IANA is requested to create a new registry titled \"Compliance Receipt Extension Fields\" under a new \"Compliance Receipts\" registry group.<a href=\"#section-11.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11.1-2\">This registry covers both signed-payload fields and envelope-level fields (siblings of <code>payload</code> and <code>signature</code>); each entry's Description identifies which.<a href=\"#section-11.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11.1-3\">Each entry contains:<a href=\"#section-11.1-3\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-11.1-4.1\">Field Name: a JSON object key, lowercase ASCII letters, digits, and underscore.<a href=\"#section-11.1-4.1\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.1-4.2\">Description: a one-line summary of the field's purpose.<a href=\"#section-11.1-4.2\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.1-4.3\">Reference: the document that defines the field's semantics.<a href=\"#section-11.1-4.3\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.1-4.4\">Vocabulary: a URL or registry pointer for the controlled vocabulary that field values are drawn from, or \"free-form\" if none.<a href=\"#section-11.1-4.4\" class=\"pilcrow\">¶</a>\n</li>\n        </ul>\n<p id=\"section-11.1-5\">The registration policy is Specification Required, per <span>[<a href=\"#RFC8126\" class=\"cite xref\">RFC8126</a>]</span>. The Designated Expert(s) SHOULD verify that the field name does not collide with any field defined by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>, that the Reference is a stable, dereferenceable specification, and that the Vocabulary is documented sufficiently for an independent verifier to validate values.<a href=\"#section-11.1-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11.1-6\">Initial registry contents:<a href=\"#section-11.1-6\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-11.1-7.1\">\n            <code>risk_class</code> - Risk classification term under the Deployer's risk management documentation - This document - Vocabulary referenced in Audit Pack metadata.<a href=\"#section-11.1-7.1\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.1-7.2\">\n            <code>incident_class</code> - ICT-related incident classification term, criteria per Article 18(1) of <span>[<a href=\"#DORA\" class=\"cite xref\">DORA</a>]</span> with further specification in <span>[<a href=\"#REG-2024-1772\" class=\"cite xref\">REG-2024-1772</a>]</span>, canonical six-value enumeration per Annex II field 3.23 of <span>[<a href=\"#REG-2025-302\" class=\"cite xref\">REG-2025-302</a>]</span> - This document - Audit Pack metadata.<a href=\"#section-11.1-7.2\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.1-7.3\">\n            <code>anchors</code> - Envelope-level array of timestamp / transparency-log anchors covering the signed envelope; entries carry a <code>type</code> discriminator (<code>rfc3161</code> or <code>opentimestamps</code>) and a <code>value</code> field - This document - Anchor type vocabulary: <code>rfc3161</code> per <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span>, <code>opentimestamps</code> per <span>[<a href=\"#OPENTIMESTAMPS\" class=\"cite xref\">OPENTIMESTAMPS</a>]</span>.<a href=\"#section-11.1-7.3\" class=\"pilcrow\">¶</a>\n</li>\n        </ul>\n</section>\n</div>\n<div id=\"iana-type-namespaces\">\n<section id=\"section-11.2\">\n        <h3 id=\"name-compliance-receipt-type-nam\">\n<a href=\"#section-11.2\" class=\"section-number selfRef\">11.2. </a><a href=\"#name-compliance-receipt-type-nam\" class=\"section-name selfRef\">Compliance Receipt Type Namespaces Registry</a>\n        </h3>\n<p id=\"section-11.2-1\">IANA is requested to create a new registry titled \"Compliance Receipt Type Namespaces\" under the same \"Compliance Receipts\" registry group.<a href=\"#section-11.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11.2-2\">Each entry contains:<a href=\"#section-11.2-2\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-11.2-3.1\">Namespace: a colon-separated identifier prefix used as a value of the <code>type</code> field, lowercase ASCII letters, digits, hyphen, underscore, and colon.<a href=\"#section-11.2-3.1\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.2-3.2\">Description: a one-line summary of the receipt category.<a href=\"#section-11.2-3.2\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.2-3.3\">Reference: the document that defines the namespace.<a href=\"#section-11.2-3.3\" class=\"pilcrow\">¶</a>\n</li>\n        </ul>\n<p id=\"section-11.2-4\">The registration policy is Specification Required, per <span>[<a href=\"#RFC8126\" class=\"cite xref\">RFC8126</a>]</span>. The Designated Expert(s) SHOULD verify that the namespace does not collide with any namespace already registered or any namespace reserved by <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>, and that the Reference is a stable specification.<a href=\"#section-11.2-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11.2-5\">Initial registry contents:<a href=\"#section-11.2-5\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-11.2-6.1\">\n            <code>protectmcp:decision</code> - A receipt recording a policy evaluation outcome (<code>allow</code>, <code>deny</code>, <code>rate_limit</code>) for an MCP-mediated tool call - This document.<a href=\"#section-11.2-6.1\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.2-6.2\">\n            <code>protectmcp:restraint</code> - A receipt recording the application or release of a restraint on an agent (e.g., quota, rate limit, sandbox tightening) - This document.<a href=\"#section-11.2-6.2\" class=\"pilcrow\">¶</a>\n</li>\n          <li class=\"normal\" id=\"section-11.2-6.3\">\n            <code>protectmcp:lifecycle</code> - A receipt recording an agent or system lifecycle event (e.g., configuration change, key rotation, oversight review) - This document.<a href=\"#section-11.2-6.3\" class=\"pilcrow\">¶</a>\n</li>\n        </ul>\n</section>\n</div>\n</section>\n</div>\n<div id=\"acks\">\n<section id=\"section-12\">\n      <h2 id=\"name-acknowledgements\">\n<a href=\"#section-12\" class=\"section-number selfRef\">12. </a><a href=\"#name-acknowledgements\" class=\"section-name selfRef\">Acknowledgements</a>\n      </h2>\n<p id=\"section-12-1\">The author thanks Tom Farley for <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>, 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.<a href=\"#section-12-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<section id=\"section-13\">\n      <h2 id=\"name-normative-references\">\n<a href=\"#section-13\" class=\"section-number selfRef\">13. </a><a href=\"#name-normative-references\" class=\"section-name selfRef\">Normative References</a>\n      </h2>\n<dl class=\"references\">\n<dt id=\"RFC2119\">[RFC2119]</dt>\n      <dd>\n<span class=\"refAuthor\">Bradner, S.</span>, <span class=\"refTitle\">\"Key words for use in RFCs to Indicate Requirement Levels\"</span>, <span class=\"seriesInfo\">BCP 14</span>, <span class=\"seriesInfo\">RFC 2119</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC2119</span>, <time datetime=\"1997-03\" class=\"refDate\">March 1997</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc2119\">https://www.rfc-editor.org/info/rfc2119</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8174\">[RFC8174]</dt>\n      <dd>\n<span class=\"refAuthor\">Leiba, B.</span>, <span class=\"refTitle\">\"Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words\"</span>, <span class=\"seriesInfo\">BCP 14</span>, <span class=\"seriesInfo\">RFC 8174</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8174</span>, <time datetime=\"2017-05\" class=\"refDate\">May 2017</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc8174\">https://www.rfc-editor.org/info/rfc8174</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8032\">[RFC8032]</dt>\n      <dd>\n<span class=\"refAuthor\">Josefsson, S.</span> and <span class=\"refAuthor\">I. Liusvaara</span>, <span class=\"refTitle\">\"Edwards-Curve Digital Signature Algorithm (EdDSA)\"</span>, <span class=\"seriesInfo\">RFC 8032</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8032</span>, <time datetime=\"2017-01\" class=\"refDate\">January 2017</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc8032\">https://www.rfc-editor.org/info/rfc8032</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC7518\">[RFC7518]</dt>\n      <dd>\n<span class=\"refAuthor\">Jones, M.</span>, <span class=\"refTitle\">\"JSON Web Algorithms (JWA)\"</span>, <span class=\"seriesInfo\">RFC 7518</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC7518</span>, <time datetime=\"2015-05\" class=\"refDate\">May 2015</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc7518\">https://www.rfc-editor.org/info/rfc7518</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"FIPS204\">[FIPS204]</dt>\n      <dd>\n<span class=\"refAuthor\">National Institute of Standards and Technology</span>, <span class=\"refTitle\">\"Module-Lattice-Based Digital Signature Standard\"</span>, <span class=\"seriesInfo\">FIPS 204</span>, <span class=\"seriesInfo\">DOI 10.6028/NIST.FIPS.204</span>, <time datetime=\"2024-08-13\" class=\"refDate\">13 August 2024</time>, <span>&lt;<a href=\"https://csrc.nist.gov/pubs/fips/204/final\">https://csrc.nist.gov/pubs/fips/204/final</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC5816\">[RFC5816]</dt>\n      <dd>\n<span class=\"refAuthor\">Santesson, S.</span> and <span class=\"refAuthor\">N. Pope</span>, <span class=\"refTitle\">\"ESSCertIDv2 Update for RFC 3161\"</span>, <span class=\"seriesInfo\">RFC 5816</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC5816</span>, <time datetime=\"2010-04\" class=\"refDate\">April 2010</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc5816\">https://www.rfc-editor.org/info/rfc5816</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC3161\">[RFC3161]</dt>\n      <dd>\n<span class=\"refAuthor\">Adams, C.</span>, <span class=\"refAuthor\">Cain, P.</span>, <span class=\"refAuthor\">Pinkas, D.</span>, and <span class=\"refAuthor\">R. Zuccherato</span>, <span class=\"refTitle\">\"Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)\"</span>, <span class=\"seriesInfo\">RFC 3161</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC3161</span>, <time datetime=\"2001-08\" class=\"refDate\">August 2001</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc3161\">https://www.rfc-editor.org/info/rfc3161</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8126\">[RFC8126]</dt>\n      <dd>\n<span class=\"refAuthor\">Cotton, M.</span>, <span class=\"refAuthor\">Leiba, B.</span>, and <span class=\"refAuthor\">T. Narten</span>, <span class=\"refTitle\">\"Guidelines for Writing an IANA Considerations Section in RFCs\"</span>, <span class=\"seriesInfo\">BCP 26</span>, <span class=\"seriesInfo\">RFC 8126</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8126</span>, <time datetime=\"2017-06\" class=\"refDate\">June 2017</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc8126\">https://www.rfc-editor.org/info/rfc8126</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"OPENTIMESTAMPS\">[OPENTIMESTAMPS]</dt>\n      <dd>\n<span class=\"refAuthor\">OpenTimestamps</span>, <span class=\"refTitle\">\"OpenTimestamps Server\"</span>, <time datetime=\"2016-09\" class=\"refDate\">September 2016</time>, <span>&lt;<a href=\"https://github.com/opentimestamps/opentimestamps-server\">https://github.com/opentimestamps/opentimestamps-server</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"ACTA-RECEIPTS\">[ACTA-RECEIPTS]</dt>\n      <dd>\n<span class=\"refAuthor\">Farley, T.</span>, <span class=\"refTitle\">\"Signed Decision Receipts for Machine-to-Machine Access Control\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-farley-acta-signed-receipts-01</span>, <time datetime=\"2026-04-25\" class=\"refDate\">25 April 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/html/draft-farley-acta-signed-receipts-01\">https://datatracker.ietf.org/doc/html/draft-farley-acta-signed-receipts-01</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8785\">[RFC8785]</dt>\n      <dd>\n<span class=\"refAuthor\">Rundgren, A.</span>, <span class=\"refAuthor\">Jordan, B.</span>, and <span class=\"refAuthor\">S. Erdtman</span>, <span class=\"refTitle\">\"JSON Canonicalization Scheme (JCS)\"</span>, <span class=\"seriesInfo\">RFC 8785</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8785</span>, <time datetime=\"2020-06\" class=\"refDate\">June 2020</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc8785\">https://www.rfc-editor.org/info/rfc8785</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd><dt id=\"ISO17442\">[ISO17442]</dt>\n      <dd>\n<span class=\"refAuthor\">ISO</span>, <span class=\"refTitle\">\"Financial services - Legal entity identifier (LEI) - Part 1: Assignment\"</span>, <span class=\"seriesInfo\">ISO 17442-1:2020</span>, <time datetime=\"2020-08\" class=\"refDate\">August 2020</time>, <span>&lt;<a href=\"https://www.iso.org/standard/78829.html\">https://www.iso.org/standard/78829.html</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"W3C-DID\">[W3C-DID]</dt>\n    <dd>\n<span class=\"refAuthor\">W3C</span>, <span class=\"refTitle\">\"Decentralized Identifiers (DIDs) v1.0\"</span>, <time datetime=\"2022-07-19\" class=\"refDate\">19 July 2022</time>, <span>&lt;<a href=\"https://www.w3.org/TR/did-1.0/\">https://www.w3.org/TR/did-1.0/</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n</dl>\n</section>\n<section id=\"section-14\">\n      <h2 id=\"name-informative-references\">\n<a href=\"#section-14\" class=\"section-number selfRef\">14. </a><a href=\"#name-informative-references\" class=\"section-name selfRef\">Informative References</a>\n      </h2>\n<dl class=\"references\">\n<dt id=\"EU-AI-ACT\">[EU-AI-ACT]</dt>\n      <dd>\n<span class=\"refAuthor\">European Parliament and Council</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2024-07-12\" class=\"refDate\">12 July 2024</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/reg/2024/1689/oj\">https://eur-lex.europa.eu/eli/reg/2024/1689/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"DORA\">[DORA]</dt>\n      <dd>\n<span class=\"refAuthor\">European Parliament and Council</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2022-12-27\" class=\"refDate\">27 December 2022</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/reg/2022/2554/oj\">https://eur-lex.europa.eu/eli/reg/2022/2554/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"REG-2025-302\">[REG-2025-302]</dt>\n      <dd>\n<span class=\"refAuthor\">European Commission</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2025-02-20\" class=\"refDate\">20 February 2025</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/reg_impl/2025/302/oj\">https://eur-lex.europa.eu/eli/reg_impl/2025/302/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"REG-2024-1772\">[REG-2024-1772]</dt>\n      <dd>\n<span class=\"refAuthor\">European Commission</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2024-06-25\" class=\"refDate\">25 June 2024</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/reg_del/2024/1772/oj\">https://eur-lex.europa.eu/eli/reg_del/2024/1772/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"MIFID2\">[MIFID2]</dt>\n      <dd>\n<span class=\"refAuthor\">European Parliament and Council</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2014-06-12\" class=\"refDate\">12 June 2014</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/dir/2014/65/oj\">https://eur-lex.europa.eu/eli/dir/2014/65/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"REG-2017-565\">[REG-2017-565]</dt>\n      <dd>\n<span class=\"refAuthor\">European Commission</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2017-03-31\" class=\"refDate\">31 March 2017</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/reg_del/2017/565/oj\">https://eur-lex.europa.eu/eli/reg_del/2017/565/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"AMLD\">[AMLD]</dt>\n      <dd>\n<span class=\"refAuthor\">European Parliament and Council</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2015-06-05\" class=\"refDate\">5 June 2015</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/dir/2015/849/oj\">https://eur-lex.europa.eu/eli/dir/2015/849/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"AMLR\">[AMLR]</dt>\n    <dd>\n<span class=\"refAuthor\">European Parliament and Council</span>, <span class=\"refTitle\">\"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)\"</span>, <time datetime=\"2024-06-19\" class=\"refDate\">19 June 2024</time>, <span>&lt;<a href=\"https://eur-lex.europa.eu/eli/reg/2024/1624/oj\">https://eur-lex.europa.eu/eli/reg/2024/1624/oj</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n</dl>\n</section>\n<div id=\"example\">\n<section id=\"appendix-A\">\n      <h2 id=\"name-worked-example-informative\">\n<a href=\"#name-worked-example-informative\" class=\"section-name selfRef\">Worked Example (Informative)</a>\n      </h2>\n<p id=\"appendix-A-1\">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 <code>previousReceiptHash</code> of 64 zero hex characters per <a href=\"#hash-chain\" class=\"auto internal xref\">Section 4.3</a>.<a href=\"#appendix-A-1\" class=\"pilcrow\">¶</a></p>\n<div class=\"lang-json sourcecode\" id=\"appendix-A-2\">\n<pre>\n{\n  \"payload\": {\n    \"type\": \"protectmcp:decision\",\n    \"issued_at\": \"2026-05-04T09:14:22.118Z\",\n    \"issuer_id\": \"00000000000000000098\",\n    \"action_ref\": \"c1f3a09a4d2e7f6b8c5a91e3d7b04f2a1c8e6f5d3b9a7c2e4f8d6b1a3c5e7f9d\",\n    \"tool_name\": \"deploy\",\n    \"iteration_id\": \"task-2026-05-04-01a3\",\n    \"decision\": \"allow\",\n    \"reason\": \"policy:within_limits\",\n    \"policy_digest\": \"sha256:7b214e8c3d9f4a2b1e6c8f5a3d7b9e2c4f6a8d1b3e5c7f9a2d4b6e8c1f3a5d7b\",\n    \"sandbox_state\": \"enabled\",\n    \"payload_digest\": {\n      \"hash\": \"0a44d2c8e3f5b7a9d1c4e6f8b2a5d7c9e1f3b5a7d9c2e4f6b8a1d3c5e7f9b2a4\",\n      \"size\": 1024\n    },\n    \"previousReceiptHash\": \"f80c11a3b5d7e9c2f4a6b8d1e3c5f7a9b2d4e6c8f1a3b5d7e9c2f4a6b8d1e3c5\",\n    \"risk_class\": \"deployer:financial:medium\"\n  },\n  \"signature\": {\n    \"alg\": \"EdDSA\",\n    \"kid\": \"00000000000000000098\",\n    \"sig\": \"...\"\n  },\n  \"anchors\": [\n    {\n      \"type\": \"rfc3161\",\n      \"value\": \"...\"\n    },\n    {\n      \"type\": \"opentimestamps\",\n      \"value\": \"...\"\n    }\n  ]\n}\n</pre><a href=\"#appendix-A-2\" class=\"pilcrow\">¶</a>\n</div>\n<p id=\"appendix-A-3\">The above receipt satisfies the Article 26 binding because:<a href=\"#appendix-A-3\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"appendix-A-4.1\">\n          <code>issuer_id</code> 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;<a href=\"#appendix-A-4.1\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"appendix-A-4.2\">\n          <code>policy_digest</code> resolves to a retained policy artefact;<a href=\"#appendix-A-4.2\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"appendix-A-4.3\">\n          <code>sandbox_state</code> is enabled, satisfying the High-Risk system constraint of <a href=\"#sandbox-state\" class=\"auto internal xref\">Section 4.1.6</a>;<a href=\"#appendix-A-4.3\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"appendix-A-4.4\">\n          <code>previousReceiptHash</code> links the receipt into the chain per <a href=\"#hash-chain\" class=\"auto internal xref\">Section 4.3</a>;<a href=\"#appendix-A-4.4\" class=\"pilcrow\">¶</a>\n</li>\n        <li class=\"normal\" id=\"appendix-A-4.5\">both an <span>[<a href=\"#RFC3161\" class=\"cite xref\">RFC3161</a>]</span> anchor and an <span>[<a href=\"#OPENTIMESTAMPS\" class=\"cite xref\">OPENTIMESTAMPS</a>]</span> anchor are present per <a href=\"#anchoring\" class=\"auto internal xref\">Section 4.4</a>.<a href=\"#appendix-A-4.5\" class=\"pilcrow\">¶</a>\n</li>\n      </ul>\n<p id=\"appendix-A-5\">Under the DORA Article 17 binding a Compliance Verifier additionally checks the longest applicable sectoral retention floor (1827 days as the default, per <a href=\"#dora-retention\" class=\"auto internal xref\">Section 7.4</a>) and, where present, that <code>incident_class</code> flattens to the canonical six-value vocabulary referenced in <a href=\"#extension-fields\" class=\"auto internal xref\">Section 4.5</a>.<a href=\"#appendix-A-5\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"changelog\">\n<section id=\"appendix-B\">\n      <h2 id=\"name-change-log\">\n<a href=\"#name-change-log\" class=\"section-name selfRef\">Change Log</a>\n      </h2>\n<div id=\"cl-02\">\n<section id=\"appendix-B.1\">\n        <h3 id=\"name-draft-marques-asqav-complia\">\n<a href=\"#name-draft-marques-asqav-complia\" class=\"section-name selfRef\">draft-marques-asqav-compliance-receipts-02</a>\n        </h3>\n<p id=\"appendix-B.1-1\">Wire-shape alignment with upstream <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>: receipt content wrapped in a <code>payload</code> object with <code>signature</code> and <code>anchors</code> as top-level siblings per Section 2.1; <code>payload_digest</code> object form per Section 2.2; <code>action_ref</code> as bare hex per Section 2.2; <code>tool_name</code> REQUIRED for <code>protectmcp:decision</code> per Section 3.1.1; <code>issuer_id</code> equal to <code>kid</code> 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 <span>[<a href=\"#DORA\" class=\"cite xref\">DORA</a>]</span> with further specification in <span>[<a href=\"#REG-2024-1772\" class=\"cite xref\">REG-2024-1772</a>]</span>; <code>incident_class</code> canonical six-value enumeration sourced to Annex II field 3.23 of <span>[<a href=\"#REG-2025-302\" class=\"cite xref\">REG-2025-302</a>]</span>. Sectoral retention: Article 16(7) of <span>[<a href=\"#MIFID2\" class=\"cite xref\">MIFID2</a>]</span> (five-year floor on telephone and electronic communications records); Article 16(6) supplemented by Article 72 of <span>[<a href=\"#REG-2017-565\" class=\"cite xref\">REG-2017-565</a>]</span> (form and content of general records); Article 40 of <span>[<a href=\"#AMLD\" class=\"cite xref\">AMLD</a>]</span> superseded by Article 77 of <span>[<a href=\"#AMLR\" class=\"cite xref\">AMLR</a>]</span> 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 <code>00</code> at positions 5-6, and ISO 7064 mod 97-10 check digits at positions 19-20. Algorithm references added: <span>[<a href=\"#RFC8032\" class=\"cite xref\">RFC8032</a>]</span> (EdDSA), <span>[<a href=\"#RFC7518\" class=\"cite xref\">RFC7518</a>]</span> (ES256), <span>[<a href=\"#FIPS204\" class=\"cite xref\">FIPS204</a>]</span> (ML-DSA-65). Added <span>[<a href=\"#RFC5816\" class=\"cite xref\">RFC5816</a>]</span> (ESSCertIDv2) as a normative reference; Compliance Verifiers MUST accept ESSCertIDv2-carrying time-stamp tokens. Reference block uses Official Journal verbatim titles (including \"(recast)\" for <span>[<a href=\"#MIFID2\" class=\"cite xref\">MIFID2</a>]</span> and \"(Text with EEA relevance)\" where the OJ carries it) and OJ publication dates throughout. Definition of \"Financial Entity\" cites Article 2(2) of <span>[<a href=\"#DORA\" class=\"cite xref\">DORA</a>]</span>, 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. <span>[<a href=\"#ISO17442\" class=\"cite xref\">ISO17442</a>]</span> and <span>[<a href=\"#W3C-DID\" class=\"cite xref\">W3C-DID</a>]</span> 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 <code>anchors</code> with the <code>rfc3161</code> / <code>opentimestamps</code> 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 <a href=\"#art12-retention\" class=\"auto internal xref\">Section 5.5</a>. Section 4.1.7 describes upstream <code>session_id</code> as an MCP session identifier (not transport-layer), matching <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> Section 3.1.1. Section 4.2 names the <code>decision</code> field explicitly. Section 7.4 notes that AMLD supersession by Article 77 of <span>[<a href=\"#AMLR\" class=\"cite xref\">AMLR</a>]</span> is in respect of record retention. Section 4.1.4 states that <code>payload_digest</code> follows the upstream object form (<code>hash</code>, <code>size</code>, optional <code>preview</code>) defined in Section 2.2 of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span>. Section 9.1 <code>policy_digest</code> 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 <code>incident_class</code> 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 <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> 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 <code>kid</code> mechanisms (well-known JWK Set or <code>sb:issuer:&lt;base58-fingerprint&gt;</code>) 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 <code>anchors</code> 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\".<a href=\"#appendix-B.1-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"cl-01\">\n<section id=\"appendix-B.2\">\n        <h3 id=\"name-draft-marques-asqav-complian\">\n<a href=\"#name-draft-marques-asqav-complian\" class=\"section-name selfRef\">draft-marques-asqav-compliance-receipts-01</a>\n        </h3>\n<p id=\"appendix-B.2-1\">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.<a href=\"#appendix-B.2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"cl-00\">\n<section id=\"appendix-B.3\">\n        <h3 id=\"name-draft-marques-asqav-complianc\">\n<a href=\"#name-draft-marques-asqav-complianc\" class=\"section-name selfRef\">draft-marques-asqav-compliance-receipts-00</a>\n        </h3>\n<p id=\"appendix-B.3-1\">Initial version. Defines a profile of <span>[<a href=\"#ACTA-RECEIPTS\" class=\"cite xref\">ACTA-RECEIPTS</a>]</span> that binds receipt fields to EU AI Act Article 12, EU AI Act Article 26, and DORA Article 17.<a href=\"#appendix-B.3-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"authors-addresses\">\n<section id=\"appendix-C\">\n      <h2 id=\"name-authors-address\">\n<a href=\"#name-authors-address\" class=\"section-name selfRef\">Author's Address</a>\n      </h2>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Joao Andre Gomes Marques</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Asqav</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"country-name\">Portugal</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:joaoagm90@gmail.com\" class=\"email\">joaoagm90@gmail.com</a>\n</div>\n</address>\n</section>\n</div>\n</div>\n\n                    </div>\n                \n            </div>\n            <div class=\"d-print-none col-md-3 bg-light-subtle collapse show\" id=\"sidebar\">\n                <div class=\"position-fixed border-start sidebar overflow-scroll overscroll-none no-scrollbar\">\n                    <div class=\"d-flex flex-column vh-100 pt-2 pt-lg-3 ps-3 pl-md-2 pl-lg-3\">\n                        <div>\n                            <a class=\"btn btn-primary btn-sm\" href=\"/doc/draft-marques-asqav-compliance-receipts/\">Datatracker</a>\n                            <p class=\"fw-bold pt-2\">\n                                \n                                    draft-marques-asqav-compliance-receipts-02\n                                \n                                <br>\n                                \n\n\n\n\n\n\n\n    <div>This is an older version of an Internet-Draft whose latest revision state is \"Active\".</div>\n\n                            </p>\n                        </div>\n                        \n                        <ul class=\"nav nav-tabs nav-fill small me-2\" role=\"tablist\">\n                            <li class=\"nav-item\" role=\"presentation\" title=\"Document information\">\n                                <button class=\"nav-link px-2\"\n                                        id=\"docinfo-tab\"\n                                        data-bs-toggle=\"tab\"\n                                        data-bs-target=\"#docinfo-tab-pane\"\n                                        type=\"button\"\n                                        role=\"tab\"\n                                        aria-controls=\"docinfo-tab-pane\"\n                                        aria-selected=\"true\">\n                                    <i class=\"bi bi-info-circle\"></i><span class=\"d-none d-md-block d-xl-inline ms-xl-1\">Info</span>\n                                </button>\n                            </li>\n                            <li class=\"nav-item\" role=\"presentation\" title=\"Table of contents\">\n                                <button class=\"nav-link px-2\"\n                                        id=\"toc-tab\"\n                                        data-bs-toggle=\"tab\"\n                                        data-bs-target=\"#toc-tab-pane\"\n                                        type=\"button\"\n                                        role=\"tab\"\n                                        aria-controls=\"toc-tab-pane\"\n                                        aria-selected=\"false\">\n                                    <i class=\"bi bi-list-ol\"></i><span class=\"d-none d-md-block d-xl-inline ms-xl-1\">Contents</span>\n                                </button>\n                            </li>\n                            <li class=\"nav-item\" role=\"presentation\" title=\"Preferences\">\n                                <button class=\"nav-link px-2\"\n                                        id=\"pref-tab\"\n                                        data-bs-toggle=\"tab\"\n                                        data-bs-target=\"#pref-tab-pane\"\n                                        type=\"button\"\n                                        role=\"tab\"\n                                        aria-controls=\"pref-tab-pane\"\n                                        aria-selected=\"false\">\n                                    <i class=\"bi bi-gear\"></i><span class=\"d-none d-md-block d-xl-inline ms-xl-1\">Prefs</span>\n                                </button>\n                            </li>\n                        </ul>\n                        <div class=\"overflow-auto tab-content pt-2 me-2\">\n                            <div class=\"tab-pane\"\n                                 id=\"docinfo-tab-pane\"\n                                 role=\"tabpanel\"\n                                 aria-labelledby=\"docinfo-tab\"\n                                 tabindex=\"0\">\n                                <table class=\"table table-sm table-borderless\">\n                                    \n\n\n\n\n\n\n\n<tbody class=\"meta align-top \">\n    <tr>\n        <th scope=\"row\">Document</th>\n        <th scope=\"row\">Document type</th>\n        <td class=\"edit\"></td>\n        <td>\n            \n\n\n\n\n\n\n\n    <div>This is an older version of an Internet-Draft whose latest revision state is \"Active\".</div>\n\n            \n            \n            \n                \n\n\n\n\n    <div class=\"alert alert-warning small p-2 mt-2\" role=\"alert\">\n        This document is an Internet-Draft (I-D).\n        Anyone may submit an I-D to the IETF.\n        This I-D is <strong>not endorsed by the IETF</strong> and has <strong>no formal standing</strong> in the\n        <a href=\"/doc/rfc2026/\">IETF standards process</a>.\n    </div>\n\n\n            \n        </td>\n    </tr>\n    \n        <tr>\n            <td></td>\n            <th scope=\"row\">Select version</th>\n            <td class=\"edit\"></td>\n            <td>\n                \n\n\n\n    <ul class=\"revision-list pagination pagination-sm text-center flex-wrap my-0\">\n        \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-00\"\n                        >\n                            00\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-01\"\n                        rel=\"nofollow\">\n                            01\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item active\">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-02\"\n                        rel=\"nofollow\">\n                            02\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-03\"\n                        rel=\"nofollow\">\n                            03\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-04\"\n                        rel=\"nofollow\">\n                            04\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-05\"\n                        rel=\"nofollow\">\n                            05\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-06\"\n                        rel=\"nofollow\">\n                            06\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-marques-asqav-compliance-receipts-07\"\n                        >\n                            07\n                        </a>\n                    </li>\n                \n            \n            \n        \n    </ul>\n\n            </td>\n        </tr>\n        \n            <tr>\n                <td></td>\n                <th scope=\"row\">Compare versions</th>\n                <td class=\"edit\"></td>\n                <td>\n                    \n\n\n\n<form class=\"form-horizontal diff-form\"\n      action=\"https://author-tools.ietf.org/iddiff\"\n      method=\"get\"\n      target=\"_blank\">\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"From revision\"\n                    name=\"url1\">\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-07\">\n                        draft-marques-asqav-compliance-receipts-07\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-06\" selected>\n                        draft-marques-asqav-compliance-receipts-06\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-05\">\n                        draft-marques-asqav-compliance-receipts-05\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-04\">\n                        draft-marques-asqav-compliance-receipts-04\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-03\">\n                        draft-marques-asqav-compliance-receipts-03\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-02\">\n                        draft-marques-asqav-compliance-receipts-02\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-01\">\n                        draft-marques-asqav-compliance-receipts-01\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-00\">\n                        draft-marques-asqav-compliance-receipts-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"To revision\"\n                    name=\"url2\">\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-07\" selected>\n                        draft-marques-asqav-compliance-receipts-07\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-06\">\n                        draft-marques-asqav-compliance-receipts-06\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-05\">\n                        draft-marques-asqav-compliance-receipts-05\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-04\">\n                        draft-marques-asqav-compliance-receipts-04\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-03\">\n                        draft-marques-asqav-compliance-receipts-03\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-02\">\n                        draft-marques-asqav-compliance-receipts-02\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-01\">\n                        draft-marques-asqav-compliance-receipts-01\n                        \n                    </option>\n                \n                    <option value=\"draft-marques-asqav-compliance-receipts-00\">\n                        draft-marques-asqav-compliance-receipts-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--html\"\n                    name=\"difftype\">\n                Side-by-side\n            </button>\n            \n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--hwdiff\"\n                    name=\"difftype\">\n                Inline\n            </button>\n\n</form>\n                </td>\n            </tr>\n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Author</th>\n        <td class=\"edit\">\n            \n        </td>\n        <td>\n            \n            \n                <span ><a \n           title=\"Datatracker profile of João André Gomes Marques\"\n            href=\"/person/info@asqav.com\" >João André Gomes Marques</a> <a \n               href=\"mailto:info%40asqav.com\"\n               aria-label=\"Compose email to info@asqav.com\"\n               title=\"Compose email to info@asqav.com\">\n                <i class=\"bi bi-envelope\"></i></a></span>\n            \n            \n        </td>\n    </tr>\n    \n    \n        \n        \n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            RFC stream\n        </th>\n        <td class=\"edit\">\n            \n        </td>\n        <td class=\"text-body-secondary\">\n            \n                (None)\n            \n        </td>\n    </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            Other formats\n        </th>\n        <td class=\"edit\">\n        </td>\n        <td>\n            \n                \n    <div class=\"buttonlist\">\n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-02.txt\">\n            \n                <i class=\"bi bi-file-text\"></i> txt\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-02.html\">\n            \n                <i class=\"bi bi-file-code\"></i> html\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-marques-asqav-compliance-receipts-02.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> xml\n            \n        </a>\n        \n    \n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/draft-marques-asqav-compliance-receipts/02/bibtex/\">\n            \n                <i class=\"bi bi-file-ruled\"></i> bibtex\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/bibxml3/draft-marques-asqav-compliance-receipts-02.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> bibxml\n            \n        </a>\n        \n    \n</div>\n\n            \n        </td>\n    </tr>\n    \n    \n        \n    \n</tbody>\n                                </table>\n                                <a class=\"btn btn-sm btn-warning mb-3\"\n                                target=\"_blank\"\n                                href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n                                    Report a datatracker bug\n                                    <i class=\"bi bi-bug\"></i>\n                                </a>\n                            </div>\n                            <div class=\"tab-pane mb-5\"\n                                 id=\"toc-tab-pane\"\n                                 role=\"tabpanel\"\n                                 aria-labelledby=\"toc-tab\"\n                                 tabindex=\"0\">\n                                <nav class=\"nav nav-pills flex-column small\" id=\"toc-nav\">\n                                </nav>\n                            </div>\n                            <div class=\"tab-pane mb-5 small\"\n                                 id=\"pref-tab-pane\"\n                                 role=\"tabpanel\"\n                                 aria-labelledby=\"pref-tab\"\n                                 tabindex=\"0\">\n                                <label class=\"form-label fw-bold mb-2\">Show sidebar by default</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"sidebar\" id=\"on-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"on-radio\">Yes</label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"sidebar\" id=\"off-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"off-radio\">No</label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\">Tab to show by default</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"deftab\" id=\"docinfo-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"docinfo-radio\">\n                                        <i class=\"bi bi-info-circle me-1\"></i>Info\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"deftab\" id=\"toc-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"toc-radio\">\n                                        <i class=\"bi bi-list-ol me-1\"></i>Contents\n                                    </label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\">HTMLization configuration</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"htmlconf\" id=\"txt-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"txt-radio\" title=\"This is the traditional HTMLization method.\">\n                                        <i class=\"bi bi-badge-sd me-1\"></i>HTMLize the plaintext\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"htmlconf\" id=\"html-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"html-radio\" title=\"This is the modern HTMLization method.\">\n                                        <i class=\"bi bi-badge-hd me-1\"></i>Plaintextify the HTML\n                                    </label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\" for=\"ptsize\">Maximum font size</label>\n                                <input type=\"range\" class=\"form-range\" min=\"7\" max=\"16\" id=\"ptsize\" oninput=\"ptdemo.value = ptsize.value\">\n                                <label class=\"form-label fw-bold mt-4 mb-2\">Page dependencies</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"pagedeps\" id=\"inline-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"inline-radio\" title=\"Generate larger, standalone web pages that do not require network access to render.\">\n                                        <i class=\"bi bi-box me-1\"></i>Inline\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"pagedeps\" id=\"reference-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"reference-radio\" title=\"Generate regular web pages that require network access to render.\">\n                                        <i class=\"bi bi-link-45deg me-1\"></i>Reference\n                                    </label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\">Citation links</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"reflinks\" id=\"refsection-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"refsection-radio\" title=\"Citation links go to the reference section.\">\n                                        <i class=\"bi bi-arrow-clockwise\"></i> Go to reference section\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"reflinks\" id=\"citation-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"citation-radio\" title=\"Citation links go directly to the cited document.\">\n                                        <i class=\"bi bi-link-45deg me-1\"></i>Go to linked document\n                                    </label>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    \n<script>\n  var _paq = window._paq || [];\n  \n  _paq.push(['disableCookies']);\n  _paq.push(['trackPageView']);\n  _paq.push(['enableLinkTracking']);\n  (function() {\n    var u=\"//analytics.ietf.org/\";\n    _paq.push(['setTrackerUrl', u+'matomo.php']);\n    _paq.push(['setSiteId', 7]);\n    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];\n    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);\n  })();\n</script>\n<noscript><p><img src=\"//analytics.ietf.org/matomo.php?idsite=7\" style=\"border:0;\" alt=\"\" /></p></noscript>\n\n    <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a2369affcad46d29',t:'MTc4NTQzODAxOA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>\n</html>\n","snapshot_chars":162918,"live_check":"changed"},{"url":"https://datatracker.ietf.org/doc/draft-nelson-agent-delegation-receipts/","committed_hash":"sha256:0d9dd90dda5e7a4fc200c8d4a979985bee369e03bd504028e60c6b1abaf7ee35","committed_hash_short":"sha256:0d9dd90d…baf7ee35","mime_type":"text/html","committed_at":"2026-07-30T19:00:18.935855+00:00","content_snapshot":"\n<!DOCTYPE html>\n\n\n\n\n\n\n<html data-bs-theme=\"auto\" lang=\"en\" prefix=\"og: http://ogp.me/ns# article: http://ogp.me/ns/article#\">\n    <head>\n        \n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <title>\n            \n    \n        draft-nelson-agent-delegation-receipts-10 - Delegation Receipt Protocol for AI Agent Authorization\n    \n\n        </title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <meta name=\"traceparent\" content=\"\">\n        <link href=\"https://static.ietf.org/fonts/inter/import.css\" rel=\"stylesheet\">\n        <link href=\"https://static.ietf.org/fonts/noto-sans-mono/import.css\" rel=\"stylesheet\">\n        <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.69.0/ietf/css/ietf.css\">\n        <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.69.0/ietf/css/select2.css\">\n        \n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/theme.js\"></script>\n        <style>\n            .inline { display: inline; }\n        </style>\n        \n        \n    \n\n\n\n\n<meta property=\"og:title\" content=\"Delegation Receipt Protocol for AI Agent Authorization\">\n<meta property=\"og:url\" content=\"https://datatracker.ietf.org/doc/draft-nelson-agent-delegation-receipts/\">\n<link rel=\"canonical\" href=\"https://datatracker.ietf.org/doc/draft-nelson-agent-delegation-receipts/\">\n<meta property=\"og:site_name\" content=\"IETF Datatracker\">\n<meta property=\"og:description\" content=\"This document defines the Delegation Receipt Protocol (DRP), a cryptographic authorization primitive for AI agent deployments. Before any agent action executes, the authorizing user signs an Authorization Object containing scope boundaries, time window, operator instruction hash, and model state commitment. This signed receipt is published to an append-only log before the agent runtime receives control. The protocol reduces reliance on the operator as a trusted intermediary by making the user&#x27;s private key the sole signing authority over the delegation record.\">\n<meta property=\"og:type\" content=\"article\">\n\n<meta property=\"article:section\" content=\"Individual Internet-Draft\">\n\n<meta property=\"article:author\" content=\"Ryan Nelson\">\n\n\n\n    <link rel=\"alternate\"\n          type=\"application/atom+xml\"\n          title=\"Document changes\"\n          href=\"/feed/document-changes/draft-nelson-agent-delegation-receipts/\">\n    <meta name=\"description\"\n          content=\"Delegation Receipt Protocol for AI Agent Authorization \">\n\n        <script type=\"module\" crossorigin=\"\" src=\"https://static.ietf.org/dt/12.69.0/assets/embedded-f7f04c22.js\"></script>\n<link href=\"https://static.ietf.org/dt/12.69.0/assets/create-pinia-singleton-e1887cc7.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n<link href=\"https://static.ietf.org/dt/12.69.0/assets/Scrollbar-f0f599a2.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n        \n\n<link rel=\"apple-touch-icon\"\n      sizes=\"180x180\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-180.png\">\n<link rel=\"icon\"\n      sizes=\"32x32\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-32.png\">\n<link rel=\"icon\"\n      sizes=\"16x16\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-16.png\">\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"mask-icon\"\n      href=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-mask.svg\"\n      color=\"#ffffff\">\n<meta name=\"msapplication-TileColor\"\n      content=\"#ffffff\">\n<meta name=\"theme-color\"\n      content=\"#ffffff\">\n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/ietf.js\"></script>\n        \n    </head>\n    <body  class=\"navbar-offset position-relative\"\n          data-group-menu-data-url=\"/group/groupmenu.json\">\n        \n        <noscript><iframe class=\"status\" title=\"Site status\" src=\"/status/latest\"></iframe></noscript>\n<div class=\"vue-embed\" data-component=\"Status\"></div>\n        <a class=\"visually-hidden visually-hidden-focusable\" href=\"#content\">Skip to main content</a>\n        <nav class=\"navbar navbar-expand-lg fixed-top bg-secondary-subtle\">\n            <div class=\"container-fluid\">\n                <a class=\"navbar-brand\" href=\"/\">\n                    \n\n\n\n<img alt=\"IETF Logo\"\n     class=\"d-lm-none me-2\"\n     \n     \n        \n             src=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor-white.svg\"\n        \n     \n     >\n\n<img alt=\"IETF Logo\"\n     class=\"d-dm-none me-2\"\n     \n     \n        \n             src=\"https://static.ietf.org/dt/12.69.0/ietf/images/ietf-logo-nor.svg\"\n        \n     \n     >\n                    Datatracker\n                    \n                </a>\n                <div class=\"collapse navbar-collapse\" id=\"navbar-collapse\">\n                    <ul class=\"nav navbar-nav flex-nowrap\">\n                        \n\n\n\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Groups\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li class=\"dropdown-header\">By area/parent</li>\n    \n\n\n\n    \n    <li class=\"dropend group-menu group-parent-2010\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#ART\">\n            Apps &amp; Realtime\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1008\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#GEN\">\n            General\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1052\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#INT\">\n            Internet\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1193\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#OPS\">\n            Ops &amp; Management\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1249\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#RTG\">\n            Routing\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1260\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#SEC\">\n            Security\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-2412\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/wg/#WIT\">\n            Web and Internet Transport\n        </a>\n    </li>\n\n    \n        <li><a class=\"dropdown-item\" href=\"/group/iesg/about/\">IESG</a></li>\n    \n    <li class=\"dropend group-menu group-parent-7\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/program/\">\n            IAB\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-3\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/rg/\">\n            IRTF\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-2309\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/adm/\">\n            IETF LLC\n        </a>\n    </li>\n\n    \n    <li class=\"dropend group-menu group-parent-1876\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/rfcedtyp/\">\n            RFC Editor\n        </a>\n    </li>\n\n\n    <li class=\"dropend\">\n        <a class=\"dropdown-item dropdown-toggle \"\n           href=\"/group/\">\n            Other\n        </a>\n        \n\n\n<ul class=\"dropdown-menu ms-n1\">\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/ag/\">Active AGs</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/area/\">Active Areas</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/dir/\">Active Directorates</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/iabworkshop/\">Active IAB Workshops</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/program/\">Active Programs</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/rag/\">Active RAGs</a>\n        </li>\n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/team/\">Active Teams</a>\n        </li>\n    \n    \n</ul>\n\n    </li>\n    <li><hr class=\"dropdown-divider\"></li>\n    <li class=\"dropdown-header\">New work</li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/group/chartering/\">\n            Chartering groups\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/wg/bofs/\">\n            BOFs\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/bof-requests\">\n            BOF Requests\n        </a>\n    </li>\n    <li><hr class=\"dropdown-divider\"></li>\n    <li class=\"dropdown-header\">Other groups</li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/group/concluded/\">\n            Concluded groups\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/list/nonwg\">\n            Non-WG lists\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Documents\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/search\">\n            Search\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/recent\">\n            Recent I-Ds\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/submit/\">\n            Submit an Internet-Draft\n        </a>\n    </li>\n    \n    \n        <li><hr class=\"dropdown-divider\">\n        </li>\n    \n    <li class=\"dropdown-header\">\n        RFC streams\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/iab/\">\n            IAB\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/irtf/\">\n            IRTF\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/ise/\">\n            ISE\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/stream/editorial/\">\n            Editorial\n        </a>\n    </li>\n    \n        <li><hr class=\"dropdown-divider\">\n        </li>\n    \n    <li class=\"dropdown-header\">\n        Subseries\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/std\">\n            STD\n        </a>\n        <a class=\"dropdown-item\"\n           href=\"/doc/bcp\">\n            BCP\n        </a>\n        <a class=\"dropdown-item\"\n           href=\"/doc/fyi\">\n            FYI\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Meetings\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/agenda\">\n            Agenda\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/materials\">\n            Materials\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/floor-plan\">\n            Floor plan\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"https://www.ietf.org/how/meetings/register/\">\n            Registration\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/important-dates/\">\n            Important dates\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/session/request/\">\n            Request a session\n        </a>\n    </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/requests\">\n            Session requests\n        </a>\n    </li>\n    \n    \n        \n            <li><hr class=\"dropdown-divider\">\n            </li>\n        \n        <li class=\"dropdown-header\">\n            Upcoming meetings\n        </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/upcoming\">\n            Upcoming meetings\n        </a>\n    </li>\n    \n        \n            <li><hr class=\"dropdown-divider\">\n            </li>\n        \n        <li class=\"dropdown-header\">\n            Past meetings\n        </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/meeting/past\">\n            Past meetings\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"https://www.ietf.org/how/meetings/past/\">\n            Meeting proceedings\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            Other\n        </a>\n        <ul class=\"dropdown-menu mt-n1\">\n        \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/ipr/\">\n            IPR disclosures\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/liaison/\">\n            Liaison statements\n        </a>\n    </li>\n    \n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/iesg/agenda/\">\n            IESG agenda\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/nomcom/\">\n            NomComs\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/doc/downref\">\n            Downref registry\n        </a>\n    </li>\n    <li class=\"dropend\">\n        <a class=\"dropdown-item dropdown-toggle\" href=\"#\">\n            Statistics\n        </a>\n        <ul class=\"dropdown-menu\">\n            <li>\n                <a class=\"dropdown-item\"\n                   href=\"/stats/document/\">\n                    I-Ds/RFCs\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item\"\n                   href=\"/stats/meeting/\">\n                    Meetings\n                </a>\n            </li>\n            \n            \n        </ul>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/api/\">\n            API Help\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           href=\"/release/\">\n            Release notes\n        </a>\n    </li>\n    <li>\n        <a class=\"dropdown-item\"\n           target=\"_blank\" href=\"https://status.ietf.org\">\n            System status\n        </a>\n    </li>\n    \n        <li><hr class=\"dropdown-divider\">\n        </li>\n    \n    <li>\n        <a class=\"dropdown-item text-danger \"\n           target=\"_blank\" href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n            <i class=\"bi bi-bug\">\n            </i>\n            Report a bug\n        </a>\n    </li>\n    \n    </ul>\n</li>\n\n\n    \n\n\n\n<li class=\"nav-item dropdown\">\n    \n        <a href=\"#\"\n           class=\"nav-link dropdown-toggle\"\n           role=\"button\"\n           data-bs-toggle=\"dropdown\"\n           aria-expanded=\"false\">\n            \n                User\n            \n        </a>\n        <ul class=\"dropdown-menu  mt-n1 \">\n        \n    \n    \n        \n            <li>\n                <a class=\"dropdown-item \"\n                   rel=\"nofollow\"\n                   href=\"/accounts/login/?next=/doc/draft-nelson-agent-delegation-receipts/\">\n                    Sign in\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                   rel=\"nofollow\"\n                   href=\"/accounts/reset/\">\n                    Password reset\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                   href=\"/accounts/settings/\"\n                   rel=\"nofollow\">\n                    Preferences\n                </a>\n            </li>\n        \n    \n    \n        <li>\n            <a class=\"dropdown-item \"\n               href=\"/accounts/create/\">\n                New account\n            </a>\n        </li>\n    \n    <li class=\"dropend\">\n      <a class=\"dropdown-item dropdown-toggle\" href=\"#\">\n        List subscriptions\n      </a>\n      <ul class=\"dropdown-menu\">\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.ietf.org/mailman3/lists/\">\n                    IETF Lists\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.irtf.org/mailman3/lists/\">\n                IRTF Lists\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.iab.org/mailman3/lists/\">\n                    IAB Lists\n                </a>\n            </li>\n            <li>\n                <a class=\"dropdown-item \"\n                href=\"https://mailman3.rfc-editor.org/mailman3/lists/\">\n                    RFC-Editor Lists\n                </a>\n            </li>\n        </ul>\n    </li>\n    \n    \n    \n    \n    \n    </ul></li>\n\n\n                    </ul>\n                </div>\n                <div class=\"d-flex align-items-center\">\n                    <a class=\"nav-link text-danger d-none d-xl-inline me-xl-4\"\n                       target=\"_blank\"\n                       href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n                        Report a bug\n                        <i class=\"bi bi-bug\"></i>\n                    </a>\n\n                    \n                        <a class=\"btn me-1  btn-warning  d-none d-sm-block\"\n                           rel=\"nofollow\"\n                           href=\"/accounts/login/?next=/doc/draft-nelson-agent-delegation-receipts/\">\n                            Sign in\n                        </a>\n                    \n\n                    <div class=\"d-none d-md-block dropdown\" id=\"navbar-doc-search-wrapper\">\n                        <input class=\"form-control\"\n                               id=\"navbar-doc-search\"\n                               type=\"text\"\n                               placeholder=\"Document search\"\n                               autocomplete=\"off\"\n                               data-ajax-url=\"/doc/select2search/document/all/\"\n                               aria-label=\"Document search\">\n                        <ul class=\"dropdown-menu\" id=\"navbar-doc-search-results\">\n                        </ul>\n                    </div>\n                </div>\n                <button class=\"navbar-toggler\"\n                        type=\"button\"\n                        data-bs-toggle=\"collapse\"\n                        data-bs-target=\"#navbar-collapse\"\n                        aria-controls=\"navbar-collapse\"\n                        aria-expanded=\"false\"\n                        aria-label=\"Toggle navigation\">\n                    <i class=\"navbar-toggler-icon\"></i>\n                </button>\n            </div>\n        </nav>\n        \n        <main class=\"pt-3 container-fluid\" id=\"main\">\n            <div class=\"row\">\n                \n                <div class=\"col mx-lg-3 ietf-auto-nav\" id=\"content\">\n                    <noscript data-nosnippet>\n                        <div class=\"alert alert-danger alert-ignore my-3\">\n                            <b>Javascript disabled?</b> Like other modern websites, the IETF Datatracker relies on Javascript.\n                            Please enable Javascript for full functionality.\n                        </div>\n                    </noscript>\n                    \n                    \n    \n    \n\n\n\n<h1>\n    Delegation Receipt Protocol for AI Agent Authorization\n    <br>\n    <small class=\"text-body-secondary\">draft-nelson-agent-delegation-receipts-10</small>\n</h1>\n<ul class=\"nav nav-tabs my-3\">\n    \n        <li  class=\"nav-item\">\n            <a class=\"nav-link active\"\n               href=\"/doc/draft-nelson-agent-delegation-receipts/\">\n                Status\n            </a>\n        </li>\n    \n        <li  class=\"nav-item\">\n            <a class=\"nav-link \"\n               href=\"/doc/draft-nelson-agent-delegation-receipts/email/\">\n                Email expansions\n            </a>\n        </li>\n    \n        <li  class=\"nav-item\">\n            <a class=\"nav-link \"\n               href=\"/doc/draft-nelson-agent-delegation-receipts/history/\">\n                History\n            </a>\n        </li>\n    \n</ul>\n\n    \n\n\n\n    <label class=\"my-1 fw-bold\">Versions:</label>\n    <nav class=\"mb-3\">\n\n    <ul class=\"revision-list pagination pagination-sm text-center flex-wrap\">\n        \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/00/\"\n                        >\n                            00\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/01/\"\n                        rel=\"nofollow\">\n                            01\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/02/\"\n                        rel=\"nofollow\">\n                            02\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/03/\"\n                        rel=\"nofollow\">\n                            03\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/04/\"\n                        rel=\"nofollow\">\n                            04\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/05/\"\n                        rel=\"nofollow\">\n                            05\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/06/\"\n                        rel=\"nofollow\">\n                            06\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/07/\"\n                        rel=\"nofollow\">\n                            07\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/08/\"\n                        rel=\"nofollow\">\n                            08\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/09/\"\n                        rel=\"nofollow\">\n                            09\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item active\">\n                        <a class=\"page-link\"\n                        href=\"/doc/draft-nelson-agent-delegation-receipts/10/\"\n                        >\n                            10\n                        </a>\n                    </li>\n                \n            \n            \n        \n    </ul>\n\n    </nav>\n\n    \n\n\n\n\n    <div class=\"alert alert-warning \" role=\"alert\">\n        This document is an Internet-Draft (I-D).\n        Anyone may submit an I-D to the IETF.\n        This I-D is <strong>not endorsed by the IETF</strong> and has <strong>no formal standing</strong> in the\n        <a href=\"/doc/rfc2026/\">IETF standards process</a>.\n    </div>\n\n\n    <div id=\"doc-timeline\"></div>\n    \n        \n    \n    <table class=\"table table-sm table-borderless\">\n        \n\n\n\n\n\n\n\n<tbody class=\"meta align-top  border-top\">\n    <tr>\n        <th scope=\"row\">Document</th>\n        <th scope=\"row\">Type</th>\n        <td class=\"edit\"></td>\n        <td>\n            \n\n\n\n\n\n\n\n    <span class=\"text-success\">Active Internet-Draft</span>\n    (individual)\n    \n\n            \n            \n            \n        </td>\n    </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Author</th>\n        <td class=\"edit\">\n            \n        </td>\n        <td>\n            \n            \n                <span ><a \n           title=\"Datatracker profile of Ryan Nelson\"\n            href=\"/person/ryan@authproof.dev\" >Ryan Nelson</a> <a \n               href=\"mailto:ryan%40authproof.dev\"\n               aria-label=\"Compose email to ryan@authproof.dev\"\n               title=\"Compose email to ryan@authproof.dev\">\n                <i class=\"bi bi-envelope\"></i></a></span>\n            \n            \n        </td>\n    </tr>\n    \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Last updated</th>\n        <td class=\"edit\"></td>\n        <td>\n            2026-06-13\n            \n        </td>\n    </tr>\n    \n    \n        \n        \n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            RFC stream\n        </th>\n        <td class=\"edit\">\n            \n        </td>\n        <td class=\"text-body-secondary\">\n            \n                (None)\n            \n        </td>\n    </tr>\n    \n        <tr>\n            <td></td>\n            <th scope=\"row\">\n                Intended RFC status\n            </th>\n            <td class=\"edit\">\n                \n            </td>\n            <td>\n                \n                    <span class=\"text-body-secondary\">\n                        (None)\n                    </span>\n                \n            </td>\n        </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            Formats\n        </th>\n        <td class=\"edit\">\n        </td>\n        <td>\n            \n                \n    <div class=\"buttonlist\">\n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-nelson-agent-delegation-receipts-10.txt\">\n            \n                <i class=\"bi bi-file-text\"></i> txt\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-nelson-agent-delegation-receipts-10.html\">\n            \n                <i class=\"bi bi-file-code\"></i> html\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-nelson-agent-delegation-receipts-10.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> xml\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          \n          href=\"/doc/html/draft-nelson-agent-delegation-receipts-10\">\n            \n                <i class=\"bi bi-file-code\"></i> htmlized\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/draft-nelson-agent-delegation-receipts/10/bibtex/\">\n            \n                <i class=\"bi bi-file-ruled\"></i> bibtex\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/bibxml3/draft-nelson-agent-delegation-receipts-10.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> bibxml\n            \n        </a>\n        \n    \n</div>\n\n            \n        </td>\n    </tr>\n    \n    \n        \n    \n        \n            \n            \n        \n    \n    \n        \n    \n</tbody>\n        <tbody class=\"meta border-top\">\n            <tr>\n                <th scope=\"row\">\n                    Stream\n                </th>\n                \n                    <th scope=\"row\">\n                        Stream state\n                    </th>\n                    <td class=\"edit\">\n                    </td>\n                    <td>\n                        <span class=\"text-body-secondary\">(No stream defined)</span>\n                    </td>\n                \n            </tr>\n            \n            \n                <tr>\n                    <td></td>\n                    <th scope=\"row\">\n                        Consensus boilerplate\n                    </th>\n                    <td class=\"edit\">\n                        \n                    </td>\n                    <td>\n                        <span class=\"text-danger\"\n                              title=\"Whether the document is the result of a community consensus process as defined in RFC 5741\">\n                            Unknown\n                        </span>\n                    </td>\n                </tr>\n            \n            \n            \n                <tr>\n                    <td></td>\n                    <th scope=\"row\">\n                        RFC Editor Note\n                    </th>\n                    <td class=\"edit\">\n                        \n                    </td>\n                    <td>\n                        \n                            <span class=\"text-body-secondary\">\n                                (None)\n                            </span>\n                        \n                    </td>\n                </tr>\n            \n            \n        </tbody>\n        \n            <tbody class=\"meta border-top\">\n                <tr>\n                    <th scope=\"row\">\n                        IESG\n                    </th>\n                    <th scope=\"row\">\n                        <a href=\"/doc/help/state/draft-iesg/\">\n                            IESG state\n                        </a>\n                    </th>\n                    <td class=\"edit\">\n                        \n                    </td>\n                    <td>\n                        <span class=\"\">\n                            \n                                I-D Exists\n                            \n                        </span>\n                    </td>\n                </tr>\n                \n                    \n                    <tr>\n                        <td></td>\n                        <th scope=\"row\">\n                            Telechat date\n                        </th>\n                        <td class=\"edit\">\n                            \n                        </td>\n                        <td>\n                            \n                                <span class=\"text-body-secondary\">\n                                    (None)\n                                </span>\n                            \n                            \n                        </td>\n                    </tr>\n                    <tr>\n                        <td></td>\n                        <th scope=\"row\">\n                            Responsible AD\n                        </th>\n                        <td class=\"edit\">\n                            \n                        </td>\n                        <td>\n                            \n                                <span class=\"text-body-secondary\">\n                                    (None)\n                                </span>\n                            \n                        </td>\n                    </tr>\n                    \n                    <tr>\n                        <td></td>\n                        <th scope=\"row\">\n                            Send notices to\n                        </th>\n                        <td class=\"edit\">\n                            \n                        </td>\n                        <td>\n                            \n                                <span class=\"text-body-secondary\">\n                                    (None)\n                                </span>\n                            \n                        </td>\n                    </tr>\n                </tbody>\n            \n            \n                \n            \n            \n        </table>\n        <div class=\"buttonlist\">\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"mailto:draft-nelson-agent-delegation-receipts@ietf.org?subject=Mail%20regarding%20draft-nelson-agent-delegation-receipts\">\n                <i class=\"bi bi-envelope\">\n                </i>\n                Email authors\n            </a>\n            \n            <a class=\"btn btn-primary btn-sm\"\n               href=\"/ipr/search/?submit=draft&amp;id=draft-nelson-agent-delegation-receipts\"\n               rel=\"nofollow\">\n                <i class=\"bi bi-lightning\">\n                </i>\n                IPR\n                \n            </a>\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"/doc/draft-nelson-agent-delegation-receipts/references/\"\n               rel=\"nofollow\">\n                <i class=\"bi bi-arrow-left\">\n                </i>\n                References\n            </a>\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"/doc/draft-nelson-agent-delegation-receipts/referencedby/\"\n               rel=\"nofollow\">\n                <i class=\"bi bi-arrow-right\">\n                </i>\n                Referenced by\n            </a>\n            <a class=\"btn btn-primary btn-sm\"\n               href=\"https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-nelson-agent-delegation-receipts-10.txt\"\n               rel=\"nofollow\"\n               target=\"_blank\">\n                <i class=\"bi bi-exclamation\">\n                </i>\n                Nits\n            </a>\n             <a class=\"btn btn-primary btn-sm\"\n               href=\"https://author-tools.ietf.org/idnits3/results?url=https://www.ietf.org/archive/id/draft-nelson-agent-delegation-receipts-10.txt\"\n               rel=\"nofollow\"\n               target=\"_blank\">\n                <i class=\"bi bi-exclamation-diamond\">\n                </i>\n                Nits v3\n            </a>           \n            <a class=\"btn btn-primary btn-sm\"\n               href=\"https://mailarchive.ietf.org/arch/search/?q=%22draft-nelson-agent-delegation-receipts%22\"\n               rel=\"nofollow\"\n               target=\"_blank\">\n                <i class=\"bi bi-search\">\n                </i>\n                Search email archive\n            </a>\n            \n            \n            \n            \n        </div>\n        \n            <div class=\"card mt-5\">\n                <div class=\"card-header\">\n                    \n                        draft-nelson-agent-delegation-receipts-10\n                    \n                </div>\n                <div class=\"card-body\">\n                    <pre>Network Working Group                                          R. Nelson\nInternet-Draft                                                 Authproof\nIntended status: Informational                              13 June 2026\nExpires: 15 December 2026\n\n         Delegation Receipt Protocol for AI Agent Authorization\n               draft-nelson-agent-delegation-receipts-10\n\n<span>Abstract</span>\n\n   This document defines the Delegation Receipt Protocol (DRP), a\n   cryptographic authorization primitive for AI agent deployments.\n   Before any agent action executes, the authorizing user signs an\n   Authorization Object containing scope boundaries, time window,\n   operator instruction hash, and model state commitment.  This signed\n   receipt is published to an append-only log before the agent runtime\n   receives control.  The protocol reduces reliance on the operator as a\n   trusted intermediary by making the user&#x27;s private key the sole\n   signing authority over the delegation record.\n\n<span>Status of This Memo</span>\n\n   This Internet-Draft is submitted in full conformance with the\n   provisions of BCP 78 and BCP 79.\n\n   Internet-Drafts are working documents of the Internet Engineering\n   Task Force (IETF).  Note that other groups may also distribute\n   working documents as Internet-Drafts.  The list of current Internet-\n   Drafts is at https://datatracker.ietf.org/drafts/current/.\n\n   Internet-Drafts are draft documents valid for a maximum of six months\n   and may be updated, replaced, or obsoleted by other documents at any\n   time.  It is inappropriate to use Internet-Drafts as reference\n   material or to cite them other than as &quot;work in progress.&quot;\n\n   This Internet-Draft will expire on 15 December 2026.\n\n<span>Copyright Notice</span>\n\n   Copyright (c) 2026 IETF Trust and the persons identified as the\n   document authors.  All rights reserved.\n\n   This document is subject to BCP 78 and the IETF Trust&#x27;s Legal\n   Provisions Relating to IETF Documents (https://trustee.ietf.org/\n   license-info) in effect on the date of publication of this document.\n   Please review these documents carefully, as they describe your rights\n   and restrictions with respect to this document.\n\n<span>Nelson                  Expires 15 December 2026                [Page 1]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n<span>Table of Contents</span>\n\n   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3\n     1.1.  Novel Contributions . . . . . . . . . . . . . . . . . . .   4\n   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   4\n   3.  Problem Statement . . . . . . . . . . . . . . . . . . . . . .   6\n     3.1.  The Agentic Delegation Chain  . . . . . . . . . . . . . .   6\n     3.2.  The Missing Cryptographic Anchor  . . . . . . . . . . . .   7\n     3.3.  IETF Framework Analysis . . . . . . . . . . . . . . . . .   7\n   4.  The Delegation Receipt  . . . . . . . . . . . . . . . . . . .   8\n     4.1.  Receipt Structure . . . . . . . . . . . . . . . . . . . .   8\n     4.2.  Canonical Serialization . . . . . . . . . . . . . . . . .  13\n     4.3.  Signing Procedure . . . . . . . . . . . . . . . . . . . .  14\n   5.  The Append-Only Log . . . . . . . . . . . . . . . . . . . . .  15\n     5.1.  Log Entry Structure . . . . . . . . . . . . . . . . . . .  15\n     5.2.  Chain Linking . . . . . . . . . . . . . . . . . . . . . .  16\n     5.3.  Timestamp Authority . . . . . . . . . . . . . . . . . . .  16\n     5.4.  Denied Call Logging . . . . . . . . . . . . . . . . . . .  17\n   6.  Pre-Execution Verification  . . . . . . . . . . . . . . . . .  17\n     6.1.  Verification Checks . . . . . . . . . . . . . . . . . . .  17\n     6.2.  Check Ordering  . . . . . . . . . . . . . . . . . . . . .  19\n     6.3.  Failure Handling  . . . . . . . . . . . . . . . . . . . .  21\n     6.4.  Verification Algorithm  . . . . . . . . . . . . . . . . .  22\n     6.5.  Denial Reason Codes . . . . . . . . . . . . . . . . . . .  26\n     6.6.  Offline Verification Mode . . . . . . . . . . . . . . . .  29\n   7.  Model State Attestation . . . . . . . . . . . . . . . . . . .  30\n     7.1.  Commitment Binding  . . . . . . . . . . . . . . . . . . .  30\n     7.2.  Provider Update Handling  . . . . . . . . . . . . . . . .  32\n     7.3.  Malicious Substitution Detection  . . . . . . . . . . . .  33\n   8.  Scope Discovery Protocol  . . . . . . . . . . . . . . . . . .  34\n   9.  Session State and Adaptive Authorization  . . . . . . . . . .  36\n   10. Multi-Agent Delegation Chains . . . . . . . . . . . . . . . .  44\n     10.1.  Parent-Child Receipt Relationship  . . . . . . . . . . .  45\n     10.2.  Scope Attenuation (Narrowing-Only Rule)  . . . . . . . .  45\n     10.3.  Verification Chain for Sub-Receipts  . . . . . . . . . .  46\n     10.4.  Cascade Revocation . . . . . . . . . . . . . . . . . . .  47\n     10.5.  Revocation Log . . . . . . . . . . . . . . . . . . . . .  48\n     10.6.  Revocation Authority and Propagation . . . . . . . . . .  49\n   11. Security Considerations . . . . . . . . . . . . . . . . . . .  49\n     11.1.  Threat Model . . . . . . . . . . . . . . . . . . . . . .  49\n     11.2.  Continuous Access Evaluation Protocol (CAEP)\n            Integration  . . . . . . . . . . . . . . . . . . . . . .  55\n     11.3.  Semantic Gap . . . . . . . . . . . . . . . . . . . . . .  56\n     11.4.  TEE Enforcement  . . . . . . . . . . . . . . . . . . . .  57\n     11.5.  Degraded Operation . . . . . . . . . . . . . . . . . . .  59\n     11.6.  Key Management . . . . . . . . . . . . . . . . . . . . .  60\n   12. Implementation Status . . . . . . . . . . . . . . . . . . . .  60\n   13. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  61\n\n<span>Nelson                  Expires 15 December 2026                [Page 2]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n     13.1.  DRP Denial Reason Codes Registry . . . . . . . . . . . .  61\n     13.2.  DRP Operation Types Registry . . . . . . . . . . . . . .  63\n     13.3.  DRP Boundary String Format Registry  . . . . . . . . . .  64\n   14. References  . . . . . . . . . . . . . . . . . . . . . . . . .  64\n     14.1.  Normative References . . . . . . . . . . . . . . . . . .  64\n     14.2.  Informative References . . . . . . . . . . . . . . . . .  65\n   Appendix A.  JSON Schema Definitions  . . . . . . . . . . . . . .  66\n     A.1.  Delegation Receipt Schema . . . . . . . . . . . . . . . .  66\n     A.2.  Action Log Entry Schema . . . . . . . . . . . . . . . . .  72\n     A.3.  Session State Schema  . . . . . . . . . . . . . . . . . .  74\n   Appendix B.  Example JSON Objects . . . . . . . . . . . . . . . .  76\n     B.1.  Example DelegationReceipt . . . . . . . . . . . . . . . .  76\n     B.2.  Example Scope Discovery Output  . . . . . . . . . . . . .  77\n   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  78\n   Author&#x27;s Address  . . . . . . . . . . . . . . . . . . . . . . . .  78\n\n1.  Introduction\n\n   Agentic AI systems execute actions on behalf of human principals\n   using natural language instructions as their primary authorization\n   artifact.  This creates a structural gap between the authorization a\n   user believes they granted and the instructions an operator delivers\n   to the agent at runtime.  No existing cryptographic mechanism makes\n   that gap detectable.\n\n   This document specifies the Delegation Receipt Protocol (DRP), a\n   cryptographic authorization primitive that addresses this gap.  DRP\n   requires every agent action to be preceded by a user-signed\n   Authorization Object -- the Delegation Receipt -- anchored to a\n   tamper-evident append-only log.  The receipt commits the user&#x27;s\n   authorized scope, operational boundaries, validity window, and a\n   cryptographic hash of the operator&#x27;s stated instructions.  Any\n   deviation by the operator from those instructions is provable from\n   the public log without additional trust assumptions.\n\n   DRP is not a replacement for existing IETF agent authorization work.\n   WIMSE, AIP, and OAuth 2.0 Token Exchange [RFC8693] address service-\n   to-agent trust.  DRP addresses the upstream layer: user-to-operator\n   trust.  In a complete agentic trust stack, these layers are\n   complementary.\n\n   A reference implementation of this protocol is available as an open-\n   source SDK at https://github.com/Commonguy25/authproof-sdk under the\n   MIT License.  A hosted service implementing the protocol is available\n   at https://cloud.authproof.dev with a free tier requiring no credit\n   card.\n\n<span>Nelson                  Expires 15 December 2026                [Page 3]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n1.1.  Novel Contributions\n\n   This document introduces three cryptographic primitives that do not\n   appear in existing agent authorization frameworks or IETF drafts:\n\n   *Model State Attestation (Section 7):*\n\n   The delegation receipt is bound to a cryptographic measurement of the\n   model state at authorization time.  If the operator substitutes a\n   different model after the user signs the receipt, the measurement\n   changes and execution is blocked.  This closes the operator model\n   substitution attack vector that existing frameworks do not address.\n   The protocol distinguishes between malicious substitution (always\n   blocked) and provider updates (requires reauthorization) using the\n   ProviderUpdate vs MaliciousSubstitution classification defined in\n   Section 7.3.\n\n   *Scope Discovery Protocol (Section 8):*\n\n   Before authorization, the agent runs in a sandboxed observation mode\n   with no real resource access.  It simulates the intended task and\n   records every resource it attempts to access.  This produces a draft\n   ScopeSchema grounded in actual agent behavior rather than operator-\n   specified assumptions.  The user reviews a plain-language summary and\n   signs only what they explicitly approve.  This closes the upstream\n   design-time gap where users cannot accurately specify scope before\n   understanding agent behavior.\n\n   *Session State and Adaptive Authorization (Section 9):*\n\n   A continuously updated trust score tracks behavioral anomalies across\n   the session lifetime.  Trust decays on anomaly detection and recovers\n   slowly on clean behavior.  Decision thresholds tighten automatically\n   as trust degrades.  Sessions suspend when trust falls below a\n   configurable floor, requiring explicit user reauthorization.  This\n   extends the static pre-execution authorization model to cover dynamic\n   session-level risk that cannot be captured at delegation time.\n\n2.  Terminology\n\n   The key words &quot;*MUST*&quot;, &quot;*MUST NOT*&quot;, &quot;*REQUIRED*&quot;, &quot;*SHALL*&quot;,\n   &quot;*SHALL NOT*&quot;, &quot;*SHOULD*&quot;, &quot;*SHOULD NOT*&quot;, &quot;*RECOMMENDED*&quot;, &quot;*NOT\n   RECOMMENDED*&quot;, &quot;*MAY*&quot;, and &quot;*OPTIONAL*&quot; in this document are to be\n   interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only\n   when, they appear in all capitals, as shown here.\n\n   The following terms are used throughout this document:\n\n<span>Nelson                  Expires 15 December 2026                [Page 4]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Delegation Receipt:\n      A signed Authorization Object produced by the User prior to any\n      agent action.  Contains scope, boundaries, time window, and\n      operator instruction hash. *MUST* be anchored to an append-only\n      log before the agent runtime receives control.\n\n   Authorization Object:\n      The canonical JSON body that is signed to produce a Delegation\n      Receipt.  The receipt ID is the SHA-256 hash of this body in its\n      canonical serialization.\n\n   User:\n      The human principal whose resources and authority are being\n      delegated.  The User&#x27;s private key is the sole signing authority\n      for Delegation Receipts.\n\n   Operator:\n      The developer or organization that builds and deploys the agent.\n      The Operator provides instructions to the agent and is bound by\n      the instruction hash committed in the receipt.\n\n   Agent:\n      The AI system taking actions on behalf of the User.  The Agent\n      *MUST* verify a valid Delegation Receipt before executing any\n      action.\n\n   Append-Only Log:\n      A tamper-evident ledger to which Delegation Receipts are anchored\n      prior to execution.  Implementations *SHOULD* use a decentralized\n      transparency log following the Certificate Transparency model.\n\n   Log Anchor:\n      An inclusion proof returned by the append-only log after a receipt\n      is submitted.  The log anchor establishes the authoritative\n      issuance timestamp.\n\n   Scope:\n      An explicit allowlist of permitted operations embedded in a\n      Delegation Receipt.  Operations are classified as reads, writes,\n      deletes, or executes.  All operations not listed are denied by\n      default.\n\n   Boundaries:\n      Explicit prohibitions embedded in a Delegation Receipt that\n      survive any subsequent Operator instruction.  Boundaries *MUST\n      NOT* be waived or overridden by the Operator.\n\n<span>Nelson                  Expires 15 December 2026                [Page 5]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Instruction Hash:\n      The SHA-256 hash of the Operator&#x27;s stated instructions at\n      delegation time.  Any change to the Operator&#x27;s instructions after\n      receipt issuance is detectable by recomputing this hash.\n\n   Micro-Receipt:\n      A minimal Delegation Receipt covering a single action not included\n      in the parent receipt&#x27;s scope. *MUST* reference the parent receipt\n      hash.\n\n   Model State Commitment:\n      A cryptographic measurement binding a specific model identity,\n      version, system prompt hash, and runtime configuration hash to a\n      Delegation Receipt.\n\n   Scope Discovery:\n      A protocol that derives authorized scope from sandboxed\n      observation of agent behavior rather than upfront user\n      specification.\n\n   Session State:\n      A live, stateful risk evaluation layer that tracks trust decay,\n      sensitivity classification, and behavioral anomalies across the\n      lifetime of an agent session.\n\n3.  Problem Statement\n\n3.1.  The Agentic Delegation Chain\n\n   Agentic AI systems involve at minimum three principals:\n\n   *  User -- the human whose resources and authority are delegated.\n\n   *  Operator -- the developer or company that builds and deploys the\n      agent.\n\n   *  Agent -- the AI system taking actions on the User&#x27;s behalf.\n\n   The delegation chain is:\n\n      User --&gt; Operator --&gt; Agent --&gt; Services\n\n   The User grants authority to the Operator.  The Operator translates\n   that authority into instructions for the Agent.  The Agent acts on\n   downstream services.  At each step, fidelity to the User&#x27;s original\n   intent depends entirely on the honesty and competence of the\n   intermediate party.\n\n<span>Nelson                  Expires 15 December 2026                [Page 6]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n3.2.  The Missing Cryptographic Anchor\n\n   In current agentic deployments, the User&#x27;s authorization is captured\n   in natural language -- a chat message, a consent checkbox, a terms-\n   of-service agreement.  None of these produce a cryptographically\n   verifiable record of what the User actually authorized at the moment\n   of delegation.\n\n   This creates three compounding problems:\n\n   The repudiation problem:\n      If an agent takes an action the User did not authorize, there is\n      no cryptographic evidence of what the User did authorize.  The\n      Operator&#x27;s account of the authorization is the only record, and it\n      is unverifiable.\n\n   The drift problem:\n      Operators may update system prompts, change agent behavior, or\n      respond to external pressure in ways that diverge from the User&#x27;s\n      original authorization.  Nothing in the current architecture makes\n      this divergence detectable.\n\n   The audit problem:\n      Regulators auditing agentic behavior have no evidence chain\n      connecting agent actions to original user consent.  The Operator&#x27;s\n      logs are the only source of truth, controlled by the party whose\n      conduct is under scrutiny.\n\n3.3.  IETF Framework Analysis\n\n   Several IETF working groups have produced or are producing\n   specifications for agent identity and authorization.  Each addresses\n   a different trust boundary; none addresses user-to-operator trust.\n\n   WIMSE (Workload Identity in Multi-System Environments) addresses\n   service-to-service authentication: can service B verify that a\n   request came from legitimate workload A?  It does not address whether\n   the workload was authorized by the User to make that request in the\n   first place.\n\n   AIP (Agent Identity Protocol) defines credential structures for agent\n   principals and addresses how agents present identity to services they\n   call.  Like WIMSE, its trust model is downstream of the Operator --\n   it assumes the Operator has correctly represented the User&#x27;s\n   authorization.\n\n<span>Nelson                  Expires 15 December 2026                [Page 7]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   draft-klrc-aiagent-auth addresses OAuth-style authorization flows for\n   AI agents, allowing agents to obtain access tokens for downstream\n   APIs.  It solves the service authorization problem -- whether the\n   agent can call an API -- but not the delegation integrity problem --\n   whether the Operator&#x27;s instructions faithfully represent the User&#x27;s\n   authorization.\n\n   OAuth 2.0 Token Exchange [RFC8693] and Rich Authorization Requests\n   [RFC9396] provide mechanisms for scoped token issuance and delegation\n   chains between services but operate at the service layer.  The User&#x27;s\n   intent is represented by the OAuth grant, which is under Operator\n   control.\n\n   The gap is consistent across all existing frameworks: user-to-\n   operator trust is taken as a precondition.  DRP addresses that\n   precondition directly.\n\n4.  The Delegation Receipt\n\n4.1.  Receipt Structure\n\n   A Delegation Receipt is a JSON object with the following *REQUIRED*\n   fields:\n\n   receiptId:\n      The SHA-256 hash of the canonical serialization of the\n      Authorization Object body (all fields except receiptId and\n      signature).  Encoded as the string &quot;rec_&quot; followed by the\n      lowercase hex digest.\n\n   schemaVersion:\n      Protocol schema version string.  This document defines version\n      &quot;1.0&quot;.\n\n   scope:\n      An object with two keys: &quot;allowedActions&quot; and &quot;deniedActions&quot;,\n      each containing an array of action descriptors.  Each action\n      descriptor is an object with &quot;operation&quot; and &quot;resource&quot; string\n      fields.  Actions in &quot;deniedActions&quot; take precedence over\n      &quot;allowedActions&quot;.  Natural language *MUST NOT* appear in any scope\n      field.\n\n   boundaries:\n      An array of prohibition strings that *MUST* be enforced regardless\n      of Operator instruction.  The array *MUST NOT* be empty;\n      implementations with no explicit prohibitions *SHOULD* populate a\n      conservative default.  The *RECOMMENDED* conservative default\n      *MUST* deny all write, delete, and execute operations on resources\n\n<span>Nelson                  Expires 15 December 2026                [Page 8]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      not explicitly listed in the receipt&#x27;s allowedActions:\n      [&quot;deny:write:*&quot;, &quot;deny:delete:*&quot;, &quot;deny:execute:*&quot;].\n      Implementations *MUST* document the default boundaries value in\n      use.\n\n   timeWindow:\n      An object with &quot;notBefore&quot; and &quot;notAfter&quot; fields, each an ISO 8601\n      timestamp.  The authoritative time reference is the log timestamp\n      (see Section 5.3), not the client clock.\n\n   operatorInstructionsHash:\n      The SHA-256 hash of the Operator&#x27;s stated instructions at\n      delegation time, encoded as &quot;sha256:&quot; followed by the lowercase\n      hex digest.\n\n   operatorInstructions:\n      The operatorInstructions field is OPTIONAL in the receipt JSON\n      object, but implementations *MUST* ensure that either (a) the\n      plaintext operator instructions are present in this field, or (b)\n      the instructions are stored via a verifiable off-log commitment\n      mechanism, with the operatorInstructionsHash field providing the\n      cryptographic binding.  Verifiers that require plaintext access\n      for audit purposes *SHOULD* reject receipts where this field is\n      absent unless they have access to the off-log store.\n\n   canonicalPayload:\n      The base64url-encoded canonical JSON serialization of all\n      Authorization Object fields except signature.  This is the exact\n      byte string over which the ECDSA P-256 signature is computed and\n      verified.  Carrying the canonical payload in the receipt allows\n      verifiers to re-verify the signature without reconstructing the\n      canonical form from scratch.  The canonicalPayload field *MUST* be\n      computed over all fields of the Authorization Object except\n      canonicalPayload itself and signature.  Verifiers *MAY* use this\n      field directly to skip reconstruction, provided they first verify\n      the signature over the encoded value.\n\n   publicKey:\n      The User&#x27;s public key as a JSON Web Key [RFC7517].\n      Implementations *SHOULD* use Ed25519 ([RFC8032], crv: &quot;Ed25519&quot;),\n      which is *RECOMMENDED* for all new deployments.  ECDSA P-256 (crv:\n      &quot;P-256&quot;, [RFC7518]) is also supported for interoperability with\n      deployments that do not support Ed25519.\n\n   signature:\n      The digital signature over the canonical serialization of the\n      Authorization Object body, encoded as base64url.  The signature\n      algorithm *MUST* match the algorithm of the publicKey field: ECDSA\n\n<span>Nelson                  Expires 15 December 2026                [Page 9]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      P-256 (per [RFC7518]) when publicKey.kty is &quot;EC&quot;, or Ed25519 (per\n      [RFC8032]) when publicKey.kty is &quot;OKP&quot;.  See Section 4.3 for the\n      complete signing procedure.\n\n   The following *OPTIONAL* fields are defined by this document:\n\n   teeMeasurement:\n      Model state commitment object binding the receipt to a specific\n      TEE enclave measurement.  See Section 7.\n\n   modelCommitment:\n      SHA-256 measurement of the model state at authorization time,\n      formatted as &quot;sha256:&quot; followed by the lowercase hex digest.  When\n      present, verification *MUST* fail if the current model measurement\n      does not match.  See Section 7.\n\n   scopeSchema:\n      Machine-readable structured allowlist and denylist derived from\n      the Scope Discovery Protocol.  See Section 8.\n\n   toolSchemaHash:\n      The SHA-256 hash of the canonical serialization of the complete\n      set of tool schemas available to the agent at delegation time,\n      formatted as &quot;sha256:&quot; followed by the lowercase hex digest.  When\n      present, Check 11 of the verification algorithm (Section 6.4)\n      *MUST* recompute this hash at execution time and fail if it does\n      not match.  Detects tool schema changes made after authorization\n      was granted.\n\n   discoveryMetadata:\n      Metadata recorded during a Scope Discovery Protocol observation\n      session (Section 8), including observationCount, abortedByTimeout,\n      and riskFlags.  Provides an auditable trail from observation to\n      receipt issuance. *MUST* be present when the receipt was produced\n      by the Scope Discovery Protocol.\n\n   trustedSources:\n      An array of strings identifying instruction sources that are\n      permitted to drive agent behavior.  Typical values include &quot;user&quot;,\n      &quot;system_prompt&quot;, and &quot;verified_tool&quot;.  When present, Check 13 of\n      the verification algorithm (Section 6.4) *MUST* reject any action\n      whose instructionSource is not in this list.  See Section 6.1 for\n      the prompt injection threat.\n\n   parentReceiptId:\n      The receiptId of the Orchestrator&#x27;s Delegation Receipt that\n      authorized creation of this sub-receipt.  When present, the\n      receipt is treated as a sub-receipt and subjected to the parent\n\n<span>Nelson                  Expires 15 December 2026               [Page 10]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      scope containment check (Check 14).  When absent, the receipt is\n      treated as a root receipt and requires a User signature.  See\n      Section 10.\n\n   orchestratorSignature:\n      An ECDSA P-256 signature by the Orchestrator&#x27;s key over the\n      binding string &quot;orchestrator-delegation:&quot; || parentReceiptId ||\n      &quot;:&quot; || receiptId.  Present only in sub-receipts.  Not included in\n      the signed body.  See Section 10.1.\n\n   metadata:\n      An *OPTIONAL* object containing implementation-defined key-value\n      pairs.  The metadata object is covered by the receipt signature\n      (i.e., included in the canonicalPayload).  Implementations *MAY*\n      include arbitrary metadata; verifiers that do not recognize\n      metadata keys *MUST* ignore them.  Metadata keys beginning with\n      &quot;x-&quot; are reserved for private use.\n\n   providerUpdatePolicyId:\n      OPTIONAL.  A string identifier referencing the\n      providerUpdatePolicy configuration entry that governed this\n      delegation at issuance time.  Including this field allows\n      verifiers and auditors to determine, from the receipt alone, which\n      update policy was in effect without accessing operator-side\n      configuration.  The value is an opaque string scoped to the\n      Operator&#x27;s trust anchor; its format is implementation-defined.\n      This field is covered by the receipt signature.\n\n   revocationRequired:\n      An *OPTIONAL* boolean field, default false.  When set to true, the\n      receipt *MUST NOT* be verified in offline mode.  A verifier\n      operating in offline mode that encounters a receipt with\n      revocationRequired set to true *MUST* return DENY with reason\n      REVOCATION_CHECK_REQUIRED.  This field allows the receipt issuer\n      to mark high-stakes delegations as requiring online revocation\n      checks.  This field is covered by the receipt signature.\n\n   toolOutputHash:\n      An *OPTIONAL* string.  The SHA-256 hash of the tool output that is\n      expected at execution time, formatted as &quot;sha256:&quot; followed by the\n      lowercase hex digest.  When present, Check 12 of the verification\n      algorithm (Section 6.4) *MUST* compute the SHA-256 hash of\n      action.toolOutput and fail if it does not match.  Detects\n      tampering of tool output between delegation time and execution\n      time.  This field is covered by the receipt signature.\n\n<span>Nelson                  Expires 15 December 2026               [Page 11]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   authorityStateCommitment:\n      An *OPTIONAL* 64-character lowercase hexadecimal string.  A\n      deterministic SHA-256 commitment to the principal&#x27;s authority\n      state (roles, groups, entitlements, and attributes) at delegation\n      time.  The commitment is computed by key-sorting all fields\n      recursively before hashing, so that {&quot;b&quot;:1,&quot;a&quot;:2} and\n      {&quot;a&quot;:2,&quot;b&quot;:1} produce the same digest.  When present, Check 15 of\n      the verification algorithm (Section 6.4) *MUST* recompute this\n      commitment against the currentAuthorityState provided by the\n      caller and either block or emit a soft reauthorization signal if\n      drift is detected, depending on the\n      reauthPolicy.onAuthorityStateDrift setting.  This field is covered\n      by the receipt signature.\n\n   reauthPolicy:\n      An *OPTIONAL* object that controls when the verifier emits a soft\n      reauthorization signal (reauthRequired: true) on a PERMIT result.\n      The object has three optional properties: secondsBeforeExpiry\n      (emit reauthRequired when the receipt is within this many seconds\n      of its notAfter time; default 300), trustScoreBelow (emit\n      reauthRequired when the session trust score falls below this\n      threshold; default 50), and onAuthorityStateDrift (one of &quot;block&quot;\n      or &quot;reauth&quot;; governs Check 15 behavior when authority state drift\n      is detected: &quot;block&quot; causes an immediate DENY with\n      AUTHORITY_STATE_DRIFT; &quot;reauth&quot; permits the action but sets\n      reauthRequired: true and authorityStateDrifted: true on the\n      result; default &quot;reauth&quot;).  A PERMIT result carrying\n      reauthRequired: true is a non-breaking soft signal; callers\n      *SHOULD* initiate reauthorization but *MUST NOT* block execution\n      on that basis alone.  This field is covered by the receipt\n      signature.\n\n   All fields defined in this section, including all *OPTIONAL* fields,\n   are included in the canonical serialization of the Authorization\n   Object body and are therefore covered by the receipt signature.  Once\n   signed, no field may be added, removed, or altered without\n   invalidating the signature.  The sole exception is\n   orchestratorSignature, which is explicitly excluded from the signed\n   body as noted in its field definition above.\n\n   The complete structure is illustrated below:\n\n<span>Nelson                  Expires 15 December 2026               [Page 12]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   {\n     &quot;receiptId&quot;:               &quot;rec_&lt;lowercase-hex-of-canonical-body&gt;&quot;,\n     &quot;schemaVersion&quot;:           &quot;1.0&quot;,\n     &quot;scope&quot;: {\n       &quot;allowedActions&quot;: [\n         { &quot;operation&quot;: &quot;&lt;op&gt;&quot;, &quot;resource&quot;: &quot;&lt;resource&gt;&quot; }\n       ],\n       &quot;deniedActions&quot;: [\n         { &quot;operation&quot;: &quot;&lt;op&gt;&quot;, &quot;resource&quot;: &quot;&lt;resource&gt;&quot; }\n       ]\n     },\n     &quot;boundaries&quot;: [&quot;&lt;prohibition-string&gt;&quot;],\n     &quot;timeWindow&quot;: {\n       &quot;notBefore&quot;: &quot;&lt;ISO-8601-timestamp&gt;&quot;,\n       &quot;notAfter&quot;:  &quot;&lt;ISO-8601-timestamp&gt;&quot;\n     },\n     &quot;operatorInstructionsHash&quot;: &quot;sha256:&lt;hex-digest&gt;&quot;,\n     &quot;operatorInstructions&quot;:     &quot;&lt;operator-instruction-text&gt;&quot;,\n     &quot;publicKey&quot;:                { &quot;&lt;JWK per RFC 7517&gt;&quot; },\n     &quot;signature&quot;:                &quot;&lt;base64url-ecdsa-p256-signature&gt;&quot;\n   }\n\n4.2.  Canonical Serialization\n\n   The canonical serialization of a receipt body is defined as follows:\n\n   1.  Serialize the Authorization Object as JSON with keys sorted in\n       lexicographic ascending order at every nesting level.\n\n   2.  Remove all insignificant whitespace (no spaces, no newlines\n       outside of string values).\n\n   3.  Encode the result as UTF-8.\n\n   4.  Apply Unicode NFC normalization to all string values before\n       serialization.  All string values in the Authorization Object\n       *MUST* be normalized to Unicode Normalization Form C (NFC) prior\n       to JSON encoding.  Implementations *MUST NOT* produce or accept\n       canonical payloads containing strings in non-NFC normal form.\n\n   5.  Arrays *MUST* be serialized in the order they appear in the\n       schema definition.  Array elements *MUST NOT* be reordered during\n       canonicalization.  The allowedActions and deniedActions arrays\n       *MUST* preserve insertion order.\n\n<span>Nelson                  Expires 15 December 2026               [Page 13]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   6.  Floating-point values *MUST* be serialized using the shortest\n       decimal representation that round-trips per IEEE 754 double-\n       precision semantics.  Implementations *MUST NOT* produce trailing\n       zeros, unnecessary exponent notation, or representations that do\n       not round-trip to the same IEEE 754 value.\n\n   The canonical computation excludes the canonicalPayload field itself\n   and the signature field.  All other fields present in the\n   Authorization Object at signing time *MUST* be included.\n\n   Implementations *SHOULD* follow the JSON Canonicalization Scheme\n   defined in [RFC8785] as a compatible reference implementation of the\n   canonicalization requirements in this section.\n\n   The receiptId is computed as:\n\n   receiptId = &quot;rec_&quot; ||\n                  lowercase_hex(SHA-256(canonical_body))\n\n   Implementations *MUST* compute the receiptId over the body before the\n   signature field is added.  The signature field *MUST NOT* be included\n   in the data that is signed.\n\n4.3.  Signing Procedure\n\n   Receipt issuance *MUST* follow this sequence:\n\n   1.  The Operator presents their intended instructions to the User,\n       along with the proposed scope, boundaries, and time window.\n\n   2.  The User reviews the scope, boundaries, time window, and Operator\n       instructions.\n\n   3.  The User signs the canonical Authorization Object body using\n       their private key.  Two signing algorithms are defined by this\n       document:\n\n       *  Ed25519 (per [RFC8032]): *RECOMMENDED* for all new deployments\n          due to smaller key and signature sizes, simpler\n          implementation, and resistance to certain ECDSA implementation\n          pitfalls.  Ed25519 public keys are carried as JWK with kty:\n          &quot;OKP&quot; and crv: &quot;Ed25519&quot;.\n\n       *  ECDSA P-256 (crv: &quot;P-256&quot;, per [RFC7518]): the baseline\n          algorithm supported by all conforming implementations.\n          *REQUIRED* for implementations that must interoperate with\n          deployments that do not support Ed25519.\n\n<span>Nelson                  Expires 15 December 2026               [Page 14]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n       Signing via the WebAuthn/FIDO2 API [W3C-WebAuthn] [FIDO2] is one\n       valid mechanism; hardware key custody (Trusted Platform Module or\n       device secure enclave) is *RECOMMENDED* for production\n       deployments requiring non-repudiation guarantees, but is not\n       required by this specification.\n\n   4.  The signed receipt is submitted to a decentralized append-only\n       log.\n\n   5.  The log assigns a timestamp and returns a log anchor (inclusion\n       proof).\n\n   6.  No agent action *MAY* begin until the log anchor is confirmed.\n\n   The log timestamp established in step 5 is the authoritative issuance\n   time.  Client clocks *MUST NOT* be used as the time reference for\n   receipt validation.\n\n5.  The Append-Only Log\n\n5.1.  Log Entry Structure\n\n   Each entry in the append-only log *MUST* contain:\n\n   *  The Delegation Receipt hash (receiptId).\n\n   *  The SHA-256 hash of the preceding log entry (for chain linking;\n      see Section 5.2).\n\n   *  A trusted timestamp conforming to [RFC3161].\n\n   *  The submitter&#x27;s public key hash.\n\n   *  A monotonically increasing entry sequence number.\n\n   Implementations *SHOULD* use a log format compatible with Certificate\n   Transparency [RFC6962] to enable standard log consistency\n   verification.\n\n   Action log entries produced during agent execution follow the same\n   structure.  Each action log entry *MUST* include:\n\n   *  The receipt hash authorizing the action.\n\n   *  The action type, payload hash, and destination.\n\n   *  The SHA-256 hash of the preceding action log entry.\n\n<span>Nelson                  Expires 15 December 2026               [Page 15]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   *  An RFC 3161 timestamp and the agent&#x27;s ECDSA P-256 signature over\n      the entry body.\n\n5.2.  Chain Linking\n\n   Each log entry *MUST* include the SHA-256 hash of the immediately\n   preceding entry.  This chain structure guarantees:\n\n   1.  Log entries cannot be inserted retroactively without producing a\n       detectable chain break.\n\n   2.  Log entries cannot be deleted without invalidating the chain hash\n       of the subsequent entry.\n\n   3.  Any two parties holding the same entry hash can verify\n       independently that they share the same log view up to that entry.\n\n   The chain structure makes it computationally infeasible to insert,\n   modify, or delete individual action records without producing a\n   detectable chain break that any log monitor can identify.  However,\n   chain linking alone does not protect against _truncation_ (discarding\n   the tail of the log) or _equivocation_ (presenting different log\n   views to different observers).  Implementations *SHOULD* submit\n   action log roots to an independently monitored transparency log\n   following the SCITT architecture [I-D.ietf-scitt-architecture] to\n   detect truncation and log fork attacks.\n\n5.3.  Timestamp Authority\n\n   Implementations *MUST* use an RFC 3161 [RFC3161] Time-Stamp Authority\n   (TSA) to produce the authoritative timestamp for each Delegation\n   Receipt anchored to the log.  The TSA timestamp:\n\n   1.  Establishes the authoritative notBefore time for the associated\n       Delegation Receipt.\n\n   2.  Is used in lieu of the client clock for all time window\n       validation (see Section 6.1).\n\n   3.  Is included in the log anchor returned to the submitter.\n\n   If the TSA is unreachable, implementations *MAY* record a local-clock\n   timestamp marked &quot;UNVERIFIED_TIMESTAMP&quot;.  An agent verifier *MUST*\n   treat UNVERIFIED_TIMESTAMP as insufficient evidence of authorization\n   time in production deployments.\n\n<span>Nelson                  Expires 15 December 2026               [Page 16]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Implementations performing time-window validation (Section 6.4 Check\n   3) MUST account for clock skew between the verifier&#x27;s local clock and\n   the TSA&#x27;s clock.  A tolerance window of up to 300 seconds (5 minutes)\n   is *RECOMMENDED*.  Implementations *MAY* configure a tighter\n   tolerance; the configured skew tolerance *MUST* be documented and\n   communicated to all parties in the delegation trust chain.  Verifiers\n   *MUST NOT* accept a receipt whose timeWindow.notAfter value, even\n   accounting for the full configured skew tolerance, has elapsed.\n\n5.4.  Denied Call Logging\n\n   Implementations *MUST* log all verification decisions including those\n   that result in a DENY outcome.  Logging only PERMIT decisions creates\n   a blind spot for detecting prompt injection and model drift.\n\n   The distribution of denied calls over time is a leading indicator of\n   adversarial activity.  A model being prompt- injected will generate\n   denied calls with novel action classes and scope edge probing that\n   differs detectably from normal operation.  Post-hoc analysis of the\n   deny path is the primary forensic signal for incident reconstruction.\n\n   Denied call log entries *MUST* include the full call context, the\n   specific denial reason code, and the session risk score at the time\n   of denial.  Implementations *SHOULD* expose denied call distribution\n   analytics to enable real-time anomaly detection.\n\n6.  Pre-Execution Verification\n\n6.1.  Verification Checks\n\n   Before executing any action, the Agent *MUST* perform all of the\n   following checks in order.  All checks *MUST* pass; any single\n   failure *MUST* abort the action without partial execution.\n\n   Check numbers match Section 6.4 (Section 6.4); optional checks appear\n   only when the relevant receipt fields are present.\n\n<span>Nelson                  Expires 15 December 2026               [Page 17]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\nVerify(receipt, action):\n  (1) if Revoked(receipt.receiptId)\n                                      -&gt; fail\n  (2) if not VerifySig(receipt.signature,\n                       canonical(receipt.body),\n                       receipt.publicKey)\n                                      -&gt; fail\n  (3) if not InTimeWindow(receipt.timeWindow,\n                          logTimestamp)\n                                      -&gt; fail\n  (4) if not InScope(action, receipt.scope)\n                                      -&gt; fail\n  (5) if ViolatesBoundary(action, receipt.boundaries)\n                                      -&gt; fail\n  (6) if Hash(ExecutionGraph(action.program))\n         != receipt.scope.executes[action.programIndex]\n                                      -&gt; fail\n  (7) if Hash(currentOperatorInstructions)\n         != receipt.operatorInstructionsHash\n                                      -&gt; fail\n  (8) [model state attestation -- if receipt.modelCommitment present,\n       see Section 6.4 CHECK 8]\n  (9) [session risk evaluation -- conditional on sessionState,\n       see Section 6.4 CHECK 9]\n  (10) [nonce replay detection -- conditional on receipt.nonce,\n        see Section 6.4 CHECK 10]\n  (11) if receipt.toolSchemaHash PRESENT and\n          SHA-256(canonical(currentToolSchema))\n          != receipt.toolSchemaHash\n                                      -&gt; fail\n  (12) if receipt.toolOutputHash PRESENT and\n          action.toolOutput PRESENT and\n          SHA-256(action.toolOutput)\n          != receipt.toolOutputHash\n                                      -&gt; fail\n  (13) if receipt.trustedSources PRESENT and\n           action.instructionSource PRESENT and\n           action.instructionSource NOT IN receipt.trustedSources\n                                      -&gt; fail\n  (14) [parent scope containment -- if receipt.parentReceiptId present,\n        see Section 6.4 CHECK 14]\n  (15) [authority state drift -- if receipt.authorityStateCommitment present\n        AND currentAuthorityState provided, see Section 6.4 CHECK 15;\n        result MAY include reauthRequired signal even on PERMIT]\n  return PERMIT (reauthRequired: computed from reauthPolicy, timeWindow,\n                 session trust score, and authority state drift)\n\n<span>Nelson                  Expires 15 December 2026               [Page 18]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   The revocation pre-check (step 1) *MUST* be performed before any\n   other check.  A revoked receipt *MUST* fail immediately regardless of\n   whether other checks would pass.\n\n6.2.  Check Ordering\n\n   The check ordering reflects distinct security properties; each step\n   eliminates a distinct attack surface.\n\n   Revocation check (1):\n      Ensures a receipt explicitly invalidated by the User cannot\n      authorize further actions, regardless of its cryptographic\n      validity.\n\n   Signature check (2):\n      Confirms the receipt was signed by the holder of the User&#x27;s\n      private key and has not been altered since signing.  Any tampering\n      with the receipt body invalidates the signature under ECDSA P-256.\n\n   Time window check (3):\n      Validates the action against the log-assigned TSA timestamp, not\n      the client clock.  Prevents time manipulation attacks in which an\n      agent extends its own authorization window by adjusting local\n      time.\n\n   Scope check (4):\n      Enforces the deny-by-default allowlist.  If the action is not\n      explicitly listed, it *MUST* fail regardless of Operator\n      instruction.\n\n   Boundary check (5):\n      Enforces the User&#x27;s hard limits, which survive any subsequent\n      Operator instruction or override.\n\n   Execution hash check (6):\n      Verifies that Hash(ExecutionGraph(action.program)) matches the\n      committed hash in receipt.scope.executes for the requested\n      program.  Applies only when action.type is EXECUTE.\n\n   Instruction hash check (7):\n      Compares the SHA-256 hash of the Operator&#x27;s current instructions\n      against the hash committed at delegation time.  If the Operator\n      has changed its instructions since the receipt was issued, the\n      mismatch is immediately detectable from the log entry, with no\n      reliance on the Operator&#x27;s own account.\n\n<span>Nelson                  Expires 15 December 2026               [Page 19]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Model state attestation check (8):\n      When the receipt contains a modelCommitment field, recomputes the\n      model state measurement at execution time and compares it to the\n      committed value.  A mismatch indicates that the model was\n      substituted or updated after authorization was granted.  Returns\n      MALICIOUS_MODEL_SUBSTITUTION or PROVIDER_UPDATE_DETECTED on\n      failure.\n\n   Session risk evaluation check (9):\n      When session state is present, evaluates the cumulative session\n      risk score against the configured thresholds.  If the session\n      trust score has fallen below the block threshold or tauSession has\n      been exhausted, the action is denied.  Returns\n      SESSION_RISK_THRESHOLD_EXCEEDED or TAU_SESSION_EXHAUSTED on\n      failure.\n\n   Replay detection check (10):\n      Blocks concurrent use of the same receipt.  If the same receiptId\n      is presented while another check for that receipt is already in\n      progress, the action is denied.  Returns REPLAY_DETECTED on\n      failure.\n\n   Tool schema integrity check (11):\n      When the receipt contains a toolSchemaHash field, recomputes the\n      SHA-256 hash of the canonical serialization of all tool schemas\n      currently available to the agent.  A mismatch indicates that the\n      tool set changed after authorization was granted.  Returns\n      TOOL_SCHEMA_DRIFT on failure.\n\n   Tool output hash check (12):\n      When the receipt contains a toolOutputHash field, the verifier\n      computes the SHA-256 hash of the tool output that triggered the\n      action and compares it to the committed value.  A mismatch\n      indicates that the tool output was altered between delegation time\n      and execution time.  Returns TOOL_OUTPUT_TAMPERED on failure.\n\n   Instruction provenance check (13):\n      When the receipt contains a trustedSources field, the verifier\n      inspects the instructionSource field of the action.  If the source\n      is not in the trustedSources list, the action is denied.  This\n      check is the primary defense against prompt injection attacks in\n      which a poisoned document or untrusted tool output manipulates the\n      agent into requesting an in-scope action for malicious purposes.\n      Returns UNTRUSTED_INSTRUCTION_SOURCE on failure.\n\n   Parent scope containment check (14):\n      Applied only to sub-receipts carrying a parentReceiptId field.\n      Confirms that the sub-receipt&#x27;s scope is a strict subset of the\n\n<span>Nelson                  Expires 15 December 2026               [Page 20]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      parent&#x27;s scope, that the time window is contained within the\n      parent&#x27;s, that the chain depth does not exceed maxChainDepth, and\n      that the orchestrator binding signature is valid.  Returns\n      PARENT_SCOPE_VIOLATION on failure.\n\n   Authority state drift check (15):\n      Applied when the receipt contains an authorityStateCommitment\n      field and the caller supplies a currentAuthorityState value.\n      Recomputes the deterministic SHA-256 commitment from the current\n      authority state using recursive key-sorted stringification and\n      compares it to the committed value.  When drift is detected, the\n      behavior is governed by reauthPolicy.onAuthorityStateDrift: a\n      value of &quot;block&quot; causes an immediate DENY with\n      AUTHORITY_STATE_DRIFT; the default value of &quot;reauth&quot; permits the\n      action but sets reauthRequired: true and authorityStateDrifted:\n      true on the result.  Runs after Check 14 so a receipt carrying\n      both parentReceiptId and authorityStateCommitment passes through\n      both checks in sequence.\n\n6.3.  Failure Handling\n\n   When any verification check fails, the Agent *MUST*:\n\n   1.  Abort the action immediately.  No partial execution is permitted.\n\n   2.  Record the failure in the action log, including the specific\n       check that failed and the reason string.\n\n   3.  Not fall back to Operator instruction.  A failed verification\n       check *MUST NOT* be overridden by any runtime parameter,\n       environment variable, or Operator-supplied flag.\n\n   4.  Surface the failure to the User when the failing check is one of:\n       revocation (1), instruction hash mismatch (7), or execution hash\n       mismatch (6).  These failures indicate possible Operator\n       deviation from the committed authorization and *SHOULD* be\n       escalated.\n\n   The pause-and-request behavior described in this section is an\n   implementation-layer optimization that occurs after the verifier\n   returns DENY with reason SCOPE_VIOLATION.  It does not modify the\n   verification algorithm defined in Section 6.4; the action remains\n   denied until the agent presents a new receipt that passes all checks.\n\n<span>Nelson                  Expires 15 December 2026               [Page 21]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   When a scope check (4) fails because an action is outside the current\n   receipt&#x27;s scope, the Agent *MAY* pause execution and request a Micro-\n   Receipt from the User covering the specific action.  The Micro-\n   Receipt *MUST* reference the parent receipt hash and *MUST* be\n   anchored to the append-only log before the action is attempted.\n\n   Implementations *MUST* always make a safe fallback action available\n   when execution is blocked.  The designated safe fallback action is\n   NO_OP_WITH_LOG: it performs no operation and writes a full audit log\n   entry containing the denial reason, a snapshot of the session state\n   at the time of denial, and a timestamp.  NO_OP_WITH_LOG is\n   unconditionally available regardless of verification state or session\n   trust level.  Every DENY decision returned by the gate *MUST* include\n   a safeAlternative field set to NO_OP_WITH_LOG, providing callers with\n   a guaranteed safe path that preserves the audit record without\n   executing any agent action.\n\n6.4.  Verification Algorithm\n\n   The following pseudocode specifies the complete verification\n   algorithm as a formal function.  The checks are numbered 1-15;\n   revocation (Check 1) MUST be performed before any other check.\n\nFUNCTION VerifyReceipt(receipt, action, operatorInstructions,\n                       sessionState, currentToolSchema,\n                       currentAuthorityState):\n\n  INPUT:\n    receipt               : signed delegation receipt object\n    action                : the agent action being requested\n    operatorInstructions  : current operator instruction string\n    sessionState          : current session state object (optional)\n    currentToolSchema     : current tool schema object (optional)\n    currentAuthorityState : current authority state object (optional)\n\n  OUTPUT:\n    PERMIT or DENY with reason code\n\n  CHECK 1: Revocation Status\n    IF revocationRegistry.isRevoked(receipt.receiptId) THEN\n      RETURN DENY, &quot;RECEIPT_REVOKED&quot;\n\n  CHECK 2: Signature Verification\n    IF NOT VerifySignature(receipt.signature,\n                           receipt.canonicalPayload,\n                           receipt.publicKey) THEN\n      RETURN DENY, &quot;INVALID_SIGNATURE&quot;\n\n<span>Nelson                  Expires 15 December 2026               [Page 22]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n  CHECK 3: Time Window\n    IF receipt.timeWindow.notAfter &lt; NOW() THEN\n      RETURN DENY, &quot;RECEIPT_EXPIRED&quot;\n    IF receipt.timeWindow.notBefore &gt; NOW() THEN\n      RETURN DENY, &quot;RECEIPT_NOT_YET_VALID&quot;\n\n  CHECK 4: Scope Validation\n    IF action.operation NOT IN receipt.scope.allowedActions THEN\n      RETURN DENY, &quot;ACTION_NOT_IN_SCOPE&quot;\n      // NOTE: implementations MAY pause execution and request a\n      // Micro-Receipt from the User rather than returning a hard DENY.\n      // This pause-and-request behavior is a runtime-layer optimization\n      // described in Section 6.3 and does not alter the verifier&#x27;s\n      // decision; the action remains denied until a valid receipt is\n      // presented.\n    IF action.operation IN receipt.scope.deniedActions THEN\n      RETURN DENY, &quot;ACTION_EXPLICITLY_DENIED&quot;\n\n  CHECK 5: Boundary Check\n    FOR EACH prohibition IN receipt.boundaries DO\n      IF action MATCHES prohibition THEN\n        RETURN DENY, &quot;ACTION_EXPLICITLY_DENIED&quot;\n\n  CHECK 6: Execution Hash Check (if EXECUTE action)\n    IF action.type == EXECUTE THEN\n      IF Hash(ExecutionGraph(action.program)) !=\n         receipt.scope.executes[action.programIndex] THEN\n        RETURN DENY, &quot;EXECUTION_HASH_MISMATCH&quot;\n\n  CHECK 7: Operator Instruction Hash\n    currentHash = SHA-256(canonicalize(operatorInstructions))\n    IF currentHash != receipt.operatorInstructionsHash THEN\n      RETURN DENY, &quot;OPERATOR_INSTRUCTIONS_MISMATCH&quot;\n\n  CHECK 8: Model State Attestation\n    IF receipt.modelCommitment IS PRESENT THEN\n      currentMeasurement = measureModelState()\n      IF currentMeasurement != receipt.modelCommitment THEN\n        IF modelSubstitutionDetected(receipt,\n                                     currentMeasurement) THEN\n          RETURN DENY, &quot;MALICIOUS_MODEL_SUBSTITUTION&quot;\n        ELSE\n          RETURN DENY, &quot;PROVIDER_UPDATE_DETECTED&quot;\n\n  CHECK 9: Session Risk Evaluation (if sessionState present)\n    IF sessionState IS PRESENT THEN\n      riskResult = evaluateSessionRisk(action, sessionState)\n      IF riskResult.decision == &quot;BLOCK&quot; THEN\n\n<span>Nelson                  Expires 15 December 2026               [Page 23]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n        RETURN DENY, &quot;SESSION_RISK_THRESHOLD_EXCEEDED&quot;\n      IF riskResult.decision == &quot;REQUIRE_APPROVAL&quot; THEN\n        RETURN REQUIRE_APPROVAL, riskResult.reasons\n\n  CHECK 10: Replay Detection\n    IF presentationLog.contains(receipt.receiptId, sessionId) THEN\n      RETURN DENY, &quot;REPLAY_DETECTED&quot;\n    presentationLog.record(receipt.receiptId, sessionId)\n\n  CHECK 11: Tool Schema Integrity (if toolSchemaHash present)\n    IF receipt.toolSchemaHash IS PRESENT THEN\n      currentHash = SHA-256(canonicalize(currentToolSchema))\n      IF currentHash != receipt.toolSchemaHash THEN\n        RETURN DENY, &quot;TOOL_SCHEMA_DRIFT&quot;\n\n  CHECK 12: Tool Output Hash Binding\n    IF receipt.toolOutputHash IS PRESENT AND\n       action.toolOutput IS PRESENT THEN\n      currentHash = &quot;sha256:&quot; || SHA-256(action.toolOutput)\n      IF currentHash != receipt.toolOutputHash THEN\n        RETURN DENY, &quot;TOOL_OUTPUT_TAMPERED&quot;\n\n  CHECK 13: Instruction Provenance\n    IF receipt.trustedSources IS PRESENT AND\n       action.instructionSource IS PRESENT THEN\n      IF action.instructionSource NOT IN receipt.trustedSources THEN\n        RETURN DENY, &quot;UNTRUSTED_INSTRUCTION_SOURCE&quot;\n\n  CHECK 14: Parent Scope Containment (sub-receipts only)\n    IF receipt.parentReceiptId IS PRESENT THEN\n      parentReceipt = delegationLog.get(receipt.parentReceiptId)\n      IF parentReceipt IS NULL THEN\n        RETURN DENY, &quot;PARENT_SCOPE_VIOLATION&quot;\n\n      // Enforce chain depth limit\n      // Depth-counting traverses parentReceiptId links iteratively\n      // (not recursively). Each hop reads only the receiptId and\n      // parentReceiptId fields; it does NOT re-run the full\n      // verification algorithm on ancestor receipts.\n      depth = countChainDepth(receipt, delegationLog)\n      IF depth &gt; MAX_CHAIN_DEPTH THEN\n        RETURN DENY, &quot;PARENT_SCOPE_VIOLATION&quot;\n\n      // Parent receipt must itself be valid\n      IF NOT VerifySignature(parentReceipt.signature,\n                             parentReceipt.canonicalPayload,\n                             parentReceipt.publicKey) THEN\n        RETURN DENY, &quot;PARENT_SCOPE_VIOLATION&quot;\n\n<span>Nelson                  Expires 15 December 2026               [Page 24]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      // Verify orchestrator binding signature when present\n      IF receipt.orchestratorSignature IS PRESENT THEN\n        bindingStr = &quot;orchestrator-delegation:&quot; ||\n                     receipt.parentReceiptId    || &quot;:&quot; ||\n                     receipt.receiptId\n        IF NOT VerifySignature(receipt.orchestratorSignature,\n                               bindingStr,\n                               parentReceipt.publicKey) THEN\n          RETURN DENY, &quot;PARENT_SCOPE_VIOLATION&quot;\n\n      // Sub-receipt time window must be within parent time window\n      IF receipt.timeWindow.start &lt; parentReceipt.timeWindow.start OR\n         receipt.timeWindow.end   &gt; parentReceipt.timeWindow.end THEN\n        RETURN DENY, &quot;PARENT_SCOPE_VIOLATION&quot;\n\n      // Every child allowed action must be permitted by the parent scope\n      FOR EACH childAction IN receipt.scope.allowedActions DO\n        IF NOT parentReceipt.scope.permits(childAction) THEN\n          RETURN DENY, &quot;PARENT_SCOPE_VIOLATION&quot;\n\n      // Every parent denied action must be preserved in the child scope\n      FOR EACH parentDenied IN parentReceipt.scope.deniedActions DO\n        IF NOT receipt.scope.deniedActions.covers(parentDenied) THEN\n          RETURN DENY, &quot;PARENT_SCOPE_VIOLATION&quot;\n\n      // Strict proper subset check: compare over EXPANDED concrete sets.\n      // Wildcard patterns must be expanded before comparison so that\n      // &quot;read:*&quot; and {&quot;read:email&quot;, &quot;read:calendar&quot;} are compared\n      // correctly under the scope&#x27;s wildcard semantics (see Section 10.2).\n      childActions  = EXPAND(SET(receipt.scope.allowedActions))\n      parentActions = EXPAND(SET(parentReceipt.scope.allowedActions))\n      IF childActions == parentActions THEN\n        RETURN DENY, &quot;SCOPE_NOT_STRICT_SUBSET&quot;\n      // Check 14 falls through -- no RETURN PERMIT here.\n      // A receipt carrying both parentReceiptId and\n      // authorityStateCommitment continues to Check 15.\n\n  CHECK 15: Authority State Drift (if authorityStateCommitment present)\n    // Runs after Check 14 so a receipt carrying both parentReceiptId and\n    // authorityStateCommitment passes through both checks in sequence.\n    authorityStateDrifted = false\n    IF receipt.authorityStateCommitment IS PRESENT AND\n       currentAuthorityState IS PRESENT THEN\n      currentCommitment = stableKeySort_SHA256(currentAuthorityState)\n      IF currentCommitment != receipt.authorityStateCommitment THEN\n        driftPolicy = receipt.reauthPolicy.onAuthorityStateDrift ?? &quot;reauth&quot;\n        IF driftPolicy == &quot;block&quot; THEN\n          RETURN DENY, &quot;AUTHORITY_STATE_DRIFT&quot;\n\n<span>Nelson                  Expires 15 December 2026               [Page 25]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n        ELSE  // &quot;reauth&quot;\n          authorityStateDrifted = true\n\n  // Compute reauthRequired soft signal\n  reauthRequired = false\n  IF receipt.reauthPolicy IS PRESENT THEN\n    secondsToExpiry = receipt.timeWindow.notAfter - NOW()\n    IF secondsToExpiry &lt; (receipt.reauthPolicy.secondsBeforeExpiry ?? 300) THEN\n      reauthRequired = true\n    IF sessionState IS PRESENT AND\n       sessionState.trustScore &lt; (receipt.reauthPolicy.trustScoreBelow ?? 50) THEN\n      reauthRequired = true\n  IF authorityStateDrifted THEN\n    reauthRequired = true\n\n  RETURN PERMIT (reauthRequired: reauthRequired,\n                 authorityStateDrifted: authorityStateDrifted)\n\nEND FUNCTION\n\n6.5.  Denial Reason Codes\n\n   When VerifyReceipt returns DENY, implementations *MUST* include one\n   of the following reason codes in the structured failure response:\n\n   +===============================+==================================+\n   |Reason Code                    |Description                       |\n   +===============================+==================================+\n   |INVALID_SIGNATURE              |Receipt signature verification    |\n   |                               |failed                            |\n   +-------------------------------+----------------------------------+\n   |RECEIPT_REVOKED                |Receipt has been explicitly       |\n   |                               |revoked                           |\n   +-------------------------------+----------------------------------+\n   |RECEIPT_EXPIRED                |Receipt time window has elapsed   |\n   +-------------------------------+----------------------------------+\n   |RECEIPT_NOT_YET_VALID          |Receipt creation time is in the   |\n   |                               |future                            |\n   +-------------------------------+----------------------------------+\n   |ACTION_NOT_IN_SCOPE            |Requested action not in allow list|\n   +-------------------------------+----------------------------------+\n   |ACTION_EXPLICITLY_DENIED       |Requested action in deny list or  |\n   |                               |boundary                          |\n   +-------------------------------+----------------------------------+\n   |EXECUTION_HASH_MISMATCH        |Program execution graph hash does |\n   |                               |not match receipt commitment      |\n   +-------------------------------+----------------------------------+\n   |OPERATOR_INSTRUCTIONS_MISMATCH |Operator instructions hash does   |\n\n<span>Nelson                  Expires 15 December 2026               [Page 26]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   |                               |not match receipt commitment      |\n   +-------------------------------+----------------------------------+\n   |MALICIOUS_MODEL_SUBSTITUTION   |Model identity changed after      |\n   |                               |receipt was signed                |\n   +-------------------------------+----------------------------------+\n   |PROVIDER_UPDATE_DETECTED       |Model version updated by provider;|\n   |                               |reauthorization required          |\n   +-------------------------------+----------------------------------+\n   |SESSION_RISK_THRESHOLD_EXCEEDED|Session trust score below block   |\n   |                               |threshold                         |\n   +-------------------------------+----------------------------------+\n   |REPLAY_DETECTED                |Receipt presented more than once  |\n   |                               |concurrently                      |\n   +-------------------------------+----------------------------------+\n   |TOOL_SCHEMA_DRIFT              |Tool schema hash at execution time|\n   |                               |does not match hash committed at  |\n   |                               |receipt issuance time.  Tool      |\n   |                               |specification has changed since   |\n   |                               |authorization was granted.        |\n   +-------------------------------+----------------------------------+\n   |TOOL_OUTPUT_TAMPERED           |The hash of the tool output that  |\n   |                               |triggered the action does not     |\n   |                               |match the hash committed in the   |\n   |                               |receipt at delegation time.  The  |\n   |                               |tool output may have been modified|\n   |                               |between delegation and execution. |\n   +-------------------------------+----------------------------------+\n   |UNTRUSTED_INSTRUCTION_SOURCE   |The instruction that triggered the|\n   |                               |action originated from a source   |\n   |                               |not listed in the receipt&#x27;s       |\n   |                               |trustedSources field.  The        |\n   |                               |instruction source may have been  |\n   |                               |manipulated by a prompt injection |\n   |                               |attack delivered through an       |\n   |                               |untrusted input channel such as a |\n   |                               |retrieved document or external    |\n   |                               |tool output.                      |\n   +-------------------------------+----------------------------------+\n   |COMMITMENT_REUSE_VIOLATION     |Model commitment value reused     |\n   |                               |across distinct receipt IDs       |\n   +-------------------------------+----------------------------------+\n   |TAU_SESSION_EXHAUSTED          |Session anomaly capacity          |\n   |                               |exhausted: tauSession has fallen  |\n   |                               |to or below tauMin.  Execution    |\n   |                               |blocked regardless of trustScore. |\n   |                               |Not resettable by reauthorization.|\n   |                               |A new session established under a |\n   |                               |new Delegation Receipt begins with|\n\n<span>Nelson                  Expires 15 December 2026               [Page 27]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   |                               |tauSession initialized to         |\n   |                               |sessionCapacity (default: 100).   |\n   |                               |Implementations *MUST NOT* carry  |\n   |                               |tauSession state across session   |\n   |                               |boundaries; each new receipt-     |\n   |                               |bounded session receives a fresh  |\n   |                               |tauSession value.                 |\n   +-------------------------------+----------------------------------+\n   |SESSION_LIFETIME_EXCEEDED      |Session wall-clock lifetime has   |\n   |                               |exceeded maxLifetimeSeconds.  The |\n   |                               |session MUST be terminated and    |\n   |                               |reauthorization required before   |\n   |                               |further actions may proceed.      |\n   +-------------------------------+----------------------------------+\n   |SCOPE_NOT_STRICT_SUBSET        |Sub-receipt allowedActions is not |\n   |                               |a strict proper subset of the     |\n   |                               |parent receipt&#x27;s allowedActions   |\n   +-------------------------------+----------------------------------+\n   |PARENT_SCOPE_VIOLATION         |Sub-receipt failed parent scope   |\n   |                               |containment check (receipt not    |\n   |                               |found, time window overflow, chain|\n   |                               |depth exceeded, or orchestrator   |\n   |                               |binding failure)                  |\n   +-------------------------------+----------------------------------+\n   |REVOCATION_CHECK_REQUIRED      |Returned by an offline verifier   |\n   |                               |when the receipt requires online  |\n   |                               |revocation checking               |\n   |                               |(revocationRequired field is      |\n   |                               |true).                            |\n   +-------------------------------+----------------------------------+\n   |AUTHORITY_STATE_DRIFT          |The principal&#x27;s authority state   |\n   |                               |(roles, groups, entitlements, or  |\n   |                               |attributes) has changed since the |\n   |                               |receipt was issued and            |\n   |                               |reauthPolicy.onAuthorityStateDrift|\n   |                               |is set to &quot;block&quot;.  The SHA-256   |\n   |                               |commitment in the receipt no      |\n   |                               |longer matches the current        |\n   |                               |authority state.  Reauthorization |\n   |                               |is required before further actions|\n   |                               |may proceed.                      |\n   +-------------------------------+----------------------------------+\n\n                                 Table 1\n\n<span>Nelson                  Expires 15 December 2026               [Page 28]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n6.6.  Offline Verification Mode\n\n   Offline verification mode is opt-in by the verifier implementation.\n   When enabled, the verifier skips the revocation registry check (Check\n   1).  All other applicable checks still run: signature validity (Check\n   2), time window (Check 3), scope (Check 4), boundary enforcement\n   (Check 5), execution hash (Check 6), instruction hash (Check 7),\n   model state if the receipt includes a modelCommitment field (Check\n   8), session risk if session state is present (Check 9), replay\n   detection (Check 10), tool schema integrity if the receipt includes a\n   toolSchemaHash field (Check 11), tool output hash if the receipt\n   includes a toolOutputHash field (Check 12), instruction provenance if\n   the receipt includes a trustedSources field (Check 13), parent scope\n   containment if the receipt includes a parentReceiptId field (Check\n   14), and authority state drift if the receipt includes an\n   authorityStateCommitment field (Check 15).  Checks 14 and 15 run in\n   offline mode because parent receipts and authority state can be\n   supplied locally and do not require network access.\n\n   A verifier result *MUST* include the following two fields regardless\n   of mode:\n\n   verificationMode:  The string &quot;offline&quot; when the verifier is\n      operating in offline mode, or the string &quot;online&quot; when operating\n      in online mode.\n\n   revocationChecked:  The boolean false when the verifier is operating\n      in offline mode (the revocation registry was not consulted), or\n      the boolean true when operating in online mode.\n\n   If the receipt has revocationRequired set to true and the verifier is\n   operating in offline mode, the verifier *MUST* return DENY with\n   blockedReason set to REVOCATION_CHECK_REQUIRED before running any\n   other checks.  The revocationRequired field gives receipt issuers the\n   ability to prevent offline verification of high-stakes delegations\n   regardless of the caller&#x27;s mode preference.\n\n   Implementations supporting offline mode *MUST* document the following\n   security tradeoff to their users: a receipt that has been revoked\n   after signing may still verify as PERMIT in offline mode because the\n   verifier has no way to know about the revocation without querying the\n   revocation registry.  Receipt issuers *SHOULD* set revocationRequired\n   to true for high-stakes delegations where post-issuance revocation\n   must be detected immediately.\n\n<span>Nelson                  Expires 15 December 2026               [Page 29]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n7.  Model State Attestation\n\n7.1.  Commitment Binding\n\n   A valid Delegation Receipt proves that a User authorized an Agent to\n   act within defined scope.  It does not prove that the model executing\n   the receipt is the model the User authorized.  An Operator could\n   silently substitute a fine-tuned model variant after the receipt is\n   signed; all verification checks would pass because the receipt itself\n   is genuine.\n\n   Model State Attestation closes this gap with a two-phase\n   cryptographic protocol that binds the receipt to a measurement of\n   model state at both delegation time and execution time.\n\n   *Phase 1 -- Commitment (at delegation time):*\n\n   The Operator commits to the exact model state that will execute.  The\n   commitment is a SHA-256 measurement of five components concatenated\n   in canonical order:\n\n   modelMeasurement = SHA-256(\n     normalize(modelId)       ||\n     normalize(modelVersion)  ||\n     systemPromptHash         ||\n     runtimeConfigHash        ||\n     receiptHash\n   )\n\n   Including receiptHash as the fifth component binds the model\n   measurement to the specific delegation.  The same model with the same\n   system prompt but a different receipt produces a different\n   measurement.  A commitment *MUST NOT* be reused across delegations.\n\n   A verifier implementing commitment-reuse detection *MUST* maintain a\n   persistent log of (modelCommitment, receiptId) pairs seen across all\n   validated receipts.  When validating a receipt that contains a\n   modelCommitment field, the verifier *MUST* check whether that\n   commitment value already appears in the log under a different\n   receiptId.  If a duplicate is found, the verifier *MUST* return DENY\n   with reason &quot;COMMITMENT_REUSE_VIOLATION&quot;.  Implementors *SHOULD* use\n   a cryptographic set structure (e.g., a Bloom filter backed by a\n   persistent store) to support efficient membership queries at scale.\n\n<span>Nelson                  Expires 15 December 2026               [Page 30]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   The commitment is signed by the Operator&#x27;s ECDSA P-256 key and\n   attested by the TEE runtime, producing a sealed artifact that\n   includes modelId, modelVersion, systemPromptHash, runtimeConfigHash,\n   committedAt, the Operator&#x27;s signature, and a TEE attestation quote.\n   See Section 11.4 for the compliance profiles that govern when TEE\n   attestation is required versus optional.\n\n   *Phase 2 -- Verification (at execution time):*\n\n   Immediately before the agent function executes, the current model\n   state is measured using the same five-component computation.  The\n   resulting measurement *MUST* equal the committed measurement.  If the\n   two measurements differ for any reason, execution *MUST* be blocked\n   with a MALICIOUS_MODEL_SUBSTITUTION denial identifying exactly which\n   components changed.\n\n   With Model State Attestation in place, the complete verifiable chain\n   of accountability is:\n\n      +---------------------------+\n      |    Delegation Receipt     |  &lt;-- User signed\n      +---------------------------+\n                 |\n      +---------------------------+\n      |  Model State Commitment   |  &lt;-- Hardware measured\n      +---------------------------+\n                 |\n      +---------------------------+\n      |  Execution Attestation    |  &lt;-- TEE verified\n      +---------------------------+\n                 |\n      +---------------------------+\n      |     Action Log Entry      |  &lt;-- Chain linked\n      +---------------------------+\n                 |\n      +---------------------------+\n      |    Data Flow Receipt      |  &lt;-- Output policy\n      +---------------------------+\n\n   An auditor presented with a chain proof can verify each layer\n   independently and confirm that a logged action was taken by the model\n   the User authorized, acting within the defined scope, under\n   conditions unaltered since authorization was granted.\n\n<span>Nelson                  Expires 15 December 2026               [Page 31]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n7.2.  Provider Update Handling\n\n   Hosted model providers may silently update the underlying model\n   behind a versioned alias without Operator action.  Treating this\n   identically to a deliberate substitution attack is too blunt: it\n   would block legitimate executions whenever a provider retires a model\n   version, forcing operators to recommit on every provider maintenance\n   cycle.\n\n   Model State Attestation distinguishes two categories of measurement\n   mismatch:\n\n   MaliciousSubstitution:\n      The Operator explicitly changed the model identifier, system\n      prompt, or runtime configuration after the commitment was signed.\n      This *MUST* always be a hard block.  Indicators are any of:\n\n      *  currentModelId != committedModelId, OR\n\n      *  currentSystemPromptHash != committedSystemPromptHash, OR\n\n      *  currentRuntimeConfigHash != committedRuntimeConfigHash\n\n   ProviderUpdate:\n      The model version changed, but the Operator&#x27;s configured modelId\n      is unchanged.  The provider updated the model behind a stable\n      alias.  Indicators are all of:\n\n      *  currentModelId == committedModelId, AND\n\n      *  currentModelVersion != committedModelVersion\n\n   Operators declare how provider updates are handled at construction\n   time via the providerUpdatePolicy field:\n\n   The providerUpdatePolicy is an operator-side configuration parameter\n   and does not appear as a field in the Delegation Receipt JSON object.\n   It is conveyed through the operator&#x27;s trust anchor configuration and\n   is not included in the canonical receipt payload or the JSON Schema\n   defined in Appendix A.\n\n   &quot;block&quot;:\n      Treat provider updates identically to MaliciousSubstitution.  Any\n      version change *MUST* block execution immediately. *RECOMMENDED*\n      when strict model pinning is required.\n\n<span>Nelson                  Expires 15 December 2026               [Page 32]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   &quot;reauthorize&quot; (default):\n      When a provider update is detected, return { allowed: false,\n      reason: &quot;PROVIDER_UPDATE_DETECTED&quot;, requiresReauthorization: true\n      } and block all subsequent executions under this attestation\n      instance until the User explicitly acknowledges the change.\n\n   The &quot;reauthorize&quot; policy preserves a recovery path.  The provider\n   update is flagged and the system halts, but the cause is identified\n   as a non-malicious provider action.  A human *MUST* explicitly invoke\n   reauthorize() with userApproval: true before execution resumes.  This\n   is an explicit human-in-the-loop checkpoint; the system *MUST NOT*\n   silently resume execution after a provider update.\n\n   Operators *SHOULD* populate the providerUpdatePolicyId field of\n   issued receipts with the identifier of the applicable policy entry so\n   that auditors can determine the policy in effect from the receipt\n   record alone.\n\n7.3.  Malicious Substitution Detection\n\n   The per-component comparison in the Phase 2 verification identifies\n   exactly which aspects of model state changed: model identity,\n   version, system prompt, or runtime configuration.  This enables\n   forensic analysis of how an unauthorized execution occurred.\n\n   The full SHA-256 measurement comparison is performed in addition to\n   per-component comparison.  This is redundant given the component\n   checks but provides a cryptographic guarantee: even if the component\n   comparison logic contains a bug, the measurement comparison will\n   detect any state change.\n\n   Model State Attestation proves:\n\n   1.  Model identity at commitment time.  The Operator committed to a\n       specific (modelId, modelVersion, systemPromptHash,\n       runtimeConfigHash) tuple before execution began.  The ECDSA\n       signature and TEE attestation prove this commitment was made\n       inside a trusted environment and has not been altered.\n\n   2.  Model state at execution time.  The TEE verification attestation\n       proves the measurement was recomputed inside the enclave\n       immediately before execution, and that the recomputed measurement\n       matched the committed measurement.\n\n   3.  Delegation binding.  The receiptHash component ensures the\n       commitment is irrevocably bound to the specific delegation.  A\n       commitment made under receipt A *MUST NOT* be presented as valid\n       under receipt B.\n\n<span>Nelson                  Expires 15 December 2026               [Page 33]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Model State Attestation does not prove that the committed model is\n   safe, aligned, or correctly configured.  It does not inspect the\n   content of the system prompt.  In simulation mode (the default for\n   testing), attestations are signed with a software ECDSA key rather\n   than produced by real TEE hardware.  Production deployments *SHOULD*\n   use Intel SGX, Intel TDX, or ARM TrustZone attestation.\n\n8.  Scope Discovery Protocol\n\n   The Scope Discovery Protocol addresses the upstream authorization\n   gap: a User cannot correctly define agent scope before observing\n   agent behavior.  Asking users to define scope upfront produces one of\n   two failure modes:\n\n   Over-authorization:\n      The User grants broad permissions to avoid blocking the agent.\n      The agent is then authorized to perform operations the User never\n      intended to permit.\n\n   Under-authorization:\n      The User grants narrow permissions and the agent fails mid-task,\n      requiring repeated round-trips to expand scope.  Users respond by\n      granting progressively wider permissions under frustration.\n\n   Neither outcome produces a receipt that reflects the User&#x27;s actual\n   intent.  The scope field becomes a legal fiction rather than a\n   genuine authorization boundary.\n\n   The Scope Discovery Protocol inverts the authorization sequence.\n   Instead of asking Users to define scope before running the agent, it\n   runs the agent first in a sandboxed simulation and uses the observed\n   behavior to derive the scope definition.\n\n   The protocol proceeds in four stages:\n\n   Stage 1 -- Sandboxed observation:\n      The agent function is wrapped with transparent proxies for every\n      supported resource type (email, calendar, payment, files,\n      database, network).  Every operation call is intercepted,\n      timestamped, and appended to an observation log.  Mock data\n      matching the expected structure is returned so the agent proceeds\n      normally.  No real I/O occurs; no side effects are produced.\n\n   Stage 2 -- Scope generation:\n      The observation log is analyzed to produce:\n\n<span>Nelson                  Expires 15 December 2026               [Page 34]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      a.  A draftScope with an allowedActions list (de-duplicated\n          observed operations) and conservative deniedActions defaults\n          for delete, execute, and payment operations.\n\n      b.  A plainSummary in non-technical language suitable for end-user\n          review.\n\n      c.  riskFlags for: delete operations, execute operations, payment\n          operations, external send and write operations, and any\n          operation called more than 50 times in the observation\n          session.\n\n      d.  suggestedDenials for dangerous operations the agent did not\n          use, with per-entry explanations.\n\n   Stage 3 -- Plain language review:\n      The Operator or User reviews the plain summary, risk flags, and\n      suggested denials before approving.  An approve() call accepts\n      &quot;remove&quot; and &quot;add&quot; arrays for surgical modification of the draft\n      scope.  This is the moment of genuine human authorization,\n      grounded in observed behavior rather than speculation.\n\n   Stage 4 -- Cryptographic commitment:\n      The approved scope is embedded into a Delegation Receipt using the\n      standard signing procedure (Section 4.3).  The receipt includes a\n      scopeSchema field with the structured allowedActions and\n      deniedActions lists, and a discoveryMetadata field recording\n      observation count, any timeout abort, and the risk flags at\n      generation time.\n\n   The receipt produced by Scope Discovery is structurally identical to\n   one produced by direct issuance.  It carries all standard fields and\n   *MUST* be verifiable by the standard Verify procedure (Section 6.1)\n   without modification.\n\n   The critical property of observation-based scope generation is\n   grounding: every entry in allowedActions corresponds to an operation\n   the agent actually performed during a representative run.  This is a\n   structural record of what the agent did, not a user estimate of what\n   it might need.\n\n   Grounding has three practical consequences:\n\n   Precision:\n      The allowedActions list contains exactly the resource/ operation\n      pairs observed.  An agent that reads email but never writes it\n      receives a receipt authorizing read on email, not write.\n\n<span>Nelson                  Expires 15 December 2026               [Page 35]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Defensibility:\n      The discoveryMetadata.observationCount and riskFlags fields\n      provide evidence that scope was derived from observation.  The\n      audit trail runs from observation to draft to approval to receipt.\n\n   Ratcheting:\n      Each time the agent&#x27;s behavior changes, a new observation session\n      produces a new draft.  If the agent begins calling a new operation\n      class in a new version, that operation surfaces in the risk flags\n      before any receipt is issued for the updated agent.  Drift in\n      agent behavior is detectable before it is authorized.\n\n   For operators who trust their agent&#x27;s observed behavior and do not\n   require manual review, a guided mode provides a single-call end-to-\n   end flow that runs observe, generate, approve, and finalize\n   automatically.  The returned riskFlags allow operators to inspect\n   what was flagged even when they choose not to gate on it.\n\n9.  Session State and Adaptive Authorization\n\n   A Delegation Receipt is a static artifact.  It answers one question\n   at one moment in time: did this User authorize this Agent to perform\n   this class of actions?  It cannot answer whether a specific action is\n   safe to take right now, given everything that has happened in this\n   session.\n\n   Static receipts have three blind spots for long-running sessions:\n\n   The drift problem:\n      A receipt issued for &quot;manage my calendar&quot; remains technically\n      valid after the agent has sent 400 emails and received a prompt\n      injection payload.  The receipt scope string has not changed and\n      cannot reflect runtime events.\n\n   The escalation problem:\n      A receipt with a generous scope becomes progressively more\n      dangerous as the agent accumulates sensitive data and accesses\n      external services.  Risk is not static -- it depends on what came\n      before.\n\n   The injection problem:\n      A receipt cannot detect that the agent&#x27;s input pipeline has been\n      compromised mid-session by a prompt injection attack embedded in\n      retrieved content.  The receipt was signed before the session\n      began; it has no knowledge of runtime inputs.\n\n<span>Nelson                  Expires 15 December 2026               [Page 36]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   SessionState closes these gaps by maintaining a live, stateful view\n   of each session that evolves with every action.  It tracks a\n   trustScore for each session, initialized at 100 and bounded between 0\n   and 100.\n\n   Three formally distinct quantities govern session risk evaluation.\n   Implementations *MUST* maintain all three:\n\n   trustScore:\n      A Lyapunov-style bounded recoverable budget.  Initialized at 100,\n      bounded in [0, 100].  Decremented by anomaly.severity *\n      trustDecayRate on each anomaly event; incremented by\n      trustRecoveryRate on each clean action.  The recovery property is\n      definitional: trustScore is not monotone and is not a load\n      functional.  It models a resilience budget that is restored by\n      sustained clean behavior.\n\n   cumulativeAnomalyMass:\n      A monotone, non-decreasing quantity tracking the total structural\n      burden accumulated over the session lifetime.\n      cumulativeAnomalyMass has two components:\n\n      Active (anomaly-driven):\n         Incremented by anomaly.severity on each detected anomaly event.\n         Records the discrete burden contributed by individual anomaly\n         detections.\n\n      Passive (time-driven):\n         Incremented by passivePressureRate * elapsedSeconds on each\n         call to the session risk evaluator, where elapsedSeconds is the\n         time elapsed since the previous evaluation.  The default\n         passivePressureRate is 0.001 per second, yielding 3.6 units of\n         passive burden per session- hour and 36 units per ten session-\n         hours, even with zero detected anomalies.\n\n      cumulativeAnomalyMass is never decremented.  It provides a\n      permanent session-level record of total anomaly exposure that is\n      not erased by subsequent clean behavior and is available for post-\n      session forensic analysis independently of the final trustScore\n      value.\n\n   tauSession:\n      A strictly decreasing capacity gate derived from\n      cumulativeAnomalyMass:\n\n        tauSession = sessionCapacity - cumulativeAnomalyMass\n\n<span>Nelson                  Expires 15 December 2026               [Page 37]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      Initialized to sessionCapacity (default: 100).  Never recovered.\n      When tauSession &lt;= tauMin (default: 10), the gate condition fails\n      and execution *MUST NOT* proceed regardless of trustScore.  The\n      gate condition is checked before all trustScore-derived checks in\n      dynamic_admissible:\n\n        if tauSession &lt;= tauMin: DENY TAU_SESSION_EXHAUSTED\n\n      tauSession provides a hard lifetime cap on cumulative anomaly\n      exposure that is not resettable by reauthorization.  A new session\n      established under a new Delegation Receipt begins with tauSession\n      initialized to sessionCapacity (default: 100).  Implementations\n      *MUST NOT* carry tauSession state across session boundaries; each\n      new receipt-bounded session receives a fresh tauSession value.\n      Once a session&#x27;s anomaly capacity is exhausted, the session is\n      permanently closed to further execution.\n\n      A new session established under a new Delegation Receipt begins\n      with tauSession initialized to sessionCapacity (default: 100).\n      Implementations *MUST NOT* carry tauSession state across session\n      boundaries; each new receipt-bounded session receives a fresh\n      tauSession value.\n\n   In addition to the anomaly-capacity gate, sessions *MUST* enforce an\n   absolute wall-clock lifetime cap.  The maximum session lifetime is 25\n   hours from session start.  When elapsed &gt;= 25h, the session *MUST* be\n   terminated and reauthorization *MUST* be required regardless of\n   trustScore or tauSession.  This bound prevents indefinitely-running\n   sessions that accumulate unbounded passive anomaly pressure from\n   gradually transitioning to SUSPENDED while remaining nominally valid.\n\n   Implementations *MUST* enforce this limit via the maxLifetimeSeconds\n   configuration parameter.  The default value is 90000 seconds (25\n   hours).  Implementations *MUST* document the configured value and\n   *MUST NOT* set maxLifetimeSeconds to zero or a negative value.  When\n   elapsed &gt;= maxLifetimeSeconds, the verifier *MUST* return\n   SESSION_LIFETIME_EXCEEDED and *MUST NOT* permit further execution\n   under the current session.\n\n   The three configurable risk quantities have the following defaults.\n   Implementations *MUST* document the values in use and *SHOULD* expose\n   them as configuration parameters:\n\nblockThreshold     : 70   (implementation-defined; MUST be &gt; approvalThreshold)\napprovalThreshold  : 40   (implementation-defined; MUST be &gt; 0)\ntrustDecayRate     : 1.0  (implementation-defined; MUST be &gt; 0)\ntrustRecoveryRate  : 0.01 (implementation-defined; MUST be &gt;= 0)\n\n<span>Nelson                  Expires 15 December 2026               [Page 38]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   The following table provides the single authoritative reference for\n   all session state threshold values.  All threshold comparisons in the\n   pseudocode and prose of this section use these values:\n\n   +===================+============+==================================+\n   | Parameter         | Default    | Condition / Meaning              |\n   |                   | Value      |                                  |\n   +===================+============+==================================+\n   | blockThreshold    | 70         | Risk score at or above this      |\n   |                   |            | value blocks the action          |\n   +-------------------+------------+----------------------------------+\n   | approvalThreshold | 40         | Risk score at or above this      |\n   |                   |            | value requires explicit          |\n   |                   |            | approval                         |\n   +-------------------+------------+----------------------------------+\n   | ACTIVE status     | trustScore | Session is in normal             |\n   | lower bound       | &gt;= 30      | operation                        |\n   +-------------------+------------+----------------------------------+\n   | DEGRADED status   | 10 &lt;=      | Risk multiplier applied;         |\n   | range             | trustScore | heightened scrutiny              |\n   |                   | &lt; 30       |                                  |\n   +-------------------+------------+----------------------------------+\n   | SUSPENDED status  | trustScore | All actions blocked              |\n   | threshold         | &lt; 10       | regardless of risk score         |\n   +-------------------+------------+----------------------------------+\n   | tauMin            | 10         | tauSession at or below this      |\n   |                   |            | value blocks all actions         |\n   +-------------------+------------+----------------------------------+\n   | sessionCapacity   | 100        | Initial value of tauSession      |\n   +-------------------+------------+----------------------------------+\n   | trustDecayRate    | 1.0        | Multiplier applied to            |\n   |                   |            | anomaly severity when            |\n   |                   |            | decrementing trustScore          |\n   +-------------------+------------+----------------------------------+\n   | trustRecoveryRate | 0.01       | Amount added to trustScore       |\n   |                   |            | per clean action                 |\n   +-------------------+------------+----------------------------------+\n\n                  Table 2: Session State Threshold Values\n\n   Trust decays when anomalies are detected:\n\n   trustScore -= anomaly.severity * trustDecayRate\n\n   Anomaly severity weights are defined on a [0, 1] float scale (see\n   Table below).  Representative default values are:\n\n<span>Nelson                  Expires 15 December 2026               [Page 39]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Prompt injection detected        : severity weight 0.8\n   Sensitive data in external dest. : severity weight 0.6\n   Scope boundary probe             : severity weight 0.4\n   Timing anomaly                   : severity weight 0.2\n\n   The following table provides example anomaly severity weights for\n   common event types.  These values are illustrative defaults;\n   implementations *MAY* tune them to operational risk tolerance:\n\n   +===========================+=================+\n   | Anomaly Type              | Severity Weight |\n   +===========================+=================+\n   | Prompt injection detected | 0.8             |\n   +---------------------------+-----------------+\n   | Repeated denial pattern   | 0.6             |\n   +---------------------------+-----------------+\n   | Scope boundary probe      | 0.4             |\n   +---------------------------+-----------------+\n   | Timing anomaly            | 0.2             |\n   +---------------------------+-----------------+\n\n                       Table 3\n\n   Severity weights use a [0.0, 1.0] scale.  Implementations *MAY* tune\n   these weights to operational risk tolerance.  All weights *MUST* be\n   in the range [0.0, 1.0]; a weight of 1.0 represents the maximum\n   single-event anomaly severity.\n\n   These weights are illustrative defaults on a [0, 1] scale.\n   Implementations MAY tune severity weights to operational risk\n   tolerance.  All severity weights MUST be in the range [0, 1].  The\n   pseudocode in this section uses these weights directly; a weight of\n   1.0 represents the maximum possible anomaly severity for a single\n   event.\n\n   Trust recovers slightly on each clean action:\n\n   trustScore += trustRecoveryRate  (default: 0.01)\n\n   Session status is driven by trust score thresholds:\n\n   trustScore &gt;= 30 : ACTIVE    -- normal operation\n   trustScore &lt;  30 : DEGRADED  -- risk scores amplified\n   trustScore &lt;  10 : SUSPENDED -- all actions blocked\n\n   The DEGRADED state does not block operations directly.  Instead, it\n   causes the risk scorer to apply a multiplier to every score via Check\n   5 (finalScore = rawScore * (1 + (100 - trust) / 100)), making\n\n<span>Nelson                  Expires 15 December 2026               [Page 40]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   previously marginal decisions tip into REQUIRE_APPROVAL or BLOCK\n   territory.  This multiplier is applied independently of sensitivity-\n   level threshold adjustments: sensitivity adjustments modify the\n   _thresholds_ against which finalScore is compared, while the DEGRADED\n   multiplier modifies finalScore itself.  Both transformations are\n   applied and the result compared against the adjusted thresholds.\n\n   The following pseudocode defines the evaluateSessionRisk function\n   referenced in Check 9 of the verification algorithm (Section 6.4):\n\n<span>Nelson                  Expires 15 December 2026               [Page 41]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   FUNCTION evaluateSessionRisk(session, event):\n\n     // Gate 1: tauSession hard cap\n     IF session.tauSession &lt;= session.tauMin THEN\n       RETURN { decision: &quot;BLOCK&quot;, reason: &quot;TAU_SESSION_EXHAUSTED&quot; }\n\n     // Update cumulative anomaly mass (always include passive pressure)\n     elapsed = now() - session.lastEvaluatedAt\n     session.cumulativeAnomalyMass +=\n         session.passivePressureRate * elapsed\n     session.lastEvaluatedAt = now()\n\n     // Update trust score and discrete anomaly mass\n     IF event.type == &quot;ANOMALY&quot; THEN\n       session.trustScore -= event.severity * trustDecayRate\n       session.cumulativeAnomalyMass += event.severity\n     ELSE  // clean action\n       session.trustScore = MIN(100,\n         session.trustScore + trustRecoveryRate)\n\n     // Recompute tauSession from total cumulative mass\n     session.tauSession = session.sessionCapacity\n                          - session.cumulativeAnomalyMass\n\n     // Apply DEGRADED multiplier if trust is low\n     rawScore = computeRiskScore(event, session)\n     IF session.trustScore &lt; 30 THEN\n       finalScore = rawScore * (1 + (100 - session.trustScore) / 100)\n     ELSE\n       finalScore = rawScore\n\n     // Gate 2: trust thresholds\n     IF session.trustScore &lt; 10 OR session.status == &quot;SUSPENDED&quot; THEN\n       RETURN { decision: &quot;BLOCK&quot;,\n                reason: &quot;SESSION_RISK_THRESHOLD_EXCEEDED&quot; }\n     IF finalScore &gt;= blockThreshold THEN\n       RETURN { decision: &quot;BLOCK&quot;,\n                reason: &quot;SESSION_RISK_THRESHOLD_EXCEEDED&quot; }\n     IF finalScore &gt;= approvalThreshold THEN\n       RETURN { decision: &quot;REQUIRE_APPROVAL&quot;,\n                reasons: getRiskReasons(finalScore) }\n\n     RETURN { decision: &quot;ALLOW&quot; }\n\n   END FUNCTION\n\n   Before each action, every payload is classified into one of four\n   sensitivity levels:\n\n<span>Nelson                  Expires 15 December 2026               [Page 42]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   RESTRICTED   : SSN, credit card, medical identifiers, API keys\n   CONFIDENTIAL : Internal email addresses, system prompts,\n                  database schemas, config files\n   INTERNAL     : Company domain references, internal project\n                  names, user IDs\n   PUBLIC       : Everything else\n\n   Each level modifies the block and approval thresholds:\n\n   RESTRICTED   : Block threshold drops to at most 60\n   CONFIDENTIAL : Approval threshold drops to at most 40\n   INTERNAL     : No change\n   PUBLIC       : All thresholds relax by +10\n\n   The complete decision engine evaluates five risk checks and maps the\n   final score to one of three outcomes:\n\n   Check 1 -- Sensitive data scan:\n     SSN pattern              +35\n     Credit card pattern      +35\n     API key pattern          +30\n     High-entropy string      +20\n     Prompt injection pattern +40\n     Password keyword         +25\n\n   Check 2 -- External exfiltration:\n     External domain + sensitive data  +30\n     First-time external domain        +15\n\n   Check 3 -- Frequency anomaly:\n     Same action type &gt;10x in 60s  +25\n     &gt;50 total actions in session  +15\n\n   Check 4 -- Scope edge usage:\n     New permission class   +10\n     At scope boundary      +10\n\n   Check 5 -- Trust multiplier:\n     finalScore = rawScore * (1 + (100 - trust) / 100)\n\n   if session.status == SUSPENDED       --&gt; BLOCK\n   if finalScore &gt;= blockThreshold      --&gt; BLOCK\n   if finalScore &gt;= approvalThreshold   --&gt; REQUIRE_APPROVAL\n   else                                 --&gt; ALLOW\n\n<span>Nelson                  Expires 15 December 2026               [Page 43]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   The checks are deterministic and ordered.  The same action, payload,\n   and session state always produce the same score.  Every BLOCK or\n   REQUIRE_APPROVAL decision *SHOULD* be accompanied by a structured\n   reason object identifying which specific checks contributed to the\n   score.\n\n   SessionState *MUST* be integrated with the PreExecutionVerifier as a\n   final check, running after all static receipt checks pass (see\n   Section 6.1).  An action that passes all cryptographic checks but\n   produces a BLOCK outcome from session risk evaluation *MUST NOT*\n   execute.\n\n   The architectural insight is that authorization is not binary.  A\n   valid receipt is a necessary condition for execution, not a\n   sufficient one.  Real-world safety requires a live, stateful layer\n   that observes behavior and adapts its decisions based on the full\n   session context.\n\n   The complete executability predicate is formally:\n\n      executable(a, R, session, t) =\n        Verify(R, a) AND dynamic_admissible(session, a, t)\n\n   where Verify(R, a) establishes static receipt admissibility (the\n   complete set of pre(R) and admissible(a, R) checks defined in\n   Section 11) and dynamic_admissible(session, a, t) establishes runtime\n   session admissibility. dynamic_admissible evaluates checks in the\n   following order: (1) tauSession gate -- if session.tauSession &lt;=\n   tauMin, DENY TAU_SESSION_EXHAUSTED immediately; (2) trust score\n   threshold check; (3) sensitivity classification; (4) risk score\n   evaluation at time t.  Both the tauSession gate and the trustScore\n   threshold must pass independently.  Execution requires both\n   predicates to hold simultaneously.  A receipt that passes Verify is a\n   necessary but not sufficient condition for execution.\n\n10.  Multi-Agent Delegation Chains\n\n   When a delegated Agent (the Orchestrator) needs to hand off a subtask\n   to another Agent (the Sub-Agent), the chain of authority *MUST*\n   remain auditable and bounded.  DRP enforces the narrowing-only\n   invariant: a Sub-Agent receipt *MUST* have scope that is a strict\n   subset of the Orchestrator&#x27;s receipt.  The Orchestrator *MUST NOT*\n   grant a Sub-Agent any action that was not in its own scope.  Scope\n   can only narrow, never widen.\n\n<span>Nelson                  Expires 15 December 2026               [Page 44]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n10.1.  Parent-Child Receipt Relationship\n\n   A Sub-Agent receipt is distinguished from a root receipt by two\n   additional fields in its payload:\n\n   parentReceiptId:\n      The SHA-256 hash of the Orchestrator&#x27;s Delegation Receipt that\n      authorized the Orchestrator to create this sub-delegation.  When\n      this field is present the receipt is treated as a sub-receipt and\n      subjected to the parent scope containment check (Check 14).  When\n      absent the receipt is treated as a root receipt and requires a\n      User signature.\n\n   orchestratorSignature:\n      An ECDSA P-256 signature by the Orchestrator&#x27;s key over the\n      binding string &quot;orchestrator-delegation:&quot; || parentReceiptId ||\n      &quot;:&quot; || receiptId, where receiptId is the SHA-256 hash of the sub-\n      receipt body plus its main signature.  This field is separate from\n      the main signature field and is not included in the signed body.\n      It cryptographically links the Orchestrator&#x27;s key to the specific\n      parent-child pair.  The User&#x27;s signature is not required for sub-\n      receipts because the User already authorized the Orchestrator to\n      act and the Orchestrator is creating a narrower delegation.\n\n10.2.  Scope Attenuation (Narrowing-Only Rule)\n\n   Each delegation step *MUST* produce a strict proper subset of the\n   parent&#x27;s authorized scope.  The subset relation is defined under\n   wildcard semantics: an action pattern P1 covers action pattern P2 if\n   every concrete action matched by P2 is also matched by P1.\n   Specifically:\n\n   1.  Every action the child Agent is permitted *MUST* be covered by\n       the parent&#x27;s allowedActions list under wildcard semantics.  An\n       Agent *MUST NOT* grant permissions it was not itself given.\n       Formally: for every child allowed action C, there *MUST* exist a\n       parent allowed action P such that every concrete action matched\n       by C is also matched by P.\n\n   2.  The child&#x27;s allowedActions list *MUST* be a strict proper subset\n       of the parent&#x27;s under wildcard semantics: the set of concrete\n       actions covered by the child *MUST* be a proper subset of the set\n       covered by the parent.  A child that covers exactly the same set\n       of concrete actions as the parent *MUST* be rejected, even if the\n       two lists are expressed differently (e.g., via differing wildcard\n       patterns that expand to the same set).  Implementations *MUST*\n       expand wildcard patterns to their concrete action sets before\n       performing the strict proper subset comparison; a child scope\n\n<span>Nelson                  Expires 15 December 2026               [Page 45]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n       expressed as &quot;read:*&quot; and a parent scope expressed as an explicit\n       enumeration that resolves to the same concrete actions are equal\n       under this rule and *MUST* be rejected.\n\n   3.  Every action explicitly denied by the parent in deniedActions\n       *MUST* be carried forward to the child.  A child *MAY* add new\n       denied actions but *MUST NOT* remove any denial that the parent\n       established.  A child denial pattern covers a parent denial when\n       the child&#x27;s operation pattern matches the parent&#x27;s operation and\n       the child&#x27;s resource pattern matches the parent&#x27;s resource under\n       wildcard semantics.\n\n   The receipt chain *MUST* track delegation depth.  The root receipt,\n   signed directly by the User, is at depth 0.  Each delegation\n   increments depth by 1.  When a delegation would produce a receipt at\n   depth &gt;= maxDepth, the implementation *MUST* raise a MaxDepthExceeded\n   error before creating the receipt.  The *RECOMMENDED* default\n   maxDepth is 3, meaning at most three levels of agent-to-agent hand-\n   off before the chain *MUST* be re-anchored at the User level.  This\n   bound prevents unbounded delegation trees where authority leaks\n   through an unconstrained number of intermediaries.\n\n   Implementations that require delegation chains deeper than 3 *SHOULD*\n   do so only in deployment architectures where each orchestrator layer\n   is independently audited.  Chains deeper than 3 increase verification\n   cost linearly: each additional hop requires one additional parent\n   receipt retrieval, signature verification, and scope containment\n   check.  They also expand the attack surface for\n   PARENT_SCOPE_VIOLATION exploits, since a compromised intermediary at\n   any depth can attempt to widen scope or drop a denial that a\n   shallower intermediary established.  Before increasing maxDepth,\n   implementors *SHOULD* evaluate whether the additional orchestrator\n   layers provide genuine isolation or merely add verification overhead\n   without a corresponding security benefit.\n\n   The root receipt *MUST* carry a valid ECDSA P-256 signature from the\n   User&#x27;s key.  If the root could be generated by an Agent or Operator\n   without User involvement, the entire chain could be bootstrapped\n   unilaterally, defeating the protocol.  Any downstream Agent that\n   wants to prove its authority can walk the chain to the root and\n   demonstrate a continuous path of scope-narrowing receipts.\n\n10.3.  Verification Chain for Sub-Receipts\n\n   When a verifier encounters a receipt whose parentReceiptId field is\n   present, it *MUST* perform Check 14 in addition to Checks 1-13.\n   Check 14 is defined as follows:\n\n<span>Nelson                  Expires 15 December 2026               [Page 46]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   1.  Retrieve the parent receipt from the delegation log using\n       parentReceiptId.  If not found, return PARENT_SCOPE_VIOLATION.\n\n   2.  Count the chain depth by following parentReceiptId links from the\n       current receipt to the root.  If the depth exceeds maxChainDepth,\n       return PARENT_SCOPE_VIOLATION.\n\n   3.  Verify the parent receipt&#x27;s main ECDSA signature.  If invalid,\n       return PARENT_SCOPE_VIOLATION.\n\n   4.  If orchestratorSignature is present, verify it against the\n       binding string &quot;orchestrator-delegation:&quot; || parentReceiptId ||\n       &quot;:&quot; || receiptId using the *parent receipt&#x27;s* publicKey.  If\n       invalid, return PARENT_SCOPE_VIOLATION.\n\n   5.  Confirm that the sub-receipt&#x27;s time window is contained within\n       the parent receipt&#x27;s time window (i.e., child.start &gt;=\n       parent.start and child.end &lt;= parent.end).  If not, return\n       PARENT_SCOPE_VIOLATION.\n\n   6.  Confirm that every action in the sub-receipt&#x27;s allowedActions is\n       also permitted by the parent receipt&#x27;s scope.  If any child\n       allowed action is not covered by the parent, return\n       PARENT_SCOPE_VIOLATION.\n\n   7.  Confirm that every action in the parent receipt&#x27;s deniedActions\n       is also present in the sub-receipt&#x27;s deniedActions.  A child deny\n       rule covers a parent deny rule when the child&#x27;s operation pattern\n       matches the parent&#x27;s operation and the child&#x27;s resource pattern\n       matches the parent&#x27;s resource.  If any parent denied action is\n       missing from the child, return PARENT_SCOPE_VIOLATION.\n\n   The verifier MUST NOT re-run the full verification algorithm on\n   ancestor receipts during Check 14 (i.e., it does not recurse into\n   parentReceiptId chains beyond the immediate parent).  Depth-counting,\n   by contrast, MUST traverse the chain iteratively to enforce\n   maxChainDepth, reading only the receiptId and parentReceiptId fields\n   of each ancestor.  Each receipt in the chain is fully verified only\n   when it is itself presented for execution.\n\n10.4.  Cascade Revocation\n\n   Revocation of a receipt in a multi-agent chain *MAY* or may not\n   cascade to child receipts, depending on the revocation call.\n\n   When cascadeToChildren is true:\n      A breadth-first traversal of all descendants *MUST* be performed\n      and each descendant marked revoked.  The cascade *SHOULD* be\n\n<span>Nelson                  Expires 15 December 2026               [Page 47]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      anchored to the append-only log before agents are notified, to\n      prevent a race condition where a child Agent completes an action\n      between the parent revocation and cascade propagation.\n\n   When cascadeToChildren is false:\n      Only the named receipt is invalidated.  Its children remain valid\n      until explicitly revoked.  This allows surgical removal of one\n      Agent from a chain without disrupting sibling branches.\n\n   Cascade revocation entries *MUST* be signed by the User&#x27;s private key\n   and anchored to the append-only log with the same requirements as the\n   original revocation procedure (see Section 11.1).\n\n10.5.  Revocation Log\n\n   Revocation entries *MUST* be published to the same append-only log as\n   Delegation Receipts.  A revocation record is a first-class log entry\n   with the same chain-linking and TSA timestamping requirements as a\n   Delegation Receipt.  Publishing revocation to the same log ensures\n   that any party with read access to the delegation log can\n   independently verify revocation status without relying on a separate\n   revocation infrastructure.\n\n   Implementations *MAY* additionally operate an operator-managed\n   Certificate Revocation List (CRL) for low-latency revocation\n   propagation in environments where log polling latency is\n   unacceptable.  When both mechanisms are in use, the append-only log\n   entry is authoritative: the CRL *MUST* be a subset of the log&#x27;s\n   revocation state and *MUST NOT* revoke receipts not present in the\n   log.  Log-based revocation is *RECOMMENDED* for deployments requiring\n   cryptographic non-repudiation of the revocation act itself.  CRL-\n   based revocation is appropriate as a supplementary fast-path when\n   polling latency exceeds operational requirements.\n\n   Implementations that poll the revocation log *SHOULD* use the\n   following polling intervals:\n\n   *  *RECOMMENDED* polling interval for real-time deployments: 60\n      seconds.\n\n   *  *RECOMMENDED* polling interval for batch deployments: 300 seconds.\n\n   Implementations *MUST* document the configured polling interval and\n   *MUST NOT* set it to zero or a negative value.\n\n<span>Nelson                  Expires 15 December 2026               [Page 48]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n10.6.  Revocation Authority and Propagation\n\n   The following principals are authorized to revoke a Delegation\n   Receipt:\n\n   *  The User who signed the receipt (the key holder).\n\n   *  The Operator, for receipts issued under that Operator&#x27;s\n      instruction set.\n\n   *  A platform-level revocation authority designated in the Operator&#x27;s\n      trust anchor configuration, if present.\n\n   Revocation is propagated by publishing a signed revocation record to\n   the append-only log.  A revocation record *MUST* contain: the\n   receiptId being revoked, the revocation timestamp, the revoking\n   principal&#x27;s public key, and a signature over those fields.  Verifiers\n   *MUST* treat any receipt whose receiptId appears in the revocation\n   log as revoked regardless of its time window.\n\n   Implementations *SHOULD* propagate revocation records to all active\n   verifiers within 60 seconds of publication to the log.  This is the\n   *RECOMMENDED* propagation timeout.  Verifiers that have not received\n   a revocation record within 300 seconds of the log publication\n   timestamp *SHOULD* treat the absence as a potential network partition\n   and enter a degraded verification posture (i.e., requiring re-\n   validation of any receipt before accepting the next action).\n\n   When a revocation record arrives while a session is mid-execution\n   (i.e., an action authorized by the revoked receipt is currently in\n   progress), the verifier *MUST* complete the in-flight action if and\n   only if it is idempotent and non-destructive (e.g., READ operations),\n   then *MUST* block all subsequent actions and terminate the session\n   with status REVOKED.  Non-idempotent or destructive in-flight actions\n   *MUST* be aborted immediately upon receipt of the revocation record.\n\n11.  Security Considerations\n\n11.1.  Threat Model\n\n   DRP considers the following adversaries and mitigations:\n\n<span>Nelson                  Expires 15 December 2026               [Page 49]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   Compromised Operator:\n      An attacker who gains control of the Operator&#x27;s systems can alter\n      the instructions delivered to the Agent.  Under DRP, any\n      instruction diverging from the hash committed in the Delegation\n      Receipt is immediately detectable at step (7) of Verify.  The\n      attacker cannot issue instructions that pass hash verification\n      without the User&#x27;s private key.\n\n   Malicious Operator:\n      An Operator who intentionally instructs the Agent to exceed the\n      User&#x27;s authorization -- under commercial pressure, legal\n      compulsion, or bad faith -- produces a detectable instruction hash\n      mismatch.  The discrepancy between committed and actual\n      instructions is an auditable fact in the append-only log.  The\n      Operator cannot alter the log entry and cannot alter the signed\n      receipt.\n\n   Log Integrity:\n      The security of the protocol depends on the tamper-evidence of the\n      append-only log.  Chain linking (Section 5.2) prevents insertion,\n      deletion, and modification of individual log entries; any such\n      tampering produces a detectable chain break.  However, chain\n      linking alone does not protect against truncation (discarding the\n      tail of the log) or equivocation (presenting different log views\n      to different observers).  Implementations *SHOULD* use\n      decentralized log implementations following the Certificate\n      Transparency model that do not depend on a single operator for\n      integrity [RFC6962] and *SHOULD* submit log roots to an\n      independently monitored transparency log following the SCITT\n      architecture [I-D.ietf-scitt-architecture] to detect truncation\n      and log fork attacks.\n\n   Key Compromise:\n      If the User&#x27;s signing key is compromised, an attacker can issue\n      Delegation Receipts in the User&#x27;s name.  Hardware key custody\n      using a FIDO2 authenticator [FIDO2] significantly reduces this\n      risk by making key extraction technically infeasible on modern\n      devices with secure enclaves.\n\n   Revocation:\n      When a User wishes to revoke a Delegation Receipt, they *MUST*:\n\n      1.  Construct a revocation record containing: the SHA-256 hash of\n          the original receipt, a reason string, and a revocation\n          timestamp.\n\n      2.  Sign the revocation record with the same private key used to\n          sign the original receipt.\n\n<span>Nelson                  Expires 15 December 2026               [Page 50]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      3.  Publish the signed revocation record to the append-only log,\n          producing an immutable log anchor.\n\n      The log anchor establishes the authoritative revocation time.\n      Actions taken before this timestamp under the original receipt\n      remain valid.  Actions attempted after this timestamp *MUST* fail.\n\n      Verification *MUST* check revocation before any other check\n      (Section 6.1, step 1).  Because the revocation record is itself\n      signed by the User and anchored to the log, it carries the same\n      evidentiary weight as the original receipt.  Revocation is\n      auditable, tamper-evident, and does not depend on the Operator to\n      propagate or acknowledge it.\n\n   Replay Attack:\n      A Delegation Receipt is a static signed artifact.  An adversary\n      who intercepts or stores a receipt could re-present it in a later\n      session or in a concurrent context to authorize actions the User\n      did not intend for that context.  DRP mitigates replay through\n      Check 10 of the verification algorithm: the verifier records each\n      presented receiptId in a per-session presentation log and rejects\n      any receipt that appears more than once within the same session,\n      returning REPLAY_DETECTED.  Implementations *SHOULD* include a\n      short-lived nonce in every action submission and maintain a per-\n      session replay cache with entries expiring at timeWindow.notAfter.\n      The append-only log provides a secondary audit trail: a re-\n      presented receipt ID appearing in the log for two distinct\n      sessions is detectable post-hoc without reliance on the per-\n      session cache.\n\n   Model Substitution:\n      An Operator could silently substitute a fine-tuned model variant\n      after receipt issuance.  Model State Attestation (Section 7)\n      closes this gap by binding a cryptographic measurement of the\n      model state to the receipt at delegation time and re-verifying\n      inside a TEE at execution time.\n\n   Prompt Injection:\n      A signed Delegation Receipt enforces what actions are permitted\n      but does not by itself verify that the instruction to take a\n      permitted action originated from a trusted source.  A prompt\n      injection attack may manipulate an agent into requesting an in-\n      scope action for malicious purposes -- for example, a receipt\n      permits send_email but a poisoned retrieved document instructs the\n      agent to send to an attacker-controlled address.  DRP addresses\n      this vector through instruction provenance checking (step 13 of\n      Verify): the receipt *MAY* include a trustedSources field listing\n      the instruction sources -- such as user, system_prompt, or\n\n<span>Nelson                  Expires 15 December 2026               [Page 51]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      verified_tool -- that are permitted to influence agent behavior.\n      When present, the verifier *MUST* reject any action whose\n      instructionSource is not in the list, returning\n      UNTRUSTED_INSTRUCTION_SOURCE.  This gives the User cryptographic\n      control over which input channels can drive agent behavior,\n      independent of the content of those inputs.\n\n   Operator Instruction Confidentiality:\n      The operatorInstructions field carries the Operator&#x27;s plaintext\n      system prompt in the receipt, which is published to the append-\n      only log.  Operators with sensitive system prompts -- such as\n      proprietary workflow logic or confidential configuration -- should\n      consider the confidentiality implications of log publication.  The\n      hash binding in operatorInstructionsHash provides full integrity\n      assurance without requiring plaintext disclosure: an Operator\n      *MAY* omit the operatorInstructions field from the log entry and\n      store the plaintext off-log, provided the SHA-256 hash committed\n      in operatorInstructionsHash can be independently verified by the\n      User on demand.  The integrity guarantee is preserved by the hash\n      alone; the plaintext is needed only for human-readable auditing.\n      The operatorInstructionsHash field thus serves as the\n      cryptographic binding for the off-log commitment option described\n      in Section 4.1.\n\n   Micro-Receipt Fatigue:\n      A malicious Operator could structure a workflow to generate many\n      micro-receipt requests in rapid succession, inducing the User to\n      approve actions they do not meaningfully review.  This is\n      analogous to notification fatigue attacks against MFA prompts.\n      The protocol makes every approval a signed, auditable artifact.\n      Rate-limiting and UI affordances are the primary mitigation;\n      protocol implementations *SHOULD* enforce a minimum inter-request\n      interval for micro-receipt prompts.\n\n   Chip Away Attack:\n      An adversary in control of the agent alternates anomalous actions\n      with clean actions in an attempt to reset the session trust score\n      between each anomalous step.  Because trustScore is a recoverable\n      Lyapunov budget, a sequence of the form clean-anomalous-clean-\n      anomalous could in principle maintain trustScore above the block\n      threshold indefinitely while avoiding a single high-severity\n      spike.  tauSession closes this attack surface: it is derived from\n      the monotone cumulativeAnomalyMass and is never decremented by\n      clean actions.  Each anomalous action permanently reduces\n      tauSession regardless of subsequent clean behavior.  When\n      tauSession falls to or below tauMin, execution is permanently\n      blocked for that session and reauthorization cannot restore it.\n      An adversary executing a chip-away pattern merely exhausts the\n\n<span>Nelson                  Expires 15 December 2026               [Page 52]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      session anomaly capacity faster.  A new session established under\n      a new Delegation Receipt begins with tauSession initialized to\n      sessionCapacity (default: 100).  Implementations *MUST NOT* carry\n      tauSession state across session boundaries; each new receipt-\n      bounded session receives a fresh tauSession value.\n\n   Authority Continuity:\n      An identity authority upstream of the receipt signer may degrade,\n      rotate, or expire while a long-lived Delegation Receipt remains\n      cryptographically valid.  For example, an enterprise SSO provider\n      may rotate signing keys or suspend an account after the receipt\n      was issued; the receipt itself remains valid under the User&#x27;s\n      local key, which may no longer accurately reflect the principal&#x27;s\n      authorization status.  Implementations *SHOULD* use short-lived\n      receipts for delegations tied to upstream identity infrastructure\n      and *SHOULD* integrate SCIM provisioning events or short-lived\n      OAuth 2.0 access tokens to detect identity state changes that\n      would invalidate an otherwise cryptographically sound receipt.\n\n   Non-Repudiation:\n      Let R be a Delegation Receipt with content C, user signature\n      sigma, and log anchor L.  Under the ECDSA P-256 EUF-CMA\n      unforgeability assumption, no party without the User&#x27;s private key\n      can produce a valid sigma for any C.  Therefore, the existence of\n      a valid receipt on the log is non-repudiable evidence that the\n      holder of the private key authorized the content of C at time L.\n\n   Authorization Persistence:\n      Authorization at time t requires both (a) a valid signed receipt\n      anchored at time L and (b) the absence of any valid revocation\n      record for that receipt anchored at time L&#x27; where L&#x27; &lt; t.  The\n      validity of sigma (established under Non-Repudiation) is a\n      necessary but not sufficient condition for continued\n      authorization: it proves the receipt was genuinely issued but does\n      not establish that it remained unrevoked through time t.  Non-\n      repudiation and authorization persistence are formally distinct\n      results.  The protocol proves both: Non-Repudiation via the EUF-\n      CMA unforgeability property of ECDSA P-256, and Authorization\n      Persistence via the tamper-evidence property of the append-only\n      log applied to both receipt anchors and revocation record anchors.\n\n   Soundness:\n      Verification decomposes into two independent predicates:\n\n        Verify(R, a) = pre(R) AND admissible(a, R)\n\n<span>Nelson                  Expires 15 December 2026               [Page 53]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      pre(R) holds if and only if: (i) R has not been revoked\n      (revocation check); (ii) the signature sigma over the canonical\n      body of R is valid under the User&#x27;s public key (signature\n      verification); and (iii) the log timestamp falls within\n      R.timeWindow (time window validity).\n\n      admissible(a, R) holds if and only if: (iv) a appears in the scope\n      allowlist in C (scope check); (v) a does not violate any\n      prohibition in C (boundary check); (vi) if a is an execution\n      action, Hash(ExecutionGraph(program)) equals the hash committed in\n      C (execution hash check); (vii) the SHA-256 hash of the Operator&#x27;s\n      current instructions equals R.operatorInstructionsHash\n      (instruction hash check); (viii) if R.modelCommitment is present,\n      the current model state measurement equals R.modelCommitment\n      (model state attestation check); (ix) if sessionState is present,\n      the session risk evaluation passes (session risk evaluation); (x)\n      the receipt has not been presented previously in this session\n      (replay detection); (xi) if R.toolSchemaHash is present, the\n      SHA-256 hash of the current tool schema equals R.toolSchemaHash\n      (tool schema hash check); (xii) if R.toolOutputHash is present and\n      action.toolOutput is present, the SHA-256 hash of\n      action.toolOutput equals R.toolOutputHash (tool output hash\n      check); (xiii) if R.trustedSources is present and\n      action.instructionSource is present, action.instructionSource\n      appears in R.trustedSources (instruction provenance check); (xiv)\n      if R.parentReceiptId is present, the sub-receipt passes the parent\n      scope containment verification (parent scope containment); and\n      (xv) if R.authorityStateCommitment is present and\n      currentAuthorityState is supplied, either the current authority\n      state commitment matches the committed value, or\n      reauthPolicy.onAuthorityStateDrift is not &quot;block&quot; (authority state\n      drift check -- when policy is &quot;block&quot;, a mismatch causes Verify to\n      return false with AUTHORITY_STATE_DRIFT; when policy is &quot;reauth&quot;,\n      Verify returns true with reauthRequired: true and\n      authorityStateDrifted: true).\n\n      For any action a, Verify(R, a) = true if and only if all of\n      (i)-(xv) hold simultaneously.  Any deviation in any component\n      causes Verify to return false.  The Operator cannot alter C\n      without invalidating sigma; the Operator cannot alter L by the\n      tamper-evidence property of the append-only log.  The executable()\n      predicate in Section 9 further establishes that Verify(R, a) =\n      true is a necessary but not sufficient condition for execution.\n\n      dynamic_admissible now requires both (a) trustScore above the\n      block threshold and (b) tauSession above tauMin.  Either condition\n      failing independently is sufficient to produce a DENY outcome.\n      The tauSession gate is evaluated first and is not resettable by\n\n<span>Nelson                  Expires 15 December 2026               [Page 54]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      reauthorization: once a session&#x27;s anomaly capacity is exhausted,\n      no subsequent clean actions or reauthorization calls can restore\n      admissibility for that session.\n\n11.2.  Continuous Access Evaluation Protocol (CAEP) Integration\n\n   The Delegation Receipt Protocol supports real-time revocation driven\n   by Continuous Access Evaluation Protocol (CAEP) events.  When an\n   upstream identity provider detects a session change or credential\n   modification, it emits a CAEP event that is translated into an\n   immediate revocation via the CAEPEventAdapter component.\n\n   Two CAEP event types are defined by this specification:\n\n   session.terminated:\n      Emitted when the upstream identity provider terminates the user&#x27;s\n      session.  The adapter extracts the bound receipt identifier from\n      the event subject and calls revocationRegistry.revoke(receiptId, {\n      reason: &quot;CAEP:session.terminated&quot; }).  All subsequent verification\n      attempts against that receipt *MUST* fail at Check 1 (revocation\n      check).\n\n   credential.change:\n      Emitted when the user&#x27;s credential is changed (for example, a\n      password reset or MFA device rotation).  The adapter extracts the\n      bound receipt identifier and calls\n      revocationRegistry.revoke(receiptId, { reason:\n      &quot;CAEP:credential.change&quot; }).  This ensures that receipts\n      authorized under the prior credential cannot continue to authorize\n      actions after the credential change.\n\n   The receipt identifier is extracted from the CAEP event subject using\n   the following priority order: event.subject.receiptId, then\n   event.subject.identifier, then event.receiptId.  If no receipt\n   identifier is found, the event is logged and no revocation is issued.\n\n   Unknown CAEP event types *MUST* be logged and ignored; they *MUST\n   NOT* cause the adapter to throw an error or interrupt processing of\n   subsequent events.  Implementations *MAY* extend the adapter at\n   runtime to handle additional event types without modifying the core\n   adapter implementation.\n\n<span>Nelson                  Expires 15 December 2026               [Page 55]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   CAEP-driven revocation is subject to the same tamper-evidence\n   guarantees as user-initiated revocation: the revocation record is\n   anchored to the append-only log, establishing an authoritative\n   revocation timestamp.  The security of this integration depends on\n   the integrity of the CAEP event channel; implementations *MUST*\n   verify CAEP event signatures when the identity provider supports\n   signed events.\n\n11.3.  Semantic Gap\n\n   The protocol does not eliminate the semantic gap between authorized\n   scope and authorized intent.  A User who authorizes &quot;write to\n   calendar&quot; may not intend to authorize deletion of all existing\n   events.  The Scope Discovery Protocol (Section 8) narrows this gap by\n   grounding scope definitions in observed agent behavior rather than\n   user speculation.\n\n   The &quot;executes&quot; scope class narrows the gap further for code execution\n   by requiring the SHA-256 hash of the program&#x27;s static capability DAG\n   rather than a program name or URI.  A program identified by name or\n   URI can be silently replaced; a program identified by its capability\n   signature *MUST* have the same capability set as the authorized\n   version.  Any capability addition or removal changes the signature.\n\n   Natural language *MUST NOT* appear in any scope field.  Scope entries\n   *MUST* be structured resource:operation pairs.  This restriction\n   exists because natural language scope definitions are ambiguous,\n   subject to interpretation, and cannot be used for deterministic\n   validation.  A scope entry of &quot;manage email&quot; does not\n   deterministically resolve to a set of permitted or denied operations.\n\n   Cryptographic primitive upgrade path: DRP uses SHA-256 throughout for\n   receipt ID computation, instruction hash commitment, manifest body\n   hashing, action log chain linking, and revocation record linking.\n   The version field in the receipt structure provides a migration path\n   to SHA-3-256 (FIPS 202) or BLAKE3 in a future protocol version.  Both\n   are drop-in replacements for the SHA-256 role in this protocol.  No\n   structural redesign is required for a hash function migration.\n\n   Quantum resistance: ECDSA P-256 is vulnerable to Shor&#x27;s algorithm on\n   a sufficiently capable quantum computer.  Ed25519 ([RFC8032]) offers\n   an alternative classical signing algorithm with smaller key and\n   signature sizes and is *RECOMMENDED* for new deployments as a drop-in\n   replacement for ECDSA P-256; it shares the same quantum vulnerability\n   under Shor&#x27;s algorithm and is therefore not post-quantum secure\n   either.  The long-term migration path for both algorithms is through\n   the FIDO2/WebAuthn credential layer: because all DRP signing is\n   abstracted behind the WebAuthn API, a platform-level upgrade to post-\n\n<span>Nelson                  Expires 15 December 2026               [Page 56]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   quantum FIDO2 authenticators (e.g., CRYSTALS-Dilithium, FALCON)\n   upgrades the protocol&#x27;s quantum resistance without protocol-layer\n   changes.  The append-only log and hash commitment structures are\n   unaffected -- SHA-256 preimage resistance is not threatened by known\n   quantum algorithms.\n\n   For broader AI-specific risk management considerations beyond the\n   cryptographic scope of this protocol, see the NIST AI Risk Management\n   Framework [NIST-AI-100-1].\n\n11.4.  TEE Enforcement\n\n   Cryptographic receipt verification alone cannot prevent a compromised\n   agent runtime from calling the verifier with a spoofed receipt,\n   receiving an &quot;allowed&quot; result, and then ignoring the scope.  A three-\n   layer enforcement model addresses this:\n\n   Layer 1 -- Receipt:\n      Cryptographic proof of User authorization (what).  The User signs\n      a Delegation Receipt specifying scope, boundaries, and Operator\n      instructions.  Any tampering is immediately detectable.\n\n   Layer 2 -- TEE:\n      Hardware-measured execution environment (where and how).  The\n      Agent runs inside an attested enclave whose measurement is bound\n      to the receipt via the teeMeasurement.expectedMrenclave field.\n      Any substitution of model weights, verifier code, or platform\n      produces a different measurement and is detectable before\n      execution.\n\n   Layer 3 -- eBPF:\n      Kernel-level enforcement.  An eBPF LSM hook validates a signed\n      capability token on every relevant syscall (security_file_open,\n      security_socket_connect, security_task_execve).  Scope violations\n      *MUST* be denied at the kernel level before they reach userspace.\n\n   This document defines two compliance profiles for TEE enforcement:\n\n   Standard Profile:\n      The modelCommitment field is OPTIONAL.  Implementations that omit\n      it skip Check 8 (Model State Attestation) entirely.  All other\n      checks remain normative.  This profile is suitable for deployments\n      where TEE hardware is unavailable or where the operator accepts\n      the associated risk.\n\n   Full-Compliance Profile:\n      The modelCommitment field is REQUIRED.  Implementations MUST\n      populate it and verifiers MUST perform Check 8.  Hardware\n\n<span>Nelson                  Expires 15 December 2026               [Page 57]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      attestation via a Trusted Execution Environment (TEE) is REQUIRED\n      under this profile.  Operators deploying under the Full-Compliance\n      Profile MUST document their TEE attestation mechanism in their\n      trust anchor configuration.\n\n   The compliance profile in use MUST be declared in the Operator&#x27;s\n   trust anchor configuration.  Verifiers MUST reject receipts that omit\n   modelCommitment when the governing trust anchor specifies the Full-\n   Compliance Profile.\n\n   Without Layer 3, a compromised agent runtime could bypass the\n   verifier.  The eBPF LSM runs in kernel space and cannot be disabled\n   by userspace code, including a compromised agent runtime.  All three\n   layers *MUST* be present for the enforcement model to be complete and\n   non-bypassable.\n\n   Intel TDX and AMD SEV-SNP provide encrypted memory pages inaccessible\n   to the host OS and hypervisor, hardware-rooted attestation quotes\n   signed by the CPU vendor&#x27;s key, and measured boot that hashes every\n   component loaded into the enclave.  DRP binds delegation receipts to\n   enclave measurements via:\n\n   mrenclave = SHA-256(\n     platform || verifierHash || modelHash\n   )\n\n   This value is committed into the receipt&#x27;s\n   teeMeasurement.expectedMrenclave field at delegation time.  At\n   execution time, the runtime recomputes mrenclave from its runtime\n   parameters and *MUST* reject execution if there is any mismatch.\n\n   The token injection sequence is:\n\n   1.  ConfidentialRuntime.launch() computes mrenclave and verifies the\n       receipt measurement.\n\n   2.  PreExecutionVerifier.check() gates execution -- no valid receipt\n       means no execution.\n\n   3.  TokenPreparer.prepare() builds a signed capability token binding\n       receipt hash, scope hash, and TEE quote hash.\n\n   4.  The token is injected into the agent process context.\n\n   5.  The eBPF LSM validates the token on every relevant syscall.\n\n   6.  Any operation not covered by the token&#x27;s scope *MUST* be denied\n       at the kernel level.\n\n<span>Nelson                  Expires 15 December 2026               [Page 58]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   *Note on optional field vs. required enforcement:* The teeMeasurement\n   field in the Delegation Receipt structure is *OPTIONAL* --\n   implementations are not required to include it in every receipt.\n   However, TEE-based enforcement is *REQUIRED* for any deployment\n   claiming full DRP compliance.  An implementation that issues receipts\n   without teeMeasurement while not operating within a TEE-enforced\n   runtime does not satisfy the full DRP compliance profile.\n   Deployments *MUST* document whether they operate in TEE-enforced mode\n   and *MUST NOT* claim full DRP compliance without active TEE\n   enforcement.\n\n11.5.  Degraded Operation\n\n   When the verifier cannot construct the required authorization state\n   due to log unavailability, unverifiable revocation status, or an\n   UNVERIFIED_TIMESTAMP condition (see Section 5.3), execution *MUST\n   NOT* proceed regardless of operator acknowledgment.  Operator\n   acknowledgment does not reconstruct a structurally missing\n   verification input and therefore cannot substitute for a complete,\n   verifiable authorization state.  Implementations *MUST* fail closed\n   under these conditions in all deployment contexts.  An\n   UNVERIFIED_TIMESTAMP is treated equivalently to an unverifiable\n   revocation status: both represent missing verification inputs that\n   cannot be reconstructed by operator assertion.\n\n   When operating against a locally cached revocation registry,\n   implementations *MUST* note the cache timestamp and *MUST* reject any\n   receipt where the revocation status cannot be verified against data\n   anchored within the configurable maximum cache age.  An unverifiable\n   revocation status is treated equivalently to a verified revocation:\n   execution *MUST NOT* proceed.\n\n   Implementations *MUST* provide configuration to specify the maximum\n   acceptable cache age for revocation data.  The default maximum cache\n   age is one hour.\n\n   When the Time-Stamp Authority (TSA) is unreachable, TEE attestation\n   requirements are not relaxed.  Implementations operating under the\n   TEE enforcement profile (Section 11.4) *MUST* continue to require\n   valid TEE attestation for all actions even in degraded mode; the\n   absence of a TSA timestamp does not constitute grounds for bypassing\n   hardware attestation.  If both the TSA and the TEE attestation\n   service are unreachable, the implementation *MUST* block all EXECUTE-\n   class actions and *MAY* permit READ-only actions subject to standard\n   scope verification.\n\n<span>Nelson                  Expires 15 December 2026               [Page 59]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n11.6.  Key Management\n\n   Signing keys used to issue Delegation Receipts carry significant\n   authority and *MUST* be managed with care:\n\n   Key Rotation:\n      Implementations *SHOULD* rotate signing keys at least every 90\n      days or upon any personnel change that affects access to the\n      signing credential.  All Delegation Receipts issued under the\n      rotated key remain valid for their stated time window.  New\n      receipts issued after rotation *MUST* use the new key.\n      Implementations *SHOULD* publish key rotation events to the\n      append-only log to provide an auditable history of which key was\n      active at any point in time.\n\n   Lost or Stolen Key Procedures:\n      Upon discovery of a lost or stolen signing key, the key holder\n      *MUST* immediately revoke all active receipts issued under the\n      compromised key and re-issue new receipts under a freshly\n      generated key.  Revocation records *MUST* be anchored to the\n      append-only log before the new key is placed into service.  Key\n      compromise events *SHOULD* be communicated to all Operators\n      holding receipts signed under the compromised key.\n\n12.  Implementation Status\n\n   This section records the status of known implementations of the\n   protocol defined by this specification at the time of posting of this\n   Internet-Draft, and is based on a proposal described in [RFC7942].\n   The description of implementations in this section is intended to\n   assist the IETF in its decision processes in progressing drafts to\n   RFCs.\n\n   authproof-cloud\n      Organization: Authproof\n\n      Maturity level: prototype (alpha)\n\n      Coverage: 1,305 passing tests across 22 test files.  The following\n      features are implemented and tested:\n\n      *  Receipt issuance and Ed25519/ECDSA P-256 signing\n\n      *  Append-only log anchoring with TSA timestamping\n\n      *  Pre-execution verification: all 15 checks (Section 6.4),\n         including sub-receipt chain validation (Check 14) and authority\n         state attestation with reauthorization signaling (Check 15)\n\n<span>Nelson                  Expires 15 December 2026               [Page 60]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      *  Authority state attestation: deterministic SHA-256 commitment\n         to principal authority state at delegation time, drift\n         detection at execution time, and soft reauthRequired signaling\n\n      *  CAEP event integration via CAEPEventAdapter: session.terminated\n         and credential.change events translated to immediate\n         revocations\n\n      *  Session state lifecycle management and evaluateSessionRisk\n         evaluation\n\n      *  Scope Discovery Protocol (observation mode and sandboxed\n         execution)\n\n      *  Revocation log publication and polling\n\n      The following features are partially implemented or planned:\n\n      *  Full TEE attestation integration (Check 8) -- in progress;\n         currently validated via software attestation mock.  The current\n         implementation satisfies the Standard Profile defined in\n         Section 11.4; it does *NOT* yet satisfy the Full-Compliance\n         Profile, which requires hardware TEE attestation.\n\n      *  Multi-operator trust anchor federation -- planned\n\n      Licensing: MIT License\n\n      Contact and repository: https://github.com/Commonguy25/authproof-\n      sdk\n\n13.  IANA Considerations\n\n   This document requests IANA to create the following registries under\n   a new &quot;Delegation Receipt Protocol (DRP)&quot; registry group.\n\n13.1.  DRP Denial Reason Codes Registry\n\n   IANA is requested to create a registry titled &quot;DRP Denial Reason\n   Codes&quot;.  The policy for new registrations is Specification Required.\n   Initial values are:\n\n   +===============================+==================================+\n   |Reason Code                    |Description                       |\n   +===============================+==================================+\n   |RECEIPT_REVOKED                |Receipt has been explicitly       |\n   |                               |revoked                           |\n   +-------------------------------+----------------------------------+\n\n<span>Nelson                  Expires 15 December 2026               [Page 61]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   |INVALID_SIGNATURE              |Receipt signature verification    |\n   |                               |failed                            |\n   +-------------------------------+----------------------------------+\n   |RECEIPT_EXPIRED                |Receipt time window has elapsed   |\n   +-------------------------------+----------------------------------+\n   |RECEIPT_NOT_YET_VALID          |Receipt creation time is in the   |\n   |                               |future                            |\n   +-------------------------------+----------------------------------+\n   |ACTION_NOT_IN_SCOPE            |Requested action not in allow list|\n   +-------------------------------+----------------------------------+\n   |ACTION_EXPLICITLY_DENIED       |Requested action in deny list or  |\n   |                               |boundary                          |\n   +-------------------------------+----------------------------------+\n   |EXECUTION_HASH_MISMATCH        |Program execution graph hash does |\n   |                               |not match receipt commitment      |\n   +-------------------------------+----------------------------------+\n   |OPERATOR_INSTRUCTIONS_MISMATCH |Operator instructions hash does   |\n   |                               |not match receipt commitment      |\n   +-------------------------------+----------------------------------+\n   |MALICIOUS_MODEL_SUBSTITUTION   |Model identity changed after      |\n   |                               |receipt was signed                |\n   +-------------------------------+----------------------------------+\n   |PROVIDER_UPDATE_DETECTED       |Model version updated by provider;|\n   |                               |reauthorization required          |\n   +-------------------------------+----------------------------------+\n   |SESSION_RISK_THRESHOLD_EXCEEDED|Session trust score below block   |\n   |                               |threshold                         |\n   +-------------------------------+----------------------------------+\n   |REPLAY_DETECTED                |Receipt presented more than once  |\n   |                               |concurrently                      |\n   +-------------------------------+----------------------------------+\n   |TOOL_SCHEMA_DRIFT              |Tool schema hash at execution time|\n   |                               |does not match hash committed at  |\n   |                               |receipt issuance time             |\n   +-------------------------------+----------------------------------+\n   |TOOL_OUTPUT_TAMPERED           |Hash of tool output does not match|\n   |                               |hash committed in the receipt at  |\n   |                               |delegation time                   |\n   +-------------------------------+----------------------------------+\n   |UNTRUSTED_INSTRUCTION_SOURCE   |Instruction source not listed in  |\n   |                               |receipt trustedSources field      |\n   +-------------------------------+----------------------------------+\n   |COMMITMENT_REUSE_VIOLATION     |Model commitment value reused     |\n   |                               |across distinct receipt IDs       |\n   +-------------------------------+----------------------------------+\n   |SCOPE_NOT_STRICT_SUBSET        |Sub-receipt allowedActions is not |\n   |                               |a strict proper subset of the     |\n   |                               |parent receipt&#x27;s allowedActions   |\n\n<span>Nelson                  Expires 15 December 2026               [Page 62]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   +-------------------------------+----------------------------------+\n   |PARENT_SCOPE_VIOLATION         |Sub-receipt failed parent scope   |\n   |                               |containment check (receipt not    |\n   |                               |found, time window overflow, chain|\n   |                               |depth exceeded, or orchestrator   |\n   |                               |binding failure)                  |\n   +-------------------------------+----------------------------------+\n   |REVOCATION_CHECK_REQUIRED      |Returned by an offline verifier   |\n   |                               |when the receipt requires online  |\n   |                               |revocation checking               |\n   |                               |(revocationRequired field is true)|\n   +-------------------------------+----------------------------------+\n   |SESSION_LIFETIME_EXCEEDED      |Session wall-clock lifetime       |\n   |                               |exceeded maxLifetimeSeconds       |\n   +-------------------------------+----------------------------------+\n   |TAU_SESSION_EXHAUSTED          |Session anomaly capacity          |\n   |                               |(tauSession) exhausted            |\n   +-------------------------------+----------------------------------+\n   |AUTHORITY_STATE_DRIFT          |Principal&#x27;s authority state has   |\n   |                               |changed since receipt issuance and|\n   |                               |reauthPolicy.onAuthorityStateDrift|\n   |                               |is &quot;block&quot;                        |\n   +-------------------------------+----------------------------------+\n\n                                 Table 4\n\n13.2.  DRP Operation Types Registry\n\n   IANA is requested to create a registry titled &quot;DRP Operation Types&quot;.\n   The policy for new registrations is Specification Required.  Initial\n   values are:\n\n   +================+==================================================+\n   | Operation Type | Description                                      |\n   +================+==================================================+\n   | READ           | Read access to a resource                        |\n   +----------------+--------------------------------------------------+\n   | WRITE          | Write or modify a resource                       |\n   +----------------+--------------------------------------------------+\n   | EXECUTE        | Execute a program or callable resource           |\n   +----------------+--------------------------------------------------+\n   | DELETE         | Delete a resource                                |\n   +----------------+--------------------------------------------------+\n   | DELEGATE       | Issue a sub-receipt delegating a                 |\n   |                | subset of scope                                  |\n   +----------------+--------------------------------------------------+\n\n                                  Table 5\n\n<span>Nelson                  Expires 15 December 2026               [Page 63]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n13.3.  DRP Boundary String Format Registry\n\n   IANA is requested to create a registry titled &quot;DRP Boundary String\n   Formats&quot; describing the prohibition string format used in the\n   boundaries array of a Delegation Receipt.  The policy for new\n   registrations is Specification Required.\n\n   The baseline format defined by this document is:\n\n     prohibition-string = &quot;deny&quot; &quot;:&quot; operation &quot;:&quot; resource\n     operation          = operation-type / &quot;*&quot;\n     resource           = resource-identifier / &quot;*&quot;\n     operation-type     = &quot;read&quot; / &quot;write&quot; / &quot;delete&quot; / &quot;execute&quot;\n                        / &quot;delegate&quot;\n     resource-identifier= 1*( ALPHA / DIGIT / &quot;-&quot; / &quot;_&quot; / &quot;/&quot; )\n\n   The wildcard character &quot;*&quot; matches any value in its position.  A\n   prohibition string of &quot;deny:write:*&quot; prohibits all write operations\n   on all resources.  A prohibition string of &quot;deny:delete:email&quot;\n   prohibits delete operations on the email resource specifically.\n\n14.  References\n\n14.1.  Normative References\n\n   [RFC2119]  Bradner, S., &quot;Key words for use in RFCs to Indicate\n              Requirement Levels&quot;, BCP 14, RFC 2119,\n              DOI 10.17487/RFC2119, March 1997,\n              &lt;https://www.rfc-editor.org/info/rfc2119&gt;.\n\n   [RFC8174]  Leiba, B., &quot;Ambiguity of Uppercase vs Lowercase in RFC\n              2119 Key Words&quot;, BCP 14, RFC 8174, DOI 10.17487/RFC8174,\n              May 2017, &lt;https://www.rfc-editor.org/info/rfc8174&gt;.\n\n   [RFC3161]  Adams, C., Cain, P., Pinkas, D., and R. Zuccherato,\n              &quot;Internet X.509 Public Key Infrastructure Time-Stamp\n              Protocol (TSP)&quot;, RFC 3161, DOI 10.17487/RFC3161, August\n              2001, &lt;https://www.rfc-editor.org/info/rfc3161&gt;.\n\n   [RFC7517]  Jones, M., &quot;JSON Web Key (JWK)&quot;, RFC 7517,\n              DOI 10.17487/RFC7517, May 2015,\n              &lt;https://www.rfc-editor.org/info/rfc7517&gt;.\n\n   [RFC7518]  Jones, M., &quot;JSON Web Algorithms (JWA)&quot;, RFC 7518,\n              DOI 10.17487/RFC7518, May 2015,\n              &lt;https://www.rfc-editor.org/info/rfc7518&gt;.\n\n<span>Nelson                  Expires 15 December 2026               [Page 64]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   [RFC8032]  Josefsson, S. and I. Liusvaara, &quot;Edwards-Curve Digital\n              Signature Algorithm (EdDSA)&quot;, RFC 8032,\n              DOI 10.17487/RFC8032, January 2017,\n              &lt;https://www.rfc-editor.org/info/rfc8032&gt;.\n\n14.2.  Informative References\n\n   [NIST-AI-100-1]\n              National Institute of Standards and Technology,\n              &quot;Artificial Intelligence Risk Management Framework (AI RMF\n              1.0)&quot;, NIST AI 100-1, January 2023,\n              &lt;https://doi.org/10.6028/NIST.AI.100-1&gt;.\n\n   [W3C-WebAuthn]\n              Balfanz, D., &quot;Web Authentication: An API for Accessing\n              Public Key Credentials Level 2&quot;, W3C Recommendation \n              webauthn-2, April 2021,\n              &lt;https://www.w3.org/TR/webauthn-2/&gt;.\n\n   [FIDO2]    FIDO Alliance, &quot;Client to Authenticator Protocol (CTAP)&quot;,\n              FIDO Alliance Proposed Standard CTAP-v2.1, June 2021,\n              &lt;https://fidoalliance.org/specs/fido-v2.1-ps-20210615/\n              fido-client-to-authenticator-protocol-v2.1-ps-\n              20210615.html&gt;.\n\n   [RFC6962]  Laurie, B., Langley, A., and E. Kasper, &quot;Certificate\n              Transparency&quot;, RFC 6962, DOI 10.17487/RFC6962, June 2013,\n              &lt;https://www.rfc-editor.org/info/rfc6962&gt;.\n\n   [RFC8693]  Jones, M., Nadalin, A., Campbell, B., Bradley, J., and C.\n              Mortimore, &quot;OAuth 2.0 Token Exchange&quot;, RFC 8693,\n              DOI 10.17487/RFC8693, January 2020,\n              &lt;https://www.rfc-editor.org/info/rfc8693&gt;.\n\n   [NC2.5]    Barziankou, M., &quot;Navigational Cybernetics 2.5&quot;,\n              DOI 10.17605/OSF.IO/NHTC5, 2026,\n              &lt;https://doi.org/10.17605/OSF.IO/NHTC5&gt;.\n\n   [RFC9396]  Lodderstedt, T., Richer, J., and B. Campbell, &quot;OAuth 2.0\n              Rich Authorization Requests&quot;, RFC 9396,\n              DOI 10.17487/RFC9396, May 2023,\n              &lt;https://www.rfc-editor.org/info/rfc9396&gt;.\n\n   [RFC7942]  Sheffer, Y. and A. Farrel, &quot;Improving Awareness of Running\n              Code: The Implementation Status Section&quot;, BCP 205,\n              RFC 7942, DOI 10.17487/RFC7942, July 2016,\n              &lt;https://www.rfc-editor.org/info/rfc7942&gt;.\n\n<span>Nelson                  Expires 15 December 2026               [Page 65]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   [RFC8785]  Rundgren, A., Jordan, B., and S. Erdtman, &quot;JSON\n              Canonicalization Scheme (JCS)&quot;, RFC 8785,\n              DOI 10.17487/RFC8785, August 2021,\n              &lt;https://www.rfc-editor.org/info/rfc8785&gt;.\n\n   [I-D.ietf-scitt-architecture]\n              Birkholz, H., Delignat-Lavaud, A., Fournet, C., Launois,\n              Y., and T. Fossati, &quot;An Architecture for Trustworthy and\n              Transparent Digital Supply Chains&quot;, Work in Progress,\n              Internet-Draft, draft-ietf-scitt-architecture, 2024,\n              &lt;https://datatracker.ietf.org/doc/html/draft-ietf-scitt-\n              architecture&gt;.\n\n<span>Appendix A.  JSON Schema Definitions</span>\n\nA.1.  Delegation Receipt Schema\n\n   The following JSON Schema (draft-07) defines the structure of a\n   Delegation Receipt as specified in Section 4.\n\n{\n  &quot;$schema&quot;: &quot;http://json-schema.org/draft-07/schema#&quot;,\n  &quot;$id&quot;: &quot;https://authproof.dev/schemas/delegation-receipt-1.0.json&quot;,\n  &quot;title&quot;: &quot;DelegationReceipt&quot;,\n  &quot;type&quot;: &quot;object&quot;,\n  &quot;required&quot;: [\n    &quot;receiptId&quot;,\n    &quot;schemaVersion&quot;,\n    &quot;timeWindow&quot;,\n    &quot;publicKey&quot;,\n    &quot;scope&quot;,\n    &quot;boundaries&quot;,\n    &quot;operatorInstructionsHash&quot;,\n    &quot;canonicalPayload&quot;,\n    &quot;signature&quot;\n  ],\n  &quot;properties&quot;: {\n    &quot;receiptId&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Unique receipt identifier.&quot;,\n      &quot;pattern&quot;: &quot;^rec_[0-9a-f]{16,}$&quot;\n    },\n    &quot;schemaVersion&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Schema version. MUST be 1.0.&quot;,\n      &quot;enum&quot;: [&quot;1.0&quot;]\n    },\n    &quot;timeWindow&quot;: {\n\n<span>Nelson                  Expires 15 December 2026               [Page 66]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      &quot;type&quot;: &quot;object&quot;,\n      &quot;description&quot;: &quot;The validity window for this receipt.\n                      Verification MUST use the log-assigned TSA\n                      timestamp, not the client clock.&quot;,\n      &quot;required&quot;: [&quot;notBefore&quot;, &quot;notAfter&quot;],\n      &quot;properties&quot;: {\n        &quot;notBefore&quot;: {\n          &quot;type&quot;: &quot;string&quot;,\n          &quot;format&quot;: &quot;date-time&quot;,\n          &quot;description&quot;: &quot;ISO 8601 datetime before which this\n                          receipt is not valid.&quot;\n        },\n        &quot;notAfter&quot;: {\n          &quot;type&quot;: &quot;string&quot;,\n          &quot;format&quot;: &quot;date-time&quot;,\n          &quot;description&quot;: &quot;ISO 8601 datetime at which this receipt\n                          expires.  Verification MUST fail after\n                          this time.&quot;\n        }\n      }\n    },\n    &quot;publicKey&quot;: {\n      &quot;description&quot;: &quot;The user&#x27;s public key as a JSON Web Key (JWK). Ed25519 (kty: OKP, crv: Ed25519) is RECOMMENDED. ECDSA P-256 (kty: EC, crv: P-256) is also supported for compatibility.&quot;,\n      &quot;oneOf&quot;: [\n        {\n          &quot;title&quot;: &quot;Ed25519 (OKP)&quot;,\n          &quot;type&quot;: &quot;object&quot;,\n          &quot;properties&quot;: {\n            &quot;kty&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;OKP&quot;] },\n            &quot;crv&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;Ed25519&quot;] },\n            &quot;x&quot;:   { &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Base64url-encoded public key bytes (32 bytes)&quot; }\n          },\n          &quot;required&quot;: [&quot;kty&quot;, &quot;crv&quot;, &quot;x&quot;],\n          &quot;additionalProperties&quot;: false\n        },\n        {\n          &quot;title&quot;: &quot;ECDSA P-256 (EC)&quot;,\n          &quot;type&quot;: &quot;object&quot;,\n          &quot;properties&quot;: {\n            &quot;kty&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;EC&quot;] },\n            &quot;crv&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;P-256&quot;] },\n            &quot;x&quot;:   { &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Base64url-encoded x coordinate&quot; },\n            &quot;y&quot;:   { &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Base64url-encoded y coordinate&quot; }\n          },\n          &quot;required&quot;: [&quot;kty&quot;, &quot;crv&quot;, &quot;x&quot;, &quot;y&quot;],\n          &quot;additionalProperties&quot;: false\n        }\n      ]\n\n<span>Nelson                  Expires 15 December 2026               [Page 67]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n    },\n    &quot;scope&quot;: {\n      &quot;$ref&quot;: &quot;#/definitions/ScopeSchema&quot;\n    },\n    &quot;boundaries&quot;: {\n      &quot;type&quot;: &quot;array&quot;,\n      &quot;description&quot;: &quot;Array of prohibition strings that MUST be\n                      enforced regardless of scope or Operator\n                      instruction.  These represent the User&#x27;s\n                      hard limits.&quot;,\n      &quot;items&quot;: { &quot;type&quot;: &quot;string&quot; },\n      &quot;minItems&quot;: 1\n    },\n    &quot;operatorInstructionsHash&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;SHA-256 hash of the canonical operator\n                      instructions string, formatted as\n                      sha256:&lt;hex&gt;.&quot;,\n      &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n    },\n    &quot;operatorInstructions&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;The plaintext Operator instruction string\n                      whose SHA-256 hash is committed in\n                      operatorInstructionsHash.&quot;\n    },\n    &quot;modelCommitment&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Cryptographic measurement of\n                      the model state at authorization time,\n                      formatted as sha256:&lt;hex&gt;.  When present,\n                      verification MUST fail if the current\n                      model measurement does not match.&quot;,\n      &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n    },\n    &quot;metadata&quot;: {\n      &quot;type&quot;: &quot;object&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Arbitrary key-value pairs\n                      included in the canonical payload and\n                      covered by the signature.  MAY include\n                      external delegation identifiers.&quot;,\n      &quot;additionalProperties&quot;: {\n        &quot;type&quot;: &quot;string&quot;\n      }\n    },\n    &quot;canonicalPayload&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Base64url-encoded canonical serialization of all receipt fields except canonicalPayload and signature. Covered by the receipt signature.&quot;\n\n<span>Nelson                  Expires 15 December 2026               [Page 68]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n    },\n    &quot;signature&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Base64url-encoded ECDSA P-256 signature\n                      over canonicalPayload.&quot;\n    },\n    &quot;toolSchemaHash&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. SHA-256 hash of the canonical\n                      serialization of all tool schemas available\n                      at delegation time, formatted as\n                      sha256:&lt;hex&gt;.  When present, verification\n                      MUST fail if the current tool schema hash\n                      does not match.&quot;,\n      &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n    },\n    &quot;discoveryMetadata&quot;: {\n      &quot;type&quot;: &quot;object&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Scope Discovery Protocol metadata.\n                      MUST be present when the receipt was produced\n                      by the Scope Discovery Protocol.&quot;,\n      &quot;properties&quot;: {\n        &quot;observationCount&quot;: {\n          &quot;type&quot;: &quot;integer&quot;,\n          &quot;description&quot;: &quot;Number of operations intercepted during\n                          the sandboxed observation session.&quot;,\n          &quot;minimum&quot;: 0\n        },\n        &quot;abortedByTimeout&quot;: {\n          &quot;type&quot;: &quot;boolean&quot;,\n          &quot;description&quot;: &quot;True if the observation session was\n                          terminated by timeout rather than\n                          completion.&quot;\n        },\n        &quot;riskFlags&quot;: {\n          &quot;type&quot;: &quot;array&quot;,\n          &quot;description&quot;: &quot;Risk flags raised during scope generation.&quot;,\n          &quot;items&quot;: { &quot;type&quot;: &quot;string&quot; }\n        }\n      }\n    },\n    &quot;logEntryHash&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. SHA-256 hash of the append-only\n                      log entry produced when this receipt was\n                      published, formatted as sha256:&lt;hex&gt;.&quot;,\n      &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n    },\n\n<span>Nelson                  Expires 15 December 2026               [Page 69]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n    &quot;trustedSources&quot;: {\n      &quot;type&quot;: &quot;array&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Array of trusted instruction source\n                      identifiers.  When present, Check 13 MUST\n                      reject any action whose instructionSource is\n                      not in this list.&quot;,\n      &quot;items&quot;: { &quot;type&quot;: &quot;string&quot; }\n    },\n    &quot;revocationRequired&quot;: {\n      &quot;type&quot;: &quot;boolean&quot;,\n      &quot;default&quot;: false,\n      &quot;description&quot;: &quot;OPTIONAL. When true, offline verifiers MUST deny\n                      this receipt with REVOCATION_CHECK_REQUIRED.&quot;\n    },\n    &quot;parentReceiptId&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. The receiptId of the parent\n                      Delegation Receipt in a multi-agent delegation\n                      chain.  When present the receipt is a\n                      sub-receipt subject to Check 14.&quot;,\n      &quot;pattern&quot;: &quot;^rec_[0-9a-f]{16,}$&quot;\n    },\n    &quot;orchestratorSignature&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Base64url-encoded ECDSA P-256\n                      binding signature by the Orchestrator&#x27;s key\n                      over &#x27;orchestrator-delegation:&#x27; ||\n                      parentReceiptId || &#x27;:&#x27; || receiptId.\n                      Present only in sub-receipts.  Not included\n                      in the signed body.&quot;\n    },\n    &quot;providerUpdatePolicyId&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Opaque string identifying the providerUpdatePolicy configuration entry in effect at issuance. Scoped to the operator&#x27;s trust anchor. Covered by the receipt signature.&quot;\n    },\n    &quot;toolOutputHash&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. SHA-256 hash of the tool output expected at execution time, formatted as sha256:&lt;hex&gt;. When present, Check 12 must verify that SHA-256(action.toolOutput) matches this value. Covered by the receipt signature.&quot;,\n      &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n    },\n    &quot;authorityStateCommitment&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Deterministic SHA-256 commitment to the principal&#x27;s authority state (roles, groups, entitlements, attributes) at delegation time. Computed by key-sorting all fields recursively before hashing. When present, Check 15 detects authority state drift at execution time. Covered by the receipt signature.&quot;,\n      &quot;pattern&quot;: &quot;^[0-9a-f]{64}$&quot;\n    },\n    &quot;reauthPolicy&quot;: {\n      &quot;type&quot;: &quot;object&quot;,\n      &quot;description&quot;: &quot;OPTIONAL. Controls when the verifier emits a soft reauthRequired signal on a PERMIT result. Covered by the receipt signature.&quot;,\n\n<span>Nelson                  Expires 15 December 2026               [Page 70]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      &quot;properties&quot;: {\n        &quot;secondsBeforeExpiry&quot;: {\n          &quot;type&quot;: &quot;integer&quot;,\n          &quot;description&quot;: &quot;Emit reauthRequired when the receipt is within this many seconds of expiry.&quot;,\n          &quot;default&quot;: 300,\n          &quot;minimum&quot;: 0\n        },\n        &quot;trustScoreBelow&quot;: {\n          &quot;type&quot;: &quot;number&quot;,\n          &quot;description&quot;: &quot;Emit reauthRequired when session trust score falls below this threshold.&quot;,\n          &quot;default&quot;: 50,\n          &quot;minimum&quot;: 0,\n          &quot;maximum&quot;: 100\n        },\n        &quot;onAuthorityStateDrift&quot;: {\n          &quot;type&quot;: &quot;string&quot;,\n          &quot;description&quot;: &quot;Governs Check 15 behavior when authority state drift is detected. &#x27;block&#x27; returns DENY with AUTHORITY_STATE_DRIFT; &#x27;reauth&#x27; permits the action but sets reauthRequired: true and authorityStateDrifted: true on the result.&quot;,\n          &quot;enum&quot;: [&quot;block&quot;, &quot;reauth&quot;],\n          &quot;default&quot;: &quot;reauth&quot;\n        }\n      },\n      &quot;additionalProperties&quot;: false\n    }\n  },\n  &quot;definitions&quot;: {\n    &quot;ScopeSchema&quot;: {\n      &quot;type&quot;: &quot;object&quot;,\n      &quot;required&quot;: [&quot;version&quot;, &quot;allowedActions&quot;],\n      &quot;properties&quot;: {\n        &quot;version&quot;: {\n          &quot;type&quot;: &quot;string&quot;,\n          &quot;description&quot;: &quot;Scope schema version.&quot;,\n          &quot;default&quot;: &quot;1.0&quot;\n        },\n        &quot;allowedActions&quot;: {\n          &quot;type&quot;: &quot;array&quot;,\n          &quot;description&quot;: &quot;Explicit list of permitted actions.&quot;,\n          &quot;items&quot;: {\n            &quot;$ref&quot;: &quot;#/definitions/ActionConstraint&quot;\n          }\n        },\n        &quot;deniedActions&quot;: {\n          &quot;type&quot;: &quot;array&quot;,\n          &quot;description&quot;: &quot;Explicit list of prohibited actions.\n                          Deny rules take precedence over allow\n                          rules.&quot;,\n          &quot;items&quot;: {\n            &quot;$ref&quot;: &quot;#/definitions/ActionConstraint&quot;\n\n<span>Nelson                  Expires 15 December 2026               [Page 71]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n          }\n        }\n      }\n    },\n    &quot;ActionConstraint&quot;: {\n      &quot;type&quot;: &quot;object&quot;,\n      &quot;required&quot;: [&quot;operation&quot;, &quot;resource&quot;],\n      &quot;properties&quot;: {\n        &quot;operation&quot;: {\n          &quot;type&quot;: &quot;string&quot;,\n          &quot;description&quot;: &quot;The operation type. Wildcards (*) are\n                          supported.&quot;,\n          &quot;examples&quot;: [&quot;read&quot;, &quot;write&quot;, &quot;delete&quot;, &quot;send&quot;, &quot;*&quot;]\n        },\n        &quot;resource&quot;: {\n          &quot;type&quot;: &quot;string&quot;,\n          &quot;description&quot;: &quot;The resource identifier. Wildcards (*)\n                          are supported.&quot;,\n          &quot;examples&quot;: [&quot;email&quot;, &quot;calendar&quot;, &quot;database/*&quot;, &quot;*&quot;]\n        },\n        &quot;constraints&quot;: {\n          &quot;type&quot;: &quot;object&quot;,\n          &quot;description&quot;: &quot;OPTIONAL. Argument-level constraints\n                          on the action.&quot;,\n          &quot;additionalProperties&quot;: true\n        }\n      }\n    }\n  }\n}\n\nA.2.  Action Log Entry Schema\n\n   The following JSON Schema defines the structure of an Action Log\n   Entry as specified in Section 5.\n\n   {\n     &quot;$schema&quot;: &quot;http://json-schema.org/draft-07/schema#&quot;,\n     &quot;$id&quot;: &quot;https://authproof.dev/schemas/action-log-entry-1.0.json&quot;,\n     &quot;title&quot;: &quot;ActionLogEntry&quot;,\n     &quot;type&quot;: &quot;object&quot;,\n     &quot;required&quot;: [\n       &quot;entryId&quot;,\n       &quot;receiptHash&quot;,\n       &quot;operation&quot;,\n       &quot;resource&quot;,\n       &quot;timestamp&quot;,\n       &quot;previousEntryHash&quot;,\n\n<span>Nelson                  Expires 15 December 2026               [Page 72]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n       &quot;entryHash&quot;\n     ],\n     &quot;properties&quot;: {\n       &quot;entryId&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;description&quot;: &quot;Unique identifier for this log entry.&quot;\n       },\n       &quot;receiptHash&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;description&quot;: &quot;SHA-256 hash of the delegation receipt\n                         that authorized this action, formatted\n                         as sha256:&lt;hex&gt;.&quot;,\n         &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n       },\n       &quot;operation&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;description&quot;: &quot;The operation that was executed.&quot;\n       },\n       &quot;resource&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;description&quot;: &quot;The resource that was accessed.&quot;\n       },\n       &quot;timestamp&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;format&quot;: &quot;date-time&quot;,\n         &quot;description&quot;: &quot;RFC 3161 trusted timestamp of this\n                         log entry.&quot;\n       },\n       &quot;previousEntryHash&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;description&quot;: &quot;SHA-256 hash of the previous log entry.\n                         The first entry in a log uses a\n                         well-known genesis hash.&quot;,\n         &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n       },\n       &quot;entryHash&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;description&quot;: &quot;SHA-256 hash of this entry&#x27;s canonical\n                         serialization excluding entryHash.&quot;,\n         &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n       },\n       &quot;decision&quot;: {\n         &quot;type&quot;: &quot;string&quot;,\n         &quot;description&quot;: &quot;The verification decision for this\n                         action.&quot;,\n         &quot;enum&quot;: [&quot;ALLOW&quot;, &quot;REQUIRE_APPROVAL&quot;, &quot;BLOCK&quot;]\n       },\n       &quot;riskScore&quot;: {\n\n<span>Nelson                  Expires 15 December 2026               [Page 73]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n         &quot;type&quot;: &quot;number&quot;,\n         &quot;description&quot;: &quot;OPTIONAL. Session risk score at the\n                         time of this action.&quot;,\n         &quot;minimum&quot;: 0,\n         &quot;maximum&quot;: 100\n       }\n     }\n   }\n\nA.3.  Session State Schema\n\n   The following JSON Schema defines the structure of a Session State\n   object as specified in Section 9.\n\n{\n  &quot;$schema&quot;: &quot;http://json-schema.org/draft-07/schema#&quot;,\n  &quot;$id&quot;: &quot;https://authproof.dev/schemas/session-state-1.0.json&quot;,\n  &quot;title&quot;: &quot;SessionState&quot;,\n  &quot;type&quot;: &quot;object&quot;,\n  &quot;required&quot;: [\n    &quot;sessionId&quot;,\n    &quot;receiptHash&quot;,\n    &quot;trustScore&quot;,\n    &quot;status&quot;,\n    &quot;startedAt&quot;,\n    &quot;actionCount&quot;\n  ],\n  &quot;properties&quot;: {\n    &quot;sessionId&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Unique session identifier.&quot;\n    },\n    &quot;receiptHash&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;SHA-256 hash of the delegation receipt\n                      that initiated this session.&quot;,\n      &quot;pattern&quot;: &quot;^sha256:[0-9a-f]{64}$&quot;\n    },\n    &quot;trustScore&quot;: {\n      &quot;type&quot;: &quot;number&quot;,\n      &quot;description&quot;: &quot;Current session trust score. Starts at\n                      100 and decays on anomaly detection.&quot;,\n      &quot;minimum&quot;: 0,\n      &quot;maximum&quot;: 100\n    },\n    &quot;status&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Current session status.&quot;,\n\n<span>Nelson                  Expires 15 December 2026               [Page 74]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n      &quot;enum&quot;: [&quot;ACTIVE&quot;, &quot;DEGRADED&quot;, &quot;SUSPENDED&quot;]\n    },\n    &quot;startedAt&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;format&quot;: &quot;date-time&quot;,\n      &quot;description&quot;: &quot;ISO 8601 datetime at which this session\n                      was initiated.&quot;\n    },\n    &quot;lastActionAt&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;format&quot;: &quot;date-time&quot;,\n      &quot;description&quot;: &quot;ISO 8601 datetime of the most recent\n                      action in this session.&quot;\n    },\n    &quot;actionCount&quot;: {\n      &quot;type&quot;: &quot;integer&quot;,\n      &quot;description&quot;: &quot;Total number of actions evaluated in\n                      this session.&quot;,\n      &quot;minimum&quot;: 0\n    },\n    &quot;anomalyCount&quot;: {\n      &quot;type&quot;: &quot;integer&quot;,\n      &quot;description&quot;: &quot;Total number of anomalies detected in\n                      this session.&quot;,\n      &quot;minimum&quot;: 0\n    },\n    &quot;sensitivityLevel&quot;: {\n      &quot;type&quot;: &quot;string&quot;,\n      &quot;description&quot;: &quot;Highest sensitivity level detected in\n                      this session.&quot;,\n      &quot;enum&quot;: [&quot;PUBLIC&quot;, &quot;INTERNAL&quot;, &quot;CONFIDENTIAL&quot;,\n               &quot;RESTRICTED&quot;]\n    },\n    &quot;maxLifetimeSeconds&quot;: {\n      &quot;type&quot;: &quot;integer&quot;,\n      &quot;description&quot;: &quot;Maximum session lifetime in seconds.\n                      When elapsed time since startedAt exceeds\n                      this value, the session MUST be terminated\n                      and reauthorization required.  Default is\n                      90000 (25 hours).&quot;,\n      &quot;minimum&quot;: 1,\n      &quot;default&quot;: 90000\n    },\n    &quot;tauSession&quot;: {\n      &quot;type&quot;: &quot;number&quot;,\n      &quot;description&quot;: &quot;Session anomaly capacity. Initialized to sessionCapacity (default 100) and decremented by anomaly weight on each detection event. A verifier MUST deny actions when tauSession falls at or below tauMin (default 10).&quot;,\n      &quot;default&quot;: 100\n    },\n\n<span>Nelson                  Expires 15 December 2026               [Page 75]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n    &quot;cumulativeAnomalyMass&quot;: {\n      &quot;type&quot;: &quot;number&quot;,\n      &quot;description&quot;: &quot;Running sum of anomaly weights observed\n                      during the session. MUST be initialized to\n                      0.0 and incremented by the anomaly weight\n                      on each detection event.&quot;,\n      &quot;default&quot;: 0.0\n    },\n    &quot;passivePressureRate&quot;: {\n      &quot;type&quot;: &quot;number&quot;,\n      &quot;description&quot;: &quot;Rate at which ambient environmental signals\n                      contribute to session risk without discrete\n                      anomaly events. MUST be initialized to 0.0.&quot;,\n      &quot;default&quot;: 0.0\n    }\n  }\n}\n\n<span>Appendix B.  Example JSON Objects</span>\n\nB.1.  Example DelegationReceipt\n\n   The following is a complete example of a Delegation Receipt JSON\n   object with realistic but fictional values:\n\n<span>Nelson                  Expires 15 December 2026               [Page 76]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n{\n  &quot;receiptId&quot;: &quot;rec_a3f8c2d1e9b047560f1234567890abcd&quot;,\n  &quot;schemaVersion&quot;: &quot;1.0&quot;,\n  &quot;timeWindow&quot;: {\n    &quot;notBefore&quot;: &quot;2026-05-21T00:00:00Z&quot;,\n    &quot;notAfter&quot;:  &quot;2026-05-22T00:00:00Z&quot;\n  },\n  &quot;publicKey&quot;: {\n    &quot;kty&quot;: &quot;OKP&quot;,\n    &quot;crv&quot;: &quot;Ed25519&quot;,\n    &quot;x&quot;: &quot;PLACEHOLDER_BASE64URL_ED25519_PUBLIC_KEY&quot;\n  },\n  &quot;scope&quot;: {\n    &quot;allowedActions&quot;: [\n      { &quot;operation&quot;: &quot;read&quot;,  &quot;resource&quot;: &quot;email&quot; },\n      { &quot;operation&quot;: &quot;write&quot;, &quot;resource&quot;: &quot;calendar&quot; }\n    ],\n    &quot;deniedActions&quot;: [\n      { &quot;operation&quot;: &quot;delete&quot;, &quot;resource&quot;: &quot;*&quot; },\n      { &quot;operation&quot;: &quot;execute&quot;, &quot;resource&quot;: &quot;*&quot; }\n    ]\n  },\n  &quot;boundaries&quot;: [\n    &quot;deny:write:*&quot;,\n    &quot;deny:delete:*&quot;,\n    &quot;deny:execute:*&quot;\n  ],\n  &quot;operatorInstructionsHash&quot;:\n    &quot;sha256:e10dd1f5de5b07fa9f9d32fa13371fefa84c5dc31ae8382cfc7dbaeea0dcd2f9&quot;,\n  &quot;operatorInstructions&quot;: &quot;Summarize unread emails and add meeting summaries to calendar.&quot;,\n  &quot;canonicalPayload&quot;: &quot;PLACEHOLDER_BASE64URL_CANONICAL_PAYLOAD&quot;,\n  &quot;signature&quot;:        &quot;PLACEHOLDER_BASE64URL_ECDSA_SIGNATURE&quot;\n}\n\nB.2.  Example Scope Discovery Output\n\n   The following is an example JSON response from the Scope Discovery\n   Protocol after a sandboxed observation session:\n\n<span>Nelson                  Expires 15 December 2026               [Page 77]</span>\n<span>Internet-Draft          Agent Delegation Receipts              June 2026</span>\n\n   {\n     &quot;agentId&quot;: &quot;agent_email-summarizer-v2&quot;,\n     &quot;supportedActions&quot;: [\n       { &quot;operation&quot;: &quot;read&quot;,  &quot;resource&quot;: &quot;email&quot; },\n       { &quot;operation&quot;: &quot;write&quot;, &quot;resource&quot;: &quot;calendar&quot; }\n     ],\n     &quot;boundaries&quot;: [\n       &quot;deny:delete:*&quot;,\n       &quot;deny:execute:*&quot;,\n       &quot;deny:write:email&quot;\n     ],\n     &quot;riskFlags&quot;: [],\n     &quot;discoveryTimestamp&quot;: &quot;2026-05-21T10:30:00Z&quot;,\n     &quot;observationCount&quot;: 47,\n     &quot;abortedByTimeout&quot;: false\n   }\n\n<span>Acknowledgements</span>\n\n   The authors thank the IETF WIMSE, OAuth, and SCITT working groups for\n   their work on workload identity, token exchange, and supply chain\n   integrity, which informed the design of this protocol.\n\n   The formal analysis of session state properties in this document\n   benefited from review and guidance by Maksim Barziankou.  The\n   treatment of structural burden, viability budgets, and admissibility\n   predicates in Section 9 and Section 11 draws on primitives formalized\n   in Navigational Cybernetics 2.5 [NC2.5].\n\n<span>Author&#x27;s Address</span>\n\n   Ryan Nelson\n   Authproof\n   Clinton, Oklahoma\n   United States of America\n   Email: ryan@authproof.dev\n   URI:   https://authproof.dev\n\n<span>Nelson                  Expires 15 December 2026               [Page 78]</span>\n</pre>\n                </div>\n            </div>\n            \n        \n    \n                    \n                </div>\n            </div>\n        </main>\n        \n            <footer class=\"col-md-12 col-sm-12 border-top mt-5 py-5 bg-light-subtle text-center position-sticky\">\n                <a href=\"https://www.ietf.org/\" class=\"p-3\">IETF</a>\n                <a href=\"https://www.ietf.org/iesg/\" class=\"p-3\">IESG</a>\n                <a href=\"https://www.iab.org/\" class=\"p-3\">IAB</a>\n                <a href=\"https://www.irtf.org/\" class=\"p-3\">IRTF</a>\n                <a href=\"https://www.ietf.org/llc/\" class=\"p-3 text-nowrap\">IETF LLC</a>\n                <a href=\"https://trustee.ietf.org/\" class=\"p-3 text-nowrap\">IETF Trust</a>\n                <a href=\"https://www.rfc-editor.org/\" class=\"p-3 text-nowrap\">RFC Editor</a>\n                <a href=\"https://www.iana.org/\" class=\"p-3\">IANA</a>\n                <a href=\"https://www.ietf.org/privacy-statement/\" class=\"p-3 text-nowrap\">Privacy Statement</a>\n                <div class=\"small text-body-secondary py-3\">\n                    \n                        <a class=\"mx-2\" href=\"/release/about\">About IETF Datatracker</a>\n                        <span class=\"mx-2\">\n                            \n                                <a href=\"https://github.com/ietf-tools/datatracker/releases/tag/12.69.0\">\n                            \n                            Version 12.69.0\n                            (release - 3cce873)\n                            \n                                </a>\n                            \n                        </span>\n                    \n                    <a class=\"mx-2\" href=\"https://status.ietf.org\" target=\"_blank\">System Status</a>\n                    <span class=\"mx-2 text-danger\">\n                        <i class=\"bi bi-bug\"></i>\n                        Report a bug:\n                        <a class=\"text-reset\" target=\"_blank\" href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">GitHub</a>\n                        \n                            <a class=\"text-reset\" href=\"mailto:tools-help@ietf.org\">Email</a>\n                        \n                    </span>\n                    \n                </div>\n            </footer>\n        \n        \n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/d3.js\">\n        </script>\n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/document_timeline.js\">\n        </script>\n    \n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/select2.js\"></script>\n        <script src=\"https://static.ietf.org/dt/12.69.0/ietf/js/navbar-doc-search.js\"></script>\n      \n<script>\n  var _paq = window._paq || [];\n  \n  _paq.push(['disableCookies']);\n  _paq.push(['trackPageView']);\n  _paq.push(['enableLinkTracking']);\n  (function() {\n    var u=\"//analytics.ietf.org/\";\n    _paq.push(['setTrackerUrl', u+'matomo.php']);\n    _paq.push(['setSiteId', 7]);\n    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];\n    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);\n  })();\n</script>\n<noscript><p><img src=\"//analytics.ietf.org/matomo.php?idsite=7\" style=\"border:0;\" alt=\"\" /></p></noscript>\n\n    <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a2369b019a0ded3a',t:'MTc4NTQzODAxOA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>\n</html>\n","snapshot_chars":230001,"live_check":"changed"},{"url":"https://microsoft.github.io/agent-governance-toolkit/proposals/verifiable-compliance-receipts/","committed_hash":"sha256:d0198f3250c4a62edc58743d1599b5738ba6490871b9ee54561d5527d703a3dd","committed_hash_short":"sha256:d0198f32…d703a3dd","mime_type":"text/html","committed_at":"2026-07-30T19:00:19.227528+00:00","content_snapshot":"<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content=\"width=device-width,initial-scale=1\"><meta name=description content=\"Governance, trust, identity, and compliance for AI agents\"><link href=https://microsoft.github.io/agent-governance-toolkit/proposals/verifiable-compliance-receipts/ rel=canonical><link rel=alternate href=../../ hreflang=en><link rel=alternate href=../../i18n/README.ja/ hreflang=ja><link rel=alternate href=../../i18n/README.ko/ hreflang=ko><link rel=alternate href=../../i18n/README.zh-CN/ hreflang=zh-Hans><link rel=alternate href=../../i18n/README.zh-TW/ hreflang=zh-Hant><link rel=icon href=../../assets/agent-governance-toolkit.svg><meta name=generator content=\"mkdocs-1.6.1, mkdocs-material-9.7.6\"><title>Proposal: Independently Verifiable Compliance Receipts - Agent Governance Toolkit</title><link rel=stylesheet href=../../assets/stylesheets/main.484c7ddc.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.ab4e12ef.min.css><link rel=stylesheet href=../../stylesheets/mslearn.css><script>__md_scope=new URL(\"../..\",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+\".\"+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+\".\"+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=custom data-md-color-accent=custom> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#proposal-independently-verifiable-compliance-receipts class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=\"md-header md-header--shadow md-header--lifted\" data-md-component=header> <nav class=\"md-header__inner md-grid\" aria-label=Header> <a href=../.. title=\"Agent Governance Toolkit\" class=\"md-header__button md-logo\" aria-label=\"Agent Governance Toolkit\" data-md-component=logo> <img src=../../assets/agent-governance-toolkit.svg alt=logo> </a> <label class=\"md-header__button md-icon\" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z\"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Agent Governance Toolkit </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Proposal: Independently Verifiable Compliance Receipts </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media data-md-color-scheme=default data-md-color-primary=custom data-md-color-accent=custom aria-label=\"Switch to dark mode\" type=radio name=__palette id=__palette_0> <label class=\"md-header__button md-icon\" title=\"Switch to dark mode\" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z\"/></svg> </label> <input class=md-option data-md-color-media data-md-color-scheme=slate data-md-color-primary=custom data-md-color-accent=custom aria-label=\"Switch to light mode\" type=radio name=__palette id=__palette_1> <label class=\"md-header__button md-icon\" title=\"Switch to light mode\" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z\"/></svg> </label> </form> <script>var palette=__md_get(\"__palette\");if(palette&&palette.color){if(\"(prefers-color-scheme)\"===palette.color.media){var media=matchMedia(\"(prefers-color-scheme: light)\"),input=document.querySelector(media.matches?\"[data-md-color-media='(prefers-color-scheme: light)']\":\"[data-md-color-media='(prefers-color-scheme: dark)']\");palette.color.media=input.getAttribute(\"data-md-color-media\"),palette.color.scheme=input.getAttribute(\"data-md-color-scheme\"),palette.color.primary=input.getAttribute(\"data-md-color-primary\"),palette.color.accent=input.getAttribute(\"data-md-color-accent\")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute(\"data-md-color-\"+key,value)}</script> <div class=md-header__option> <div class=md-select> <button class=\"md-header__button md-icon\" aria-label=\"Select language\"> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z\"/></svg> </button> <div class=md-select__inner> <ul class=md-select__list> <li class=md-select__item> <a href=../../ hreflang=en class=md-select__link> English </a> </li> <li class=md-select__item> <a href=../../i18n/README.ja/ hreflang=ja class=md-select__link> 日本語 </a> </li> <li class=md-select__item> <a href=../../i18n/README.ko/ hreflang=ko class=md-select__link> 한국어 </a> </li> <li class=md-select__item> <a href=../../i18n/README.zh-CN/ hreflang=zh-Hans class=md-select__link> 简体中文 </a> </li> <li class=md-select__item> <a href=../../i18n/README.zh-TW/ hreflang=zh-Hant class=md-select__link> 繁體中文 </a> </li> </ul> </div> </div> </div> <label class=\"md-header__button md-icon\" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5\"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class=\"md-search__icon md-icon\" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5\"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z\"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class=\"md-search__icon md-icon\" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/microsoft/agent-governance-toolkit title=\"Go to repository\" class=md-source data-md-component=source> <div class=\"md-source__icon md-icon\"> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 512 512\"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d=\"M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2\"/></svg> </div> <div class=md-source__repository> microsoft/agent-governance-toolkit </div> </a> </div> </nav> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../quickstart/ class=md-tabs__link> Getting Started </a> </li> <li class=md-tabs__item> <a href=../../packages/ class=md-tabs__link> Packages </a> </li> <li class=md-tabs__item> <a href=../../skills/ class=md-tabs__link> Agent Skills </a> </li> <li class=md-tabs__item> <a href=../../tutorials/ class=md-tabs__link> Tutorials </a> </li> <li class=md-tabs__item> <a href=../../deployment/ class=md-tabs__link> Deployment </a> </li> <li class=md-tabs__item> <a href=../../security/ class=md-tabs__link> Security </a> </li> <li class=md-tabs__item> <a href=../../compliance/ class=md-tabs__link> Compliance </a> </li> <li class=md-tabs__item> <a href=../../conformance/ class=md-tabs__link> Conformance </a> </li> <li class=md-tabs__item> <a href=../../studio/engine-api-contract/ class=md-tabs__link> Studio </a> </li> <li class=md-tabs__item> <a href=../../specs/AGENTMESH-IDENTITY-TRUST-1.0/ class=md-tabs__link> Specifications </a> </li> <li class=md-tabs__item> <a href=../../adr/ class=md-tabs__link> Architecture Decisions </a> </li> <li class=md-tabs__item> <a href=../../reference/benchmarks/ class=md-tabs__link> Reference </a> </li> </ul> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class=\"md-main__inner md-grid\"> <div class=\"md-sidebar md-sidebar--primary\" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class=\"md-nav md-nav--primary md-nav--lifted\" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title=\"Agent Governance Toolkit\" class=\"md-nav__button md-logo\" aria-label=\"Agent Governance Toolkit\" data-md-component=logo> <img src=../../assets/agent-governance-toolkit.svg alt=logo> </a> Agent Governance Toolkit </label> <div class=md-nav__source> <a href=https://github.com/microsoft/agent-governance-toolkit title=\"Go to repository\" class=md-source data-md-component=source> <div class=\"md-source__icon md-icon\"> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 512 512\"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d=\"M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2\"/></svg> </div> <div class=md-source__repository> microsoft/agent-governance-toolkit </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../.. class=md-nav__link> <span class=md-ellipsis> Home </span> </a> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Getting Started </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class=\"md-nav__icon md-icon\"></span> Getting Started </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../quickstart/ class=md-nav__link> <span class=md-ellipsis> Quick Start </span> </a> </li> <li class=md-nav__item> <a href=../../ARCHITECTURE/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../../GLOSSARY/ class=md-nav__link> <span class=md-ellipsis> Glossary </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_3> <label class=md-nav__link for=__nav_3 id=__nav_3_label tabindex=0> <span class=md-ellipsis> Packages </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class=\"md-nav__icon md-icon\"></span> Packages </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../packages/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-os/ class=md-nav__link> <span class=md-ellipsis> Agent OS </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-mesh/ class=md-nav__link> <span class=md-ellipsis> Agent Mesh </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-runtime/ class=md-nav__link> <span class=md-ellipsis> Agent Runtime </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-sre/ class=md-nav__link> <span class=md-ellipsis> Agent SRE </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-compliance/ class=md-nav__link> <span class=md-ellipsis> Agent Compliance </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-marketplace/ class=md-nav__link> <span class=md-ellipsis> Agent Marketplace </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-lightning/ class=md-nav__link> <span class=md-ellipsis> Agent Lightning </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-hypervisor/ class=md-nav__link> <span class=md-ellipsis> Agent Hypervisor </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-control-specification/ class=md-nav__link> <span class=md-ellipsis> Agent Control Specification </span> </a> </li> <li class=md-nav__item> <a href=../../packages/antigravity-cli-governance/ class=md-nav__link> <span class=md-ellipsis> Antigravity CLI governance package </span> </a> </li> <li class=md-nav__item> <a href=../../packages/opencode-governance/ class=md-nav__link> <span class=md-ellipsis> OpenCode CLI governance package </span> </a> </li> <li class=md-nav__item> <a href=../../packages/dotnet-sdk/ class=md-nav__link> <span class=md-ellipsis> .NET package </span> </a> </li> <li class=md-nav__item> <a href=../../packages/agent-os-vscode/ class=md-nav__link> <span class=md-ellipsis> VS Code Extension </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> Agent Skills </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class=\"md-nav__icon md-icon\"></span> Agent Skills </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../skills/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../../skills/agt-policy-authoring/SKILL/ class=md-nav__link> <span class=md-ellipsis> AGT policy authoring </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_5> <label class=md-nav__link for=__nav_5 id=__nav_5_label tabindex=0> <span class=md-ellipsis> Tutorials </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class=\"md-nav__icon md-icon\"></span> Tutorials </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../tutorials/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/02-trust-and-identity/ class=md-nav__link> <span class=md-ellipsis> Trust & Identity </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/03-framework-integrations/ class=md-nav__link> <span class=md-ellipsis> Framework Integrations </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/04-audit-and-compliance/ class=md-nav__link> <span class=md-ellipsis> Audit & Compliance </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/05-agent-reliability/ class=md-nav__link> <span class=md-ellipsis> Agent Reliability </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/06-execution-sandboxing/ class=md-nav__link> <span class=md-ellipsis> Execution Sandboxing </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/07-mcp-security-gateway/ class=md-nav__link> <span class=md-ellipsis> MCP Security Gateway </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/55-agent-control-specification/ class=md-nav__link> <span class=md-ellipsis> Agent Control Specification </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/09-prompt-injection-detection/ class=md-nav__link> <span class=md-ellipsis> Prompt Injection Detection </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/10-plugin-marketplace/ class=md-nav__link> <span class=md-ellipsis> Plugin Marketplace </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/11-saga-orchestration/ class=md-nav__link> <span class=md-ellipsis> Saga Orchestration </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/13-observability-and-tracing/ class=md-nav__link> <span class=md-ellipsis> Observability & Tracing </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/14-kill-switch-and-rate-limiting/ class=md-nav__link> <span class=md-ellipsis> Kill Switch & Rate Limiting </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/15-rl-training-governance/ class=md-nav__link> <span class=md-ellipsis> RL Training Governance </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/16-protocol-bridges/ class=md-nav__link> <span class=md-ellipsis> Protocol Bridges </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/17-advanced-trust-and-behavior/ class=md-nav__link> <span class=md-ellipsis> Advanced Trust </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/18-compliance-verification/ class=md-nav__link> <span class=md-ellipsis> Compliance Verification </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/19-dotnet-sdk/ class=md-nav__link> <span class=md-ellipsis> .NET package </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/42-csharp-mcp-extension/ class=md-nav__link> <span class=md-ellipsis> C# MCP extension </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/20-typescript-sdk/ class=md-nav__link> <span class=md-ellipsis> TypeScript package </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/21-rust-sdk/ class=md-nav__link> <span class=md-ellipsis> Rust crate </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/22-go-sdk/ class=md-nav__link> <span class=md-ellipsis> Go module </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/23-delegation-chains/ class=md-nav__link> <span class=md-ellipsis> Delegation Chains </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/24-cost-and-token-budgets/ class=md-nav__link> <span class=md-ellipsis> Cost & Token Budgets </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/25-security-hardening/ class=md-nav__link> <span class=md-ellipsis> Security Hardening </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/26-sbom-and-signing/ class=md-nav__link> <span class=md-ellipsis> SBOM & Signing </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/27-mcp-scan-cli/ class=md-nav__link> <span class=md-ellipsis> MCP Scan CLI </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/28-build-custom-integration/ class=md-nav__link> <span class=md-ellipsis> Build Custom Integration </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/29-agent-discovery/ class=md-nav__link> <span class=md-ellipsis> Agent Discovery </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/30-agent-lifecycle/ class=md-nav__link> <span class=md-ellipsis> Agent Lifecycle </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/31-entra-agent-id-bridge/ class=md-nav__link> <span class=md-ellipsis> Entra Agent ID Bridge </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/32-e2e-encrypted-messaging/ class=md-nav__link> <span class=md-ellipsis> E2E Encrypted Messaging </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/33-offline-verifiable-receipts/ class=md-nav__link> <span class=md-ellipsis> Offline Verifiable Receipts </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/34-maf-integration/ class=md-nav__link> <span class=md-ellipsis> MAF Integration </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/52-antigravity-cli-governance/ class=md-nav__link> <span class=md-ellipsis> Antigravity CLI Governance </span> </a> </li> <li class=md-nav__item> <a href=../../tutorials/54-opencode-cli-governance/ class=md-nav__link> <span class=md-ellipsis> OpenCode CLI Governance </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_6> <label class=md-nav__link for=__nav_6 id=__nav_6_label tabindex=0> <span class=md-ellipsis> Deployment </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_6_label aria-expanded=false> <label class=md-nav__title for=__nav_6> <span class=\"md-nav__icon md-icon\"></span> Deployment </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../deployment/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../../deployment/azure-container-apps/ class=md-nav__link> <span class=md-ellipsis> Azure Container Apps </span> </a> </li> <li class=md-nav__item> <a href=../../deployment/azure-foundry-agent-service/ class=md-nav__link> <span class=md-ellipsis> Azure Foundry Agent Service </span> </a> </li> <li class=md-nav__item> <a href=../../deployment/aws-ecs/ class=md-nav__link> <span class=md-ellipsis> AWS ECS / Fargate </span> </a> </li> <li class=md-nav__item> <a href=../../deployment/gcp-gke/ class=md-nav__link> <span class=md-ellipsis> Google Cloud GKE </span> </a> </li> <li class=md-nav__item> <a href=../../deployment/openclaw-sidecar/ class=md-nav__link> <span class=md-ellipsis> OpenClaw Sidecar </span> </a> </li> <li class=md-nav__item> <a href=../../deployment/private-endpoints/ class=md-nav__link> <span class=md-ellipsis> Private Endpoints </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_7> <label class=md-nav__link for=__nav_7 id=__nav_7_label tabindex=0> <span class=md-ellipsis> Security </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_7_label aria-expanded=false> <label class=md-nav__title for=__nav_7> <span class=\"md-nav__icon md-icon\"></span> Security </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../security/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../../security/owasp-compliance/ class=md-nav__link> <span class=md-ellipsis> OWASP Compliance </span> </a> </li> <li class=md-nav__item> <a href=../../security/threat-model/ class=md-nav__link> <span class=md-ellipsis> Threat Model </span> </a> </li> <li class=md-nav__item> <a href=../../security/scanning/ class=md-nav__link> <span class=md-ellipsis> Security Scanning </span> </a> </li> <li class=md-nav__item> <a href=../../security/tenant-isolation/ class=md-nav__link> <span class=md-ellipsis> Tenant Isolation </span> </a> </li> <li class=md-nav__item> <a href=../../security/trust-score-calibration/ class=md-nav__link> <span class=md-ellipsis> Trust Score Calibration </span> </a> </li> <li class=md-nav__item> <a href=../../security/audits/ class=md-nav__link> <span class=md-ellipsis> Audits </span> </a> </li> <li class=md-nav__item> <a href=../../security/disclosure/ class=md-nav__link> <span class=md-ellipsis> Reporting a Vulnerability </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_8> <label class=md-nav__link for=__nav_8 id=__nav_8_label tabindex=0> <span class=md-ellipsis> Compliance </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_8_label aria-expanded=false> <label class=md-nav__title for=__nav_8> <span class=\"md-nav__icon md-icon\"></span> Compliance </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../compliance/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/owasp-agentic-top10-architecture/ class=md-nav__link> <span class=md-ellipsis> OWASP ASI 2026 (Reference Architecture) </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/owasp-asi-policy-mapping/ class=md-nav__link> <span class=md-ellipsis> OWASP ASI Policy-Rule Mapping </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/owasp-llm-top10-mapping/ class=md-nav__link> <span class=md-ellipsis> OWASP LLM Top 10 </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/mcp-owasp-top10-mapping/ class=md-nav__link> <span class=md-ellipsis> OWASP MCP Top 10 </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/nsa-mcp-alignment/ class=md-nav__link> <span class=md-ellipsis> NSA MCP Alignment </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/nist-ai-rmf-alignment/ class=md-nav__link> <span class=md-ellipsis> NIST AI RMF Alignment </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/nist-rfi-2026-00206/ class=md-nav__link> <span class=md-ellipsis> NIST RFI 2026-00206 </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/eu-ai-act-checklist/ class=md-nav__link> <span class=md-ellipsis> EU AI Act Checklist </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/soc2-mapping/ class=md-nav__link> <span class=md-ellipsis> SOC 2 Mapping </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/iso-42001-mapping/ class=md-nav__link> <span class=md-ellipsis> ISO/IEC 42001 Mapping </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/cis-controls-v81-mapping/ class=md-nav__link> <span class=md-ellipsis> CIS Controls v8.1 Mapping </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/atf-conformance-assessment/ class=md-nav__link> <span class=md-ellipsis> CSA Agentic Trust Framework </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/fria-template/ class=md-nav__link> <span class=md-ellipsis> FRIA Template </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/impact-assessment-template/ class=md-nav__link> <span class=md-ellipsis> Impact Assessment Template </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/incident-response-workflow/ class=md-nav__link> <span class=md-ellipsis> Incident Response Workflow </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/post-market-monitoring/ class=md-nav__link> <span class=md-ellipsis> Post-Market Monitoring </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/record-retention-policy/ class=md-nav__link> <span class=md-ellipsis> Record Retention Policy </span> </a> </li> <li class=md-nav__item> <a href=../../compliance/data-provenance-model/ class=md-nav__link> <span class=md-ellipsis> Data Provenance Model </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../conformance/ class=md-nav__link> <span class=md-ellipsis> Conformance </span> </a> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_10> <label class=md-nav__link for=__nav_10 id=__nav_10_label tabindex=0> <span class=md-ellipsis> Studio </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_10_label aria-expanded=false> <label class=md-nav__title for=__nav_10> <span class=\"md-nav__icon md-icon\"></span> Studio </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../studio/engine-api-contract/ class=md-nav__link> <span class=md-ellipsis> Engine API Contract </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_11> <label class=md-nav__link for=__nav_11 id=__nav_11_label tabindex=0> <span class=md-ellipsis> Specifications </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_11_label aria-expanded=false> <label class=md-nav__title for=__nav_11> <span class=\"md-nav__icon md-icon\"></span> Specifications </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../specs/AGENTMESH-IDENTITY-TRUST-1.0/ class=md-nav__link> <span class=md-ellipsis> AgentMesh Identity & Trust </span> </a> </li> <li class=md-nav__item> <a href=../../specs/AGENT-HYPERVISOR-EXECUTION-CONTROL-1.0/ class=md-nav__link> <span class=md-ellipsis> Agent Hypervisor Execution Control </span> </a> </li> <li class=md-nav__item> <a href=../../specs/AGENTMESH-TRUST-COORDINATION-1.0/ class=md-nav__link> <span class=md-ellipsis> AgentMesh Trust & Coordination </span> </a> </li> <li class=md-nav__item> <a href=../../specs/AGENTMESH-WIRE-1.0/ class=md-nav__link> <span class=md-ellipsis> AgentMesh Wire Protocol </span> </a> </li> <li class=md-nav__item> <a href=../../specs/AGENT-SRE-GOVERNANCE-1.0/ class=md-nav__link> <span class=md-ellipsis> Agent SRE Governance </span> </a> </li> <li class=md-nav__item> <a href=../../specs/MCP-SECURITY-GATEWAY-1.0/ class=md-nav__link> <span class=md-ellipsis> MCP Security Gateway </span> </a> </li> <li class=md-nav__item> <a href=../../specs/AGENT-LIGHTNING-FAST-PATH-1.0/ class=md-nav__link> <span class=md-ellipsis> Agent Lightning Fast-Path </span> </a> </li> <li class=md-nav__item> <a href=../../specs/AUDIT-COMPLIANCE-1.0/ class=md-nav__link> <span class=md-ellipsis> Audit & Compliance </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_12> <label class=md-nav__link for=__nav_12 id=__nav_12_label tabindex=0> <span class=md-ellipsis> Architecture Decisions </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_12_label aria-expanded=false> <label class=md-nav__title for=__nav_12> <span class=\"md-nav__icon md-icon\"></span> Architecture Decisions </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../adr/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0001-use-ed25519-for-agent-identity/ class=md-nav__link> <span class=md-ellipsis> ADR-0001: Ed25519 for Identity </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0002-use-four-execution-rings-for-runtime-privilege/ class=md-nav__link> <span class=md-ellipsis> ADR-0002: Four Execution Rings </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0003-keep-iatp-handshake-within-200ms/ class=md-nav__link> <span class=md-ellipsis> ADR-0003: IATP Handshake 200ms </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0004-keep-policy-evaluation-deterministic/ class=md-nav__link> <span class=md-ellipsis> ADR-0004: Deterministic Policy </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0005-add-liveness-attestation-to-trust-handshake/ class=md-nav__link> <span class=md-ellipsis> ADR-0005: Liveness Attestation </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0006-constitutional-constraint-layer-as-community-extension/ class=md-nav__link> <span class=md-ellipsis> ADR-0006: Constitutional Constraints </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0007-external-jwks-federation-for-cross-org-identity/ class=md-nav__link> <span class=md-ellipsis> ADR-0007: JWKS Federation </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0008-cross-org-policy-federation/ class=md-nav__link> <span class=md-ellipsis> ADR-0008: Cross-Org Policy Federation </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0009-rfc-9334-rats-architecture-alignment/ class=md-nav__link> <span class=md-ellipsis> ADR-0009: RFC 9334 RATS Alignment </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0010-tee-keystore-sevsnp-attestation/ class=md-nav__link> <span class=md-ellipsis> ADR-0010: TEE Keystore SEV-SNP </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0012-cost-governance-observability-policies/ class=md-nav__link> <span class=md-ellipsis> ADR-0012: Cost Governance </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0013-fail-closed-on-policy-evaluation-errors/ class=md-nav__link> <span class=md-ellipsis> ADR-0013: Fail Closed on Errors </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0015-pluggable-external-policy-backends/ class=md-nav__link> <span class=md-ellipsis> ADR-0015: Pluggable Policy Backends </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0016-trust-ceiling-propagation-for-delegation/ class=md-nav__link> <span class=md-ellipsis> ADR-0016: Trust Ceiling Propagation </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0017-merkle-chain-for-audit-tamper-evidence/ class=md-nav__link> <span class=md-ellipsis> ADR-0017: Merkle Audit Chain </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0018-reconstructible-decision-bom-over-prebuilt/ class=md-nav__link> <span class=md-ellipsis> ADR-0018: Reconstructible Decision BOM </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0019-otel-batchspanprocessor-pattern-for-event-sink/ class=md-nav__link> <span class=md-ellipsis> ADR-0019: OTel Event Sink Pattern </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0020-circuit-breaker-for-event-sink-delivery/ class=md-nav__link> <span class=md-ellipsis> ADR-0020: Circuit Breaker for Sinks </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0021-cloudevents-envelope-for-mesh-audit/ class=md-nav__link> <span class=md-ellipsis> ADR-0021: CloudEvents Envelope </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0022-compliance-framework-auto-mapping/ class=md-nav__link> <span class=md-ellipsis> ADR-0022: Compliance Auto-Mapping </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0023-append-only-delta-engine-for-hypervisor-audit/ class=md-nav__link> <span class=md-ellipsis> ADR-0023: Hypervisor Delta Engine </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0024-rl-training-governance-with-violation-penalties/ class=md-nav__link> <span class=md-ellipsis> ADR-0024: RL Training Governance </span> </a> </li> <li class=md-nav__item> <a href=../../adr/0025-structural-typing-for-sink-and-source-protocols/ class=md-nav__link> <span class=md-ellipsis> ADR-0025: Structural Typing Protocols </span> </a> </li> </ul> </nav> </li> <li class=\"md-nav__item md-nav__item--nested\"> <input class=\"md-nav__toggle md-toggle \" type=checkbox id=__nav_13> <label class=md-nav__link for=__nav_13 id=__nav_13_label tabindex=0> <span class=md-ellipsis> Reference </span> <span class=\"md-nav__icon md-icon\"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_13_label aria-expanded=false> <label class=md-nav__title for=__nav_13> <span class=\"md-nav__icon md-icon\"></span> Reference </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../reference/benchmarks/ class=md-nav__link> <span class=md-ellipsis> Benchmarks </span> </a> </li> <li class=md-nav__item> <a href=../../reference/comparison/ class=md-nav__link> <span class=md-ellipsis> Comparison </span> </a> </li> <li class=md-nav__item> <a href=../../reference/nist-rfi-mapping/ class=md-nav__link> <span class=md-ellipsis> NIST RFI Mapping </span> </a> </li> <li class=md-nav__item> <a href=../../reference/changelog/ class=md-nav__link> <span class=md-ellipsis> Changelog </span> </a> </li> <li class=md-nav__item> <a href=../../reference/contributing/ class=md-nav__link> <span class=md-ellipsis> Contributing </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=\"md-sidebar md-sidebar--secondary\" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class=\"md-nav md-nav--secondary\" aria-label=\"Table of contents\"> <label class=md-nav__title for=__toc> <span class=\"md-nav__icon md-icon\"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#problem class=md-nav__link> <span class=md-ellipsis> Problem </span> </a> </li> <li class=md-nav__item> <a href=#proposed-solution class=md-nav__link> <span class=md-ellipsis> Proposed solution </span> </a> <nav class=md-nav aria-label=\"Proposed solution\"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#receipt-fields class=md-nav__link> <span class=md-ellipsis> Receipt fields </span> </a> </li> <li class=md-nav__item> <a href=#what-each-field-does class=md-nav__link> <span class=md-ellipsis> What each field does </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#verification-model class=md-nav__link> <span class=md-ellipsis> Verification model </span> </a> </li> <li class=md-nav__item> <a href=#how-this-maps-to-agt class=md-nav__link> <span class=md-ellipsis> How this maps to AGT </span> </a> </li> <li class=md-nav__item> <a href=#canonicalization class=md-nav__link> <span class=md-ellipsis> Canonicalization </span> </a> </li> <li class=md-nav__item> <a href=#integration-path class=md-nav__link> <span class=md-ellipsis> Integration path </span> </a> </li> <li class=md-nav__item> <a href=#cross-framework-status class=md-nav__link> <span class=md-ellipsis> Cross-framework status </span> </a> </li> <li class=md-nav__item> <a href=#next-steps class=md-nav__link> <span class=md-ellipsis> Next steps </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class=\"md-content__inner md-typeset\"> <h1 id=proposal-independently-verifiable-compliance-receipts>Proposal: Independently Verifiable Compliance Receipts<a class=headerlink href=#proposal-independently-verifiable-compliance-receipts title=\"Permanent link\">&para;</a></h1> <p><strong>Author:</strong> Arian Gogani (@arian-gogani) <strong>Date:</strong> 2026-04-21 <strong>Status:</strong> Draft <strong>Related issues:</strong> #1249, #787, #1196</p> <h2 id=problem>Problem<a class=headerlink href=#problem title=\"Permanent link\">&para;</a></h2> <p>AGT's audit logger writes append-only hash chains. This gives you ordering guarantees, which is good. But the evidence lives on infrastructure the operator controls. If an auditor wants to verify compliance, they have to trust that nobody modified the chain after the fact.</p> <p>For EU AI Act Art. 12 (enforceable August 2, 2026) and SOC 2 audit scenarios, the question isn't \"did you check?\" It's \"can you prove you checked, and can I verify that proof without trusting you?\"</p> <p>The missing piece: compliance evidence that a third party can verify independently, without access to the operator's infrastructure.</p> <h2 id=proposed-solution>Proposed solution<a class=headerlink href=#proposed-solution title=\"Permanent link\">&para;</a></h2> <p>When agent-compliance runs verification, it emits a signed receipt alongside the compliance grade. The receipt carries enough information for an external verifier to confirm what happened without needing to trust the operator.</p> <h3 id=receipt-fields>Receipt fields<a class=headerlink href=#receipt-fields title=\"Permanent link\">&para;</a></h3> <p>A receipt contains: receiptId (SHA-256 hash), agentDid, timestamp, covenantHash (hash of policy in effect), action details with inputHash, decision (permit/deny), authorizationHash + authorizationSignature (pre-execution), resultHash + resultSignature (post-execution), previousReceiptHash (chain link), and signerKeyId.</p> <h3 id=what-each-field-does>What each field does<a class=headerlink href=#what-each-field-does title=\"Permanent link\">&para;</a></h3> <p>covenantHash: Hash of the policy document in effect. An auditor checks this against the declared policy.</p> <p>authorizationHash + authorizationSignature: Signed before execution. Proves the policy was evaluated before anything ran. Pre-execution commitment.</p> <p>resultHash + resultSignature: Signed after execution. Binds the actual outcome. Post-execution proof.</p> <p>Both signatures use the same Ed25519 key (signerKeyId), so a verifier confirms they came from the same agent process.</p> <p>previousReceiptHash: Links to the previous receipt. Change any receipt and every receipt after it breaks.</p> <p>decision: permit or deny. If deny, the action never executed and the receipt proves the block happened.</p> <h2 id=verification-model>Verification model<a class=headerlink href=#verification-model title=\"Permanent link\">&para;</a></h2> <p>A verifier checks three things: 1. Signature validity. Ed25519 signatures valid against the declared signer key. 2. Chain integrity. Each previousReceiptHash matches the hash of the receipt before it. 3. Policy binding. Each covenantHash matches the expected policy.</p> <p>No access to the operator's infrastructure needed. Signatures and hashes are self-contained.</p> <h2 id=how-this-maps-to-agt>How this maps to AGT<a class=headerlink href=#how-this-maps-to-agt title=\"Permanent link\">&para;</a></h2> <p>agent-compliance produces compliance grades. The receipt emits alongside the grade. The grade says compliant. The receipt proves it.</p> <p>agent-mesh uses Ed25519 DIDs. The receipt uses the same key material. No new crypto needed.</p> <p>Physical AI receipts (#787) can use the same bilateral structure.</p> <h2 id=canonicalization>Canonicalization<a class=headerlink href=#canonicalization title=\"Permanent link\">&para;</a></h2> <p>SHA-256 of RFC 8785 JCS canonical form. Sorted keys, no whitespace, UTF-8.</p> <p>Cross-verified between Nobulex (TypeScript) and AgentLedger (Python). Three test vectors produce byte-identical digests.</p> <h2 id=integration-path>Integration path<a class=headerlink href=#integration-path title=\"Permanent link\">&para;</a></h2> <p>When agt verify runs, it optionally emits a receipt wrapping the compliance grade in a signed envelope.</p> <p>Operators who don't need verifiability keep using AGT as-is. Regulated environments turn on receipts and hand them to auditors.</p> <h2 id=cross-framework-status>Cross-framework status<a class=headerlink href=#cross-framework-status title=\"Permanent link\">&para;</a></h2> <p>This format is discussed in LangChain RFC #35691, AutoGen #7609, CrewAI #5541, NousResearch #487, OpenLineage PR #4480 (Linux Foundation spec), and an interop test with 4 implementations.</p> <h2 id=next-steps>Next steps<a class=headerlink href=#next-steps title=\"Permanent link\">&para;</a></h2> <p>Happy to iterate. If the direction looks right, I can follow up with a concrete implementation PR against agent-compliance.</p> </article> </div> <script>var tabs=__md_get(\"__tabs\");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(\".tabbed-set\")){var labels=set.querySelector(\".tabbed-labels\");for(var tab of tabs)for(var label of labels.getElementsByTagName(\"label\"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith(\"__tabbed_\"))</script> </div> <button type=button class=\"md-top md-icon\" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 24 24\"><path d=\"M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z\"/></svg> Back to top </button> </main> <footer class=md-footer> <div class=\"md-footer-meta md-typeset\"> <div class=\"md-footer-meta__inner md-grid\"> <div class=md-copyright> <div class=md-copyright__highlight> Made responsibly with 💜 by Microsoft </div> </div> <div class=md-social> <a href=https://github.com/microsoft/agent-governance-toolkit target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox=\"0 0 512 512\"><!-- Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d=\"M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2\"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class=\"md-dialog__inner md-typeset\"></div> </div> <script id=__config type=application/json>{\"annotate\": null, \"base\": \"../..\", \"features\": [\"navigation.instant\", \"navigation.tracking\", \"navigation.tabs\", \"navigation.tabs.sticky\", \"navigation.sections\", \"navigation.top\", \"navigation.path\", \"search.suggest\", \"search.highlight\", \"content.code.copy\", \"content.tabs.link\", \"toc.follow\", \"header.autohide\"], \"search\": \"../../assets/javascripts/workers/search.2c215733.min.js\", \"tags\": null, \"translations\": {\"clipboard.copied\": \"Copied to clipboard\", \"clipboard.copy\": \"Copy to clipboard\", \"search.result.more.one\": \"1 more on this page\", \"search.result.more.other\": \"# more on this page\", \"search.result.none\": \"No matching documents\", \"search.result.one\": \"1 matching document\", \"search.result.other\": \"# matching documents\", \"search.result.placeholder\": \"Type to start searching\", \"search.result.term.missing\": \"Missing\", \"select.version\": \"Select version\"}, \"version\": null}</script> <script src=../../assets/javascripts/bundle.79ae519e.min.js></script> <script src=../../javascripts/site.js></script> </body> </html>","snapshot_chars":50545,"live_check":"matches"}]}