<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gilda-wimse-agent-audit-record-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Agent Audit Record">An Audit Record Format for AI Agent Authorization Decisions</title>
    <seriesInfo name="Internet-Draft" value="draft-gilda-wimse-agent-audit-record-00"/>
    <author fullname="Sankalp Gilda">
      <address>
        <email>sankalp.gilda@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="20"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>audit</keyword>
    <keyword>agent</keyword>
    <keyword>attestation</keyword>
    <keyword>tamper-evident</keyword>
    <abstract>

<t>This document defines a record format for AI agent authorization decisions. The format is one in-toto predicate type, signed inside a DSSE envelope. It carries the seven minimum audit fields that the WIMSE AI Identity Management System framework requires, and two properties that make those fields checkable: a canonicalization contract, and both the authorization decision and the observed effect with a derived three-valued agreement between them. That framework places the record format out of scope and takes no IANA action. This document supplies the format. It defines no policy.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-gilda-wimse-agent-audit-record/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Workload Identity in Multi System Environments Working Group mailing list (<eref target="mailto:wimse@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/wimse/"/>.
      </t>
    </note>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines one record format for the audit events that Section 11 of <xref target="AIMS"/> requires, and it defines nothing else. It specifies no policy model, no compliance criteria and no retention rule, and it does not extend or amend <xref target="AIMS"/>.</t>
      <t>The goals are:</t>
      <ul spacing="normal">
        <li>
          <t>to make an audit record from one deployment comparable with one from another;</t>
        </li>
        <li>
          <t>to make "tamper-evident" a property a verifier can test on the bytes it holds;</t>
        </li>
        <li>
          <t>to carry the authorization decision and the observed effect in one signed record, so a disagreement between them is detectable;</t>
        </li>
        <li>
          <t>to give the seven minimum fields of Section 11 of <xref target="AIMS"/> one member each.</t>
        </li>
      </ul>
      <t>Policy belongs to a deployment, and a record format belongs to everyone who has to read the record. Two implementations that each satisfy Section 11 in their own format produce audit trails that cannot be compared, correlated across a service boundary, or checked by a party that trusts neither producer. Section 11 asks for all three.</t>
      <t>Comparable has a narrow meaning here. Two records are comparable when a third party holding both can decide, from the bytes alone, whether they describe the same request, whether their decisions agree, and whether either was enforced.</t>
      <t>The consequence is concrete: two deployments that each hash a request differently cannot join their records on a request digest, so a delegation that crossed between them is reconstructable in neither log.</t>
      <t>Section 11 of <xref target="AIMS"/> is normative about the existence of agent audit records and silent about their form. It requires that "deployments <bcp14>MUST</bcp14> produce durable audit logs covering authorization decisions and subsequent remediations", that "Audit records <bcp14>MUST</bcp14> be tamper-evident and retained according to the security policy of the deployment", and that audit events record seven minimum fields.</t>
      <t>Section 12 then places the policy model and document format out of scope, stating that they are "not recommended as a target for standardization within this specification". Section 13 places compliance criteria out of scope, and Section 16 records no IANA actions. <xref target="rationale"/> sets out the canonicalization contract and the reason the decision and the observed effect belong in one record.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The following terms are used throughout this document. Two of them, <em>observer</em> and <em>decision point</em>, are defined here; the rest are taken from the documents named beside them.</t>
      <dl>
        <dt>Agent, Tool, Service, Resource, LLM:</dt>
        <dd>
          <t>as <xref target="AIMS"/> uses them.</t>
        </dd>
        <dt>Agent identifier:</dt>
        <dd>
          <t>a WIMSE identifier as defined in <xref target="WIMSE-ID"/>.</t>
        </dd>
        <dt>Statement, subject, predicate:</dt>
        <dd>
          <t>as <xref target="IN-TOTO"/> uses them.</t>
        </dd>
        <dt>Observer:</dt>
        <dd>
          <t>the party that produces a record under this document. An observer watches from a layer the agent cannot address. A host-side view of a guest filesystem, a hypervisor-level read of guest state, and kernel-level supervision below the observed process are such layers. An in-process library, a wrapper the agent links, and an importer holding another party's log are not.</t>
        </dd>
        <dt>Decision point:</dt>
        <dd>
          <t>the party that evaluated the authorization request, whatever its architecture.</t>
        </dd>
        <dt>Interval:</dt>
        <dd>
          <t>the period between the before-state and the after-state that one record covers.</t>
        </dd>
        <dt>Tier:</dt>
        <dd>
          <t>the degree to which a record's own members corroborate what it claims about how it was observed. A verifier derives the tier under the rule in <xref target="observation"/> and never reads it from the record.</t>
        </dd>
      </dl>
      <t>Every digest in this document is written as lowercase hexadecimal in the algorithm the record declares in its <tt>hashAlgorithm</tt> member.</t>
    </section>
    <section anchor="audit-record-specification">
      <name>Audit Record Specification</name>
      <t>A record is an in-toto Statement <xref target="IN-TOTO"/> carried in a DSSE envelope <xref target="DSSE"/>. Its <tt>predicateType</tt> is</t>
      <artwork><![CDATA[
=========== NOTE: "\" line wrapping per RFC 8792 ============

https://probityai.github.io/agent-evidence-vectors/predicate/v1/\
agent-audit-record
]]></artwork>
      <t>Sixteen predicate members are defined in <xref target="members"/>. Each of the sixteen is required unless a rule in that section makes it conditional, no member has a default, and a verifier <bcp14>MUST NOT</bcp14> supply one for an absent member (vector <tt>F1</tt>). Two members are conditional on a sibling value, <tt>resource.argumentsDigest</tt> and <tt>correlation.externalAnchor</tt>, and each is specified where it is defined.</t>
      <t>A verifier <bcp14>MUST</bcp14> reject a value outside any closed vocabulary this document defines, and <bcp14>MUST NOT</bcp14> ignore the member (vector <tt>V1</tt>). The closed vocabularies reuse terms registered in <xref target="VOCABULARY"/>.</t>
      <section anchor="canonical">
        <name>Canonical form</name>
        <t>Two implementations derive the same bytes from the same Statement only if they agree on the serialization and on what makes a Statement malformed. Both are fixed below.</t>
        <section anchor="json-profile">
          <name>JSON profile</name>
          <t>Producers and verifiers <bcp14>MUST</bcp14> canonicalize the Statement with <xref target="RFC8785"/>, and the signature covers those bytes and no other serialization (vector <tt>T2</tt>). Producers and verifiers <bcp14>MUST</bcp14> enforce the <xref target="RFC7493"/> I-JSON safe-integer profile: an integer of magnitude at or above 2^53 makes the Statement malformed (vector <tt>T5</tt>).</t>
        </section>
        <section anchor="duplicate-members-and-nesting-depth">
          <name>Duplicate members and nesting depth</name>
          <t>A member name repeated at any depth makes the Statement malformed. A verifier <bcp14>MUST</bcp14> reject such a Statement and <bcp14>MUST NOT</bcp14> retain any one occurrence (vector <tt>T3</tt>). A Statement nested deeper than 128 levels <bcp14>MUST</bcp14> be rejected (vector <tt>T4</tt>).</t>
        </section>
      </section>
      <section anchor="subject">
        <name>Subject convention</name>
        <t>A record carries two subject entries. The first is the request, by digest: its <tt>name</tt> is the correlation identifier and its <tt>sha256</tt> digest is the request digest defined in <xref target="members"/>. The second is the after-state root of the interval the predicate carries, and its <tt>name</tt> is the first entry's <tt>name</tt> with the suffix <tt>/after</tt>.</t>
        <sourcecode type="json"><![CDATA[
"subject": [
  { "name": "urn:example:corr:7f3a",
    "digest": { "sha256": "9f86d081884c7d659a2feaa0c55ad015..." } },
  { "name": "urn:example:corr:7f3a/after",
    "digest": { "sha256": "60303ae22b998861bce3b28f33eec1be..." } }
]
]]></sourcecode>
        <t>A verifier <bcp14>MUST</bcp14> bind on the <tt>digest</tt> map and <bcp14>MUST NOT</bcp14> bind on either <tt>name</tt>. A name is a correlation identifier a producer chooses; a digest is a value a verifier recomputes from the bytes it holds. The names exist so that a reader can tell the two entries apart.</t>
        <t>The second entry <bcp14>MUST</bcp14> be present if and only if the predicate carries an interval (vectors <tt>S1</tt> and <tt>I1r</tt>), and its digest <bcp14>MUST</bcp14> equal the interval's after-state root (vector <tt>S2</tt>).</t>
        <t>A decision that permitted nothing, and a decision that was denied, still carry an interval whose before-state and after-state roots are equal and whose write set is empty (vector <tt>A2</tt>). A consumer therefore reads an absence of effect from the members of a record it holds, and never from a record it does not have.</t>
      </section>
      <section anchor="timestamps">
        <name>Timestamps and correlation</name>
        <t>Every time value in a record <bcp14>MUST</bcp14> be an <xref target="RFC3339"/> date-time. A producer <bcp14>SHOULD</bcp14> express it in UTC with the "Z" offset, so that two records from different deployments sort together without a conversion step. The correlation identifier is the first subject entry's <tt>name</tt>, so one identifier binds the request digest, the interval and the record.</t>
      </section>
      <section anchor="tamper">
        <name>Tamper-evidence</name>
        <t>A record satisfies the tamper-evidence requirement of Section 11 of <xref target="AIMS"/> when all three of the following hold.</t>
        <t>The DSSE pre-authentication encoding covers the <xref target="RFC8785"/> canonical bytes of the whole Statement, and every one of the seven minimum fields is inside that pre-image.</t>
        <artwork><![CDATA[
DSSE PAE = "DSSEv1" SP len("application/vnd.in-toto+json") SP
           "application/vnd.in-toto+json" SP
           len(JCS(statement)) SP JCS(statement)
]]></artwork>
        <t>The request digest, the ordered write chain of the effect, and both <tt>agreement</tt> values are recomputable from other members of the same record. A verifier therefore still refuses a record that the key holder altered and signed again (vector <tt>T1</tt>).</t>
        <t>The canonical form is fixed as in <xref target="canonical"/>, so two verifiers derive identical bytes from identical documents. Any one of the three failing is a refusal.</t>
        <t>This document does not address the retention half of the Section 11 requirement. Retention is a property of a deployment, and a record cannot assert it about itself. A record under this document <bcp14>SHOULD</bcp14> state that in its <tt>doesNotAssert</tt> member, so that a reader need not infer coverage.</t>
      </section>
      <section anchor="mapping">
        <name>Mapping to the seven minimum fields</name>
        <table>
          <name>The seven minimum fields of Section 11 and the members that carry them</name>
          <thead>
            <tr>
              <th align="left">Section 11 field</th>
              <th align="left">Members</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">authenticated agent identifier</td>
              <td align="left">
                <tt>agent.id</tt>, <tt>agent.credentialDigest</tt>, <tt>agent.authentication</tt>, <tt>agent.signers</tt></td>
            </tr>
            <tr>
              <td align="left">delegated subject, when present</td>
              <td align="left">
                <tt>delegation.subject</tt>, <tt>delegation.subjectKind</tt>, <tt>delegation.authorityDigest</tt></td>
            </tr>
            <tr>
              <td align="left">resource or tool being accessed</td>
              <td align="left">
                <tt>resource.kind</tt>, <tt>resource.id</tt>, <tt>resource.binding</tt>, <tt>resource.argumentsDigest</tt></td>
            </tr>
            <tr>
              <td align="left">action requested and authorization decision</td>
              <td align="left">
                <tt>decision</tt> and <tt>effect</tt>, with the derived <tt>agreement</tt></td>
            </tr>
            <tr>
              <td align="left">timestamp and correlation identifier</td>
              <td align="left">
                <tt>correlation</tt> and the interval timestamps</td>
            </tr>
            <tr>
              <td align="left">posture assessment or risk state</td>
              <td align="left">
                <tt>posture</tt>, carrying both vantages and <tt>assessedAt</tt></td>
            </tr>
            <tr>
              <td align="left">remediation or revocation events and cause</td>
              <td align="left">
                <tt>remediation</tt></td>
            </tr>
          </tbody>
        </table>
        <t>Each field also carries an evidence partition in <tt>fieldEvidence</tt>, stating whether the observing substrate covered the value or the producer asserted it. All seven fields can be recorded by an agent about itself. A record that says which ones were is checkable; a record that does not say is not.</t>
        <t>The fourth field pairs an action with a decision, and this format carries <tt>decision</tt>, <tt>effect</tt> and the derived <tt>agreement</tt> together. A record whose decision and effect disagree is well formed, and the disagreement is visible in signed bytes:</t>
        <sourcecode type="json"><![CDATA[
"decision": { "action": "write", "reported": "deny" },
"effect":   {
  "observed": "occurred",
  "writes": [ { "path": "/srv/ledger/settlements.jsonl" } ]
},
"agreement": "disagree"
]]></sourcecode>
        <t>A log that carries the decision alone records that case as a clean denial, because it has no other value to disagree with.</t>
      </section>
      <section anchor="verifying">
        <name>Verifying a record</name>
        <t>A verifier holds a DSSE envelope and reaches a verdict from the bytes inside it. The checks below are the ones this document has already stated, in the order a verifier can apply them without reading a member twice.</t>
        <t>The envelope's signature comes first, over the <xref target="RFC8785"/> canonical bytes of the whole Statement. A record whose signature does not verify is not a record under this document and nothing further is read from it.</t>
        <t>The JSON profile comes second: the safe-integer bound of <xref target="RFC7493"/>, no member name repeated at any depth, and no nesting past 128 levels. Each of the three makes a Statement malformed, so a verifier that finds one of them has nothing further to check.</t>
        <t>Membership comes third. Every one of the sixteen members is present unless a rule in <xref target="members"/> makes it conditional on a sibling value, and every value sits inside the closed vocabulary its member declares.</t>
        <t>The recomputes come last, and a signature cannot supply them. The three that <xref target="tamper"/> requires come first: a verifier derives the request digest from the four members <xref target="members"/> names and compares it with the first subject entry, it replays the write chain from the before-state root and compares the result with the second subject entry, and it derives both agreement values from the members they are functions of.</t>
        <t>A fourth recompute binds the prior commitment rather than the record's content. A verifier recomputes the commitment digest, checks that the commitment precedes the interval, and checks that the commitment key is absent from <tt>agent.signers</tt>.</t>
        <t>The tier follows from those results. A verifier reads the five clauses of <xref target="observation"/> against the members it has just checked and assigns <tt>authoritative</tt> or <tt>voluntary</tt> itself.</t>
        <t>This document requires no particular order and no particular reporting shape. A verifier that stops at the first failure and a verifier that reports every failure are both conformant.</t>
      </section>
    </section>
    <section anchor="members">
      <name>Predicate members</name>
      <sourcecode type="json"><![CDATA[
{
  "recordId": "...",
  "tier": "authoritative",
  "hashAlgorithm": "sha256",
  "agent": {
    "id": "spiffe://prod.example.org/ns/payments/sa/reconciler",
    "credentialDigest": "...",
    "authentication": "wimse-wpt",
    "signers": ["..."]
  },
  "delegation": {
    "subject": "user:alice@example.org",
    "subjectKind": "user",
    "authorityDigest": "..."
  },
  "resource": {
    "kind": "tool",
    "id": "mcp://files/write",
    "binding": "digest-bound",
    "argumentsDigest": "..."
  },
  "decision": {
    "action": "write",
    "requestDigest": "...",
    "reported": "deny",
    "decisionPointId": "pdp://prod.example.org/authz-1",
    "policyDigest": "...",
    "reportedAt": "2026-09-19T11:04:02Z"
  },
  "effect": {
    "observed": "occurred",
    "interval": {
      "beforeRoot": "...",
      "afterRoot": "...",
      "baseResolution": "supplied",
      "openedAt": "2026-09-19T11:04:01Z",
      "sealedAt": "2026-09-19T11:04:06Z"
    },
    "pathScope": ["/srv/ledger/"],
    "writes": [
      {
        "path": "/srv/ledger/settlements.jsonl",
        "preStateDigest": "...",
        "postStateDigest": "...",
        "inScope": true
      }
    ]
  },
  "agreement": "disagree",
  "correlation": {
    "id": "req:7f3a91c4",
    "scope": "cross-party",
    "timeBasis": "beacon-anchored",
    "externalAnchor": { "kind": "rfc3161", "digest": "..." }
  },
  "posture": {
    "reported": "sinkhole",
    "reportedDigest": "...",
    "observed": "allowlist",
    "observedDigest": "...",
    "assessedAt": "2026-09-19T06:00:00Z",
    "agreement": "disagree"
  },
  "remediation": [
    {
      "cause": "session-revoked",
      "signalReceivedAt": "2026-09-19T11:04:07Z",
      "enforcedAt": "2026-09-19T11:04:09Z",
      "enforcement": "session-terminated",
      "postEnforcementEffect": "none",
      "postEnforcementRoot": "..."
    }
  ],
  "observation": {
    "vantage": "below-observed",
    "coverage": { "scopeComplete": true, "gaps": [] },
    "priorCommitment": {
      "committedAt": "2026-09-19T11:03:58Z",
      "witnessNonce": "...",
      "commitmentDigest": "...",
      "keyid": "...",
      "sig": "..."
    }
  },
  "fieldEvidence": {
    "agent": "producer-asserted",
    "correlation": "producer-asserted",
    "decision": "producer-asserted",
    "delegation": "producer-asserted",
    "posture": "substrate-covered",
    "remediation": "substrate-covered",
    "resource": "substrate-covered"
  },
  "doesNotAssert": ["..."],
  "issuedAt": "2026-09-19T11:04:11Z"
}
]]></sourcecode>
      <section anchor="hashalg">
        <name>Record identity and hash algorithm</name>
        <t><tt>recordId</tt> is the producer's identifier for this record. It is opaque to a verifier except where the commitment digest is recomputed, which reads it as one of its four inputs.</t>
        <t><tt>hashAlgorithm</tt> names the algorithm every digest in the record is taken under. One value governs the whole record: the subject digests, the credential, authority, policy and posture digests, the interval roots, the write pre-state and post-state digests, and the commitment digest are all taken under it.</t>
        <t>A record carrying digests in two algorithms is therefore not representable, and that is the point. A verifier comparing two roots has to know they were taken under the same algorithm, and a per-member choice would let a producer choose which comparison a reader could make.</t>
        <t><tt>issuedAt</tt> is the time the producer sealed the record, and it is at or after the interval's <tt>sealedAt</tt> because the record cannot be issued before the interval it describes has closed.</t>
        <t>A verifier that does not implement the declared algorithm cannot recompute anything the record binds. It has no verdict to reach on such a record, and reporting that it could not read one is the honest outcome rather than a refusal on the record's content.</t>
      </section>
      <section anchor="identity-delegation-and-resource">
        <name>Identity, delegation and resource</name>
        <t><tt>agent.id</tt> carries the WIMSE identifier verbatim, and <tt>agent.credentialDigest</tt> the digest of the credential the identifier was read from. <tt>agent.authentication</tt> is the mechanism, over the closed set <tt>wimse-wpt</tt>, <tt>http-message-signature</tt>, <tt>mtls</tt>, <tt>oauth-access-token</tt>, <tt>none</tt>, drawn from Section 9 of <xref target="AIMS"/>. <tt>agent.signers</tt> is the set of key identifiers the agent signs its own records with, as the observer knows them, and it <bcp14>MAY</bcp14> be empty.</t>
        <t><tt>delegation.subjectKind</tt> is one of <tt>user</tt>, <tt>system</tt>, <tt>none</tt>. Field 2 of Section 11 is the only conditional one, so an absent delegated subject is conformant and is spelled <tt>subjectKind</tt> of <tt>none</tt> beside a <tt>subject</tt> of the literal <tt>none</tt>.</t>
        <t>A <tt>subjectKind</tt> of <tt>none</tt> beside any other subject value is malformed and a verifier <bcp14>MUST NOT</bcp14> prefer either member (vector <tt>F2</tt>). <tt>delegation.authorityDigest</tt> is required unconditionally, and a decision taken under no authority carries the digest of the explicit deny-all document.</t>
        <t><tt>resource.kind</tt> is one of <tt>path</tt>, <tt>uri</tt>, <tt>tool</tt>, the three shapes the single category of external endpoints in Section 4 of <xref target="AIMS"/> takes. <tt>resource.binding</tt> of <tt>digest-bound</tt> <bcp14>MUST</bcp14> carry <tt>argumentsDigest</tt>, and <tt>not-bindable</tt> <bcp14>MUST NOT</bcp14> carry it (vector <tt>F3</tt>).</t>
        <t>Where a decision point can canonicalize the arguments of a call, it <bcp14>SHOULD</bcp14> bind them by digest. A tool call whose arguments it cannot canonicalize has nothing to bind, so that call is representable and it cannot reach the strongest tier.</t>
      </section>
      <section anchor="decision-effect-and-agreement">
        <name>Decision, effect and agreement</name>
        <t><tt>decision.reported</tt> is one of <tt>permit</tt>, <tt>deny</tt>, <tt>permit-with-conditions</tt>. <tt>decision.requestDigest</tt> <bcp14>MUST</bcp14> equal the first subject entry's sha256 digest and <bcp14>MUST</bcp14> equal the <xref target="RFC8785"/> digest over exactly the four members <tt>action</tt>, <tt>argumentsDigest</tt>, <tt>resourceId</tt> and <tt>resourceKind</tt> (vector <tt>F4</tt>). Altering the action, the resource or the arguments after signing therefore breaks a recompute even where the signature was applied again.</t>
        <t><tt>effect.observed</tt> is one of <tt>occurred</tt>, <tt>none</tt>. A value of <tt>none</tt> requires the before-state and after-state roots to be equal and the write set to be empty (vector <tt>E1</tt>).</t>
        <t>The ordered write chain <bcp14>MUST</bcp14> reproduce the after-state root from the before-state root (vector <tt>E2</tt>). A <tt>baseResolution</tt> of <tt>empty-tree</tt> <bcp14>MUST</bcp14> carry the empty-tree constant for the declared hash algorithm (vector <tt>E3</tt>).</t>
        <t>A member of <tt>pathScope</tt> <bcp14>MUST NOT</bcp14> contain a glob metacharacter, and a universal scope is the single literal <tt>/</tt> (vector <tt>V2</tt>). A write outside <tt>pathScope</tt> <bcp14>MUST</bcp14> carry <tt>inScope</tt> of <tt>false</tt>, which is derived from the path and never a producer opinion (vector <tt>V3</tt>).</t>
        <t><tt>agreement</tt> is one of <tt>agree</tt>, <tt>disagree</tt>, <tt>one-sided</tt>, and it <bcp14>MUST</bcp14> be derivable from <tt>decision.reported</tt> and <tt>effect.observed</tt> by the table below (vectors <tt>D1</tt> and <tt>D2</tt>). <tt>posture.agreement</tt> <bcp14>MUST</bcp14> be derivable from the two carried postures on the same terms: <tt>agree</tt> when they are equal byte for byte, <tt>disagree</tt> when both are present and unequal (vector <tt>F6</tt>).</t>
        <table>
          <name>Deriving agreement from the reported decision and the observed effect</name>
          <thead>
            <tr>
              <th align="left">decision.reported</th>
              <th align="left">effect.observed</th>
              <th align="left">agreement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>permit</tt> or <tt>permit-with-conditions</tt></td>
              <td align="left">
                <tt>occurred</tt></td>
              <td align="left">
                <tt>agree</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>deny</tt></td>
              <td align="left">
                <tt>none</tt></td>
              <td align="left">
                <tt>agree</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>deny</tt></td>
              <td align="left">
                <tt>occurred</tt></td>
              <td align="left">
                <tt>disagree</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>permit</tt> or <tt>permit-with-conditions</tt></td>
              <td align="left">
                <tt>none</tt></td>
              <td align="left">
                <tt>disagree</tt></td>
            </tr>
          </tbody>
        </table>
        <t>The table produces <tt>agree</tt> and <tt>disagree</tt> only. <tt>one-sided</tt> is in the closed set and this version never produces it, because <tt>decision</tt> and <tt>effect</tt> are both required and neither side can be absent. It is reserved so that a version admitting a record with one side missing does not have to change a closed vocabulary, and a record carrying it under this version is malformed (vector <tt>D2</tt>).</t>
        <t>A verifier <bcp14>MUST NOT</bcp14> reject a record because either agreement value is <tt>disagree</tt> (vector <tt>A3</tt>). A disagreement is the record working, and what it means for admission is a consumer policy decision.</t>
      </section>
      <section anchor="correlation-posture-and-remediation">
        <name>Correlation, posture and remediation</name>
        <t><tt>correlation.scope</tt> is one of <tt>producer</tt>, <tt>cross-party</tt>, and it is required because Section 11 asks systems to "correlate events across Agents, Tools, Services, Resources and LLMs", which a producer-scoped identifier cannot do. A record a producer distributes beyond its own deployment <bcp14>SHOULD</bcp14> carry a scope of <tt>cross-party</tt>.</t>
        <t><tt>correlation.timeBasis</tt> of <tt>beacon-anchored</tt> <bcp14>MUST</bcp14> carry <tt>externalAnchor</tt>, and <tt>asserted</tt> <bcp14>MUST NOT</bcp14> carry it (vector <tt>F5</tt>). <tt>externalAnchor.kind</tt> is one of <tt>rfc3161</tt>, <tt>transparency-log</tt>, <tt>opentimestamps</tt>, of which <xref target="RFC3161"/> and <xref target="RFC9162"/> define the first two. No offline validation rule for an anchor token is defined here, and vector <tt>N1</tt> records both readings a conforming verifier can reach.</t>
        <t><tt>posture.reported</tt> and <tt>posture.observed</tt> are over the closed set <tt>no_network</tt>, <tt>allowlist</tt>, <tt>sinkhole</tt>, <tt>unsafe_bypass_egress</tt>, each with a digest pinning the posture document. <tt>posture.assessedAt</tt> carries the time the assessment was made, which <xref target="rationale"/> gives the reason for. A consumer weighing either posture <bcp14>SHOULD</bcp14> read <tt>assessedAt</tt> beside it.</t>
        <t><tt>remediation</tt> carries one member per event. Its <tt>cause</tt> is one of <tt>session-revoked</tt>, <tt>risk-elevated</tt>, <tt>subject-disabled</tt>, <tt>token-replay-suspected</tt>, <tt>policy-changed</tt>, <tt>operator-action</tt>. Its <tt>enforcement</tt> is one of <tt>access-attenuated</tt>, <tt>session-terminated</tt>, <tt>tokens-discarded</tt>, <tt>privileges-reduced</tt>, <tt>reevaluated</tt>, <tt>not-enforced</tt>. In each member <tt>enforcedAt</tt> <bcp14>MUST</bcp14> be at or after <tt>signalReceivedAt</tt> (vector <tt>F7</tt>).</t>
        <t>A verifier <bcp14>MUST NOT</bcp14> reject a record because <tt>enforcement</tt> is <tt>not-enforced</tt> (vector <tt>A4</tt>). A record carries that value when a remediation signal arrived and enforcement did not follow it.</t>
        <t><tt>postEnforcementEffect</tt> and <tt>postEnforcementRoot</tt> make the Section 11 delay requirement checkable by a third party. A revocation that arrived, was recorded, and was followed by an observed effect is a recorded enforcement failure. This document defines no bound on the delay, because Section 11 carries no unit for "undue", and vector <tt>N2</tt> records that case as indeterminate.</t>
      </section>
      <section anchor="observation">
        <name>Observation and tier</name>
        <t><tt>observation.vantage</tt> is one of <tt>below-observed</tt>, <tt>peer</tt>, <tt>self</tt>. An observer that could not read part of <tt>pathScope</tt> <bcp14>SHOULD</bcp14> name that path in <tt>coverage.gaps</tt>, because the tier recompute below reads the gap list and not the observer's confidence. <tt>observation.priorCommitment</tt> is the observer's commitment, made before the interval opened, to the before-state and to a nonce the observer chose.</t>
        <t>Its <tt>committedAt</tt> <bcp14>MUST</bcp14> be strictly before the interval's <tt>openedAt</tt> (vector <tt>C2</tt>). Its <tt>commitmentDigest</tt> <bcp14>MUST</bcp14> recompute as the <xref target="RFC8785"/> digest over <tt>authorityDigest</tt>, <tt>beforeRoot</tt>, <tt>recordId</tt> and <tt>witnessNonce</tt> (vector <tt>C3</tt>). Its <tt>keyid</tt> <bcp14>MUST NOT</bcp14> appear in <tt>agent.signers</tt> (vector <tt>C1</tt>), and that disjointness is the one byte-pure discriminator between an observer and a self-observing party.</t>
        <t><tt>doesNotAssert</tt> is the negative-scope member the sections above refer to: an array of explicit statements about what this record does not claim. A record under this version <bcp14>SHOULD</bcp14> carry two entries. The first entry records that it makes no claim about retention. The second records that it makes no claim that the reported decision is the decision the policy engine evaluated.</t>
        <t><tt>fieldEvidence</tt> carries exactly the seven keys named in the mapping table, each one of <tt>substrate-covered</tt> or <tt>producer-asserted</tt>. Both terms are reused unchanged from the field-evidence partition registered in <xref target="VOCABULARY"/>, as the four posture values above are reused from its containment-posture terms. A missing key is malformed (vector <tt>FE1</tt>), and no key may declare <tt>substrate-covered</tt> while <tt>vantage</tt> is <tt>self</tt> (vector <tt>FE2</tt>).</t>
        <t><tt>tier</tt> is one of <tt>voluntary</tt>, <tt>authoritative</tt>. A verifier <bcp14>MUST</bcp14> recompute it and <bcp14>MUST NOT</bcp14> take the declared value as the tier. Vectors <tt>TI1</tt> through <tt>TI5</tt> each declare <tt>authoritative</tt> while failing one clause, so a verifier that reads the declared value passes all five.</t>
        <t>A record is <tt>authoritative</tt> if and only if all five of these hold, and <tt>voluntary</tt> otherwise: <tt>vantage</tt> is <tt>below-observed</tt> (vector <tt>TI1</tt>); <tt>priorCommitment</tt> is present and complete (vector <tt>TI2</tt>); <tt>pathScope</tt> is non-empty (vector <tt>TI3</tt>); <tt>coverage.scopeComplete</tt> is true or every gap names a path outside <tt>pathScope</tt> (vector <tt>TI4</tt>); and <tt>resource.binding</tt> is <tt>digest-bound</tt> (vector <tt>TI5</tt>).</t>
        <t>A record declaring <tt>authoritative</tt> that fails a clause is malformed, and a verifier <bcp14>MUST NOT</bcp14> downgrade it to <tt>voluntary</tt> (vector <tt>TI1</tt>). Downgrading would let a producer emit an authoritative-shaped record and rely on the verifier to relabel it.</t>
        <t>The opposite mismatch is well formed. A record declaring <tt>voluntary</tt> while meeting all five clauses is not malformed, and a verifier reads it at the tier the recompute gives. Treating the two directions differently is deliberate: a producer that over-claims is relying on somebody else to correct it, and a producer that under-claims is not.</t>
        <t>A verifier <bcp14>MUST NOT</bcp14> read a <tt>voluntary</tt> record as evidence that its content corresponds to any independently observed fact (vector <tt>A5</tt>).</t>
      </section>
      <section anchor="worked">
        <name>A worked reading of the example</name>
        <t>The record at the head of <xref target="members"/> reports a write that was denied and happened anyway. Each rule above lands on one of its members.</t>
        <t><tt>decision.reported</tt> is <tt>deny</tt> and <tt>effect.observed</tt> is <tt>occurred</tt>. The third row of the agreement table maps that pair to <tt>disagree</tt>, which is the value the record carries, so the derivation holds and vector <tt>D1</tt> does not apply.</t>
        <t><tt>posture.reported</tt> is <tt>sinkhole</tt> and <tt>posture.observed</tt> is <tt>allowlist</tt>. Both are present and they are unequal, so <tt>posture.agreement</tt> derives as <tt>disagree</tt>, which is again the carried value.</t>
        <t>The tier recompute passes all five clauses. <tt>vantage</tt> is <tt>below-observed</tt>; <tt>priorCommitment</tt> carries all five of its own members; <tt>pathScope</tt> holds one entry; <tt>coverage.scopeComplete</tt> is true with no gaps; and <tt>resource.binding</tt> is <tt>digest-bound</tt>. The declared <tt>authoritative</tt> is therefore the tier a verifier derives.</t>
        <t>The ordering checks hold on the timestamps as written. Vector <tt>C2</tt> tests the first: <tt>committedAt</tt> at 11:03:58Z falls strictly before <tt>openedAt</tt> at 11:04:01Z. Vector <tt>F7</tt> tests the second: <tt>enforcedAt</tt> at 11:04:09Z falls two seconds after <tt>signalReceivedAt</tt> at 11:04:07Z.</t>
        <t>The single write lies under <tt>/srv/ledger/</tt>, the one member of <tt>pathScope</tt>, so its <tt>inScope</tt> of true is derived from the path and vector <tt>V3</tt> does not apply. <tt>fieldEvidence</tt> carries all seven keys, so vector <tt>FE1</tt> does not apply, and <tt>vantage</tt> is not <tt>self</tt>, so vector <tt>FE2</tt> does not either.</t>
        <t>What the record says, read whole, is that a write was denied and happened anyway, that the posture the decision point read was not the posture an observer saw, and that a revocation signal was enforced two seconds after it arrived. All three are well formed, and a verifier accepts the record.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>A record is checkable for internal coherence and says nothing about the world outside its own bytes. Where a consumer needs a fact about that world, it has to establish that fact somewhere else.</t>
      <section anchor="the-vantage-claim-is-not-self-proving">
        <name>The vantage claim is not self-proving</name>
        <t>The vantage claim in a record is an assertion about the world, and the record makes it coherent with its own members without making it self-proving. A consumer that requires the vantage to be true <bcp14>MUST</bcp14> anchor the observer's key out of band, exactly as it would anchor any signer. Such a consumer <bcp14>MUST</bcp14> read <tt>authoritative</tt> as coherence with a claimed <tt>observation.vantage</tt>, and never as proof of one (vector <tt>A5</tt>).</t>
      </section>
      <section anchor="a-producer-that-observes-only-itself">
        <name>A producer that observes only itself</name>
        <t>A producer that observes only itself can satisfy every field of this format, and the <tt>observation.priorCommitment</tt> member raises the cost of doing so. It binds the before-state, the authority and the record identifier under the observer's signature before the interval opens. A forgery therefore has to be decided on before the forger knows what it will be lying about.</t>
        <t>It does not reduce the cost to zero, and a producer holding two keys satisfies every clause. That residual is detectable by a key inventory outside the record and by no function of the bytes inside it. A consumer that depends on the vantage <bcp14>SHOULD</bcp14> keep such an inventory.</t>
      </section>
      <section anchor="withheld-rows">
        <name>Withheld rows</name>
        <t>A record can omit a remediation event, or a claimed access that the observer saw, and no function of a Statement detects a row that was never written. No quantity of extra carried material changes that, because extra material is material a withholding producer also declines to carry.</t>
        <t>The <tt>coverage</tt>, <tt>fieldEvidence</tt> and <tt>doesNotAssert</tt> members exist so that a blind spot travels where the observer is honest about it. An observer that knows of a blind spot <bcp14>SHOULD</bcp14> record it in the <tt>doesNotAssert</tt> member. None of these members is a defence against a producer that conceals one.</t>
      </section>
      <section anchor="well-formed-disagreement">
        <name>Well-formed disagreement</name>
        <t>A disagreement between the reported decision and the observed effect is well formed, as is a disagreement between the two postures, and as is a remediation event recording that enforcement did not occur. A verifier <bcp14>MUST</bcp14> accept all three (vectors <tt>A3</tt> and <tt>A4</tt>). A format that refused to represent a failed enforcement would mean that no record ever reports one. This clause prevents that.</t>
      </section>
      <section anchor="revocation-without-a-bound">
        <name>Revocation without a bound</name>
        <t>Section 11 of <xref target="AIMS"/> requires that revoked or downgraded authorization be enforced "without undue delay" and specifies no bound. This document carries <tt>signalReceivedAt</tt> and <tt>enforcedAt</tt>, and defines no bound of its own. A record with an arbitrarily large gap between them is well formed. A consumer <bcp14>SHOULD</bcp14> set a bound on that gap as policy and read a record that exceeds it accordingly.</t>
      </section>
      <section anchor="relationship-to-other-tamper-evidence-mechanisms">
        <name>Relationship to other tamper-evidence mechanisms</name>
        <t>A signature over canonical bytes detects an editor who cannot sign. A trusted timestamp <xref target="RFC3161"/> adds an assertion about when the bytes existed, and an append-only log <xref target="RFC6962"/> <xref target="RFC9162"/> adds an assertion that they were published. This document requires neither, and a deployment <bcp14>MAY</bcp14> carry a record under this format in such a log.</t>
        <t>None of the three detects a producer that signed a false record. The recomputes in <xref target="tamper"/> address that case.</t>
      </section>
      <section anchor="two-implementations-that-both-differ-from-the-canonical-form">
        <name>Two implementations that both differ from the canonical form</name>
        <t><xref target="rationale"/> gives the mechanism by which two implementations can share a serialization that is not <xref target="RFC8785"/>. Neither party can see the failure from inside it. Every signature each of them produces verifies for the other, and the records fail only for a third party that canonicalizes correctly.</t>
        <t>A consumer therefore derives the canonical bytes itself and does not accept a producer's report of them. <xref target="canonical"/> is normative for that reason, and vector <tt>T2</tt> is the member that tests it.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>A record under this document carries an agent identifier, a delegated subject, a resource identifier and a set of paths. The delegated subject in particular may identify a natural person. Deployments <bcp14>SHOULD</bcp14> consider which of these a given consumer needs before distributing a record. The <tt>doesNotAssert</tt> member is the place to record what a distributed record deliberately omits.</t>
      <t>The format binds five documents by digest and carries none of them: the credential, the authority document, the policy, and both posture documents. A consumer that needs their content <bcp14>SHOULD</bcp14> resolve them out of band.</t>
      <t>That separation is deliberate and is the privacy-preserving default, because it lets a record travel to a party entitled to verify the decision without carrying the material the decision was made from. A consumer entitled to the decision receives the digest and resolves the document only if it needs the content.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. The predicate type is a URI under a namespace the author controls and requires no registration to be used, consistent with the in-toto Attestation Framework's treatment of predicate type identifiers <xref target="IN-TOTO"/>.</t>
      <t>A registered identifier would be the alternative. It is not proposed here, because a record carries its predicate type inside the bytes its producer signed. A later revision <bcp14>SHOULD NOT</bcp14> move the URI once records carrying it exist, since moving it invalidates every signature over them.</t>
    </section>
  </middle>
  <back>
<references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="AIMS">
          <front>
            <title>AI Identity Management System</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Jeff Lombardo" initials="J." surname="Lombardo">
              <organization>AWS</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Nick Steele" initials="N." surname="Steele">
              <organization>OpenAI</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="15" month="September" year="2026"/>
            <abstract>
              <t>   This document proposes best practices for authentication and
   authorization of AI agent interactions.  It leverages existing
   standards such as the Workload Identity in Multi-System Environments
   (WIMSE) architecture and OAuth 2.0 family of specifications.  Rather
   than defining new protocols, this document describes how existing and
   widely deployed standards can be applied or extended to establish
   agent authentication and authorization.  By doing so, it aims to
   provide a framework within which to use existing standards, identify
   gaps and guide future standardization efforts for agent
   authentication and authorization.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/>
        </reference>
        <reference anchor="WIMSE-ID">
          <front>
            <title>Workload Identifier</title>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document defines a canonical identifier for workloads, referred
   to as the Workload Identifier.  A Workload Identifier is a URI that
   uniquely identifies a workload within the context of a specific trust
   domain.  This identifier can be embedded in Workload Identity
   Credentials, including X.509 certificates and JWT-based tokens, to
   support authentication, authorization, and policy enforcement across
   diverse systems.  The Workload Identifier format ensures
   interoperability, facilitates secure identity federation, and enables
   consistent identity semantics.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-identifier-03"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC7493">
          <front>
            <title>The I-JSON Message Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2015"/>
            <abstract>
              <t>I-JSON (short for "Internet JSON") is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7493"/>
          <seriesInfo name="DOI" value="10.17487/RFC7493"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="IN-TOTO" target="https://github.com/in-toto/attestation/blob/main/spec/README.md">
          <front>
            <title>in-toto Attestation Framework Specification</title>
            <author>
              <organization>in-toto</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="DSSE" target="https://github.com/secure-systems-lab/dsse">
          <front>
            <title>Dead Simple Signing Envelope</title>
            <author>
              <organization>Secure Systems Lab</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3161">
          <front>
            <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="P. Cain" initials="P." surname="Cain"/>
            <author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
            <author fullname="R. Zuccherato" initials="R." surname="Zuccherato"/>
            <date month="August" year="2001"/>
            <abstract>
              <t>This document describes the format of a request sent to a Time Stamping Authority (TSA) and of the response that is returned. It also establishes several security-relevant requirements for TSA operation, with regards to processing requests to generate responses. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3161"/>
          <seriesInfo name="DOI" value="10.17487/RFC3161"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="VECTORS" target="https://github.com/probityai/agent-evidence-vectors">
          <front>
            <title>Agent evidence conformance vectors</title>
            <author>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="VOCABULARY" target="https://github.com/probityai/agent-evidence-vocabulary">
          <front>
            <title>Agent evidence vocabulary</title>
            <author>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>

<section anchor="rationale">
      <name>Design rationale</name>
      <t>Two requirements of this document are not derivable from Section 11 of <xref target="AIMS"/> on its own: the canonicalization contract, and carrying the observed effect beside the reported decision. Neither is restated normatively here.</t>
      <section anchor="the-canonicalization-contract">
        <name>The canonicalization contract</name>
        <t>The word "tamper-evident" appears once in <xref target="AIMS"/> and is not defined there. Read narrowly it means a record whose alteration is detectable, which a signature provides. Two gaps remain.</t>
        <t>A signature over a serialization is only as good as the agreement on which bytes were signed, and that agreement is a property of a written contract between two implementations; neither one's code establishes it. Two implementations can agree with each other on a canonical form and both differ from <xref target="RFC8785"/>, and no amount of signing or hash-chaining detects that.</t>
        <t>Each verifies its own records and rejects the other's, or worse, accepts a record whose meaning it has silently changed. A canonicalization contract is therefore part of the tamper-evidence requirement; it is not an implementation detail, and <xref target="canonical"/> makes it normative.</t>
        <t>A signature also says nothing about the producer. The party that holds the signing key can alter a record and sign it again, and every signature check still passes.</t>
        <t>Detecting that requires fields whose values are recomputable from other fields in the same record, so that an internally inconsistent record is refusable regardless of who signed it. A hash chain catches an alteration by a party with no signing key; only a recompute catches the key holder, and <xref target="tamper"/> specifies three of them.</t>
      </section>
      <section anchor="the-decision-and-the-observed-effect">
        <name>The decision and the observed effect</name>
        <t>The fourth of the seven minimum fields pairs "action requested and authorization decision". A record carrying only the decision is a self-report: it states what an enforcement point concluded, and a deployment that mis-enforces its own conclusion produces a clean audit trail of the decision it failed to apply. Section 11 asks for enough to "reconstruct agent behavior and authorization context after execution", and behaviour is not reconstructable from a decision.</t>
        <t>This document therefore requires both sides in one record: the decision as reported by the enforcement point, and the effect as observed. It also requires a three-valued <tt>agreement</tt> between them, which a verifier derives from the two values; it is not a claim the record makes. A decision reported as denied beside an effect observed as having occurred is then a refusable inconsistency in signed bytes. Today it is undetectable.</t>
        <t>The same construction applies to the sixth field. Section 8 of <xref target="AIMS"/> defines posture assessment as an evaluation performed at credential provisioning, while the sixth field asks for the posture "influencing the decision".</t>
        <t>A conformant record may therefore carry a posture that was accurate at issuance and inaccurate at decision time, with nothing in the record to say which. Carrying <tt>posture</tt> as the decision point read it, beside the posture as it was observed and its <tt>assessedAt</tt>, makes that difference visible without constraining either value.</t>
      </section>
      <section anchor="why-the-tier-carries-five-clauses">
        <name>Why the tier carries five clauses</name>
        <t>Each clause of the tier recompute closes one route by which a record could claim an observer's vantage while carrying nothing that distinguishes it from a self-report.</t>
        <t><tt>vantage</tt> of <tt>below-observed</tt> is the claim itself, and the four clauses under it make the claim cost something. The prior commitment binds the before-state before the interval opens, so a producer cannot decide after the fact what it saw. A non-empty <tt>pathScope</tt> means the record names the ground it covers. A complete coverage claim, or a gap list naming only paths outside that ground, means the record does not quietly exclude the interesting part. And a digest-bound resource means the arguments of the call are pinned.</t>
        <t>Dropping any one of them admits a record that carries the authority of the rest while resting on nothing. That is why the corpus in <xref target="vectors"/> carries one reject member per clause.</t>
      </section>
    </section>
    <section anchor="vectors">
      <name>Conformance vectors</name>
      <t>The table below is the conformance corpus for this format. Each row gives a member identifier, the accept member it derives from, its input, and the verdict a conforming verifier reaches. A reject differs from the accept member in its <tt>from</tt> column by one mutation, so refusing every input scores nothing on this corpus.</t>
      <t>An accept member has no parent and its <tt>from</tt> column reads <tt>root</tt>. An indeterminate member has more than one conforming verdict and its row gives each.</t>
      <t>Every row names the rule it tests. Three rules this document adds have no member in the table: the binding on the digest map in <xref target="subject"/>, the <xref target="RFC3339"/> requirement in <xref target="timestamps"/>, and the single hash algorithm of <xref target="hashalg"/>. An implementation <bcp14>SHOULD</bcp14> be run against every member of the corpus before it is described as conforming to this document, and the three rules above are checked by reading them.</t>
      <t>The corpus travels with the predicate schema: the revision of this document that freezes the predicate type URI is the revision that publishes these members in <xref target="VECTORS"/>, in that repository's manifest layout.</t>
      <table>
        <name>The conformance corpus, one member for every normative rule this document adds</name>
        <thead>
          <tr>
            <th align="left">id</th>
            <th align="left">from</th>
            <th align="left">what it is</th>
            <th align="left">expected</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">root</td>
            <td align="left">every member present, <tt>permit</tt> beside <tt>occurred</tt>, all five tier clauses met</td>
            <td align="left">valid</td>
          </tr>
          <tr>
            <td align="left">
              <tt>A2</tt></td>
            <td align="left">root</td>
            <td align="left">
              <tt>deny</tt> beside <tt>none</tt>, equal roots, empty write set</td>
            <td align="left">valid</td>
          </tr>
          <tr>
            <td align="left">
              <tt>A3</tt></td>
            <td align="left">root</td>
            <td align="left">
              <tt>A1</tt> with <tt>deny</tt> beside <tt>occurred</tt> and <tt>agreement</tt> of <tt>disagree</tt></td>
            <td align="left">valid</td>
          </tr>
          <tr>
            <td align="left">
              <tt>A4</tt></td>
            <td align="left">root</td>
            <td align="left">
              <tt>A1</tt> plus a remediation event with <tt>enforcement</tt> of <tt>not-enforced</tt></td>
            <td align="left">valid</td>
          </tr>
          <tr>
            <td align="left">
              <tt>A5</tt></td>
            <td align="left">root</td>
            <td align="left">
              <tt>A1</tt> with <tt>vantage</tt> of <tt>self</tt>, no prior commitment, <tt>tier</tt> of <tt>voluntary</tt></td>
            <td align="left">valid</td>
          </tr>
          <tr>
            <td align="left">
              <tt>A6</tt></td>
            <td align="left">root</td>
            <td align="left">
              <tt>A1</tt> with <tt>binding</tt> of <tt>not-bindable</tt>, <tt>tier</tt> of <tt>voluntary</tt></td>
            <td align="left">valid</td>
          </tr>
          <tr>
            <td align="left">
              <tt>F1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>A1</tt> with the whole <tt>agent</tt> member removed</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>F2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>subjectKind</tt> of <tt>none</tt> beside a named subject</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>F3</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>digest-bound</tt> with <tt>argumentsDigest</tt> removed</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>F4</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>action</tt> changed, <tt>requestDigest</tt> left at its original value</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>F5</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>beacon-anchored</tt> with <tt>externalAnchor</tt> removed</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>F6</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">two unequal postures declared as <tt>agree</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>F7</tt></td>
            <td align="left">
              <tt>A4</tt></td>
            <td align="left">
              <tt>enforcedAt</tt> one second before <tt>signalReceivedAt</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>T1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>effect.observed</tt> edited to <tt>none</tt>, writes intact, signed again with the real key</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>T2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">serialized in declaration order, not <xref target="RFC8785"/> order</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>T3</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">a member name repeated at depth three</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>T4</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">nesting 129 levels deep</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>T5</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">an integer of magnitude exactly 2^53</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>D1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>agreement</tt> of <tt>disagree</tt> with both sides agreeing</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>D2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>agreement</tt> of <tt>one-sided</tt> with both values present</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>S1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">second subject entry removed, interval left present</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>S2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">second subject entry's digest set to the before-state root</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>I1r</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">interval removed, second subject entry left present</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>TI1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>authoritative</tt> declared with <tt>vantage</tt> of <tt>self</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>TI2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>authoritative</tt> declared with no prior commitment</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>TI3</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>authoritative</tt> declared with an empty <tt>pathScope</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>TI4</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>authoritative</tt> declared with a coverage gap inside <tt>pathScope</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>TI5</tt></td>
            <td align="left">
              <tt>A6</tt></td>
            <td align="left">
              <tt>authoritative</tt> declared on <tt>A6</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>C1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">commitment <tt>keyid</tt> added to <tt>agent.signers</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>C2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>committedAt</tt> one second after <tt>openedAt</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>C3</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>witnessNonce</tt> changed, <tt>commitmentDigest</tt> left at its original value</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>E1</tt></td>
            <td align="left">
              <tt>A2</tt></td>
            <td align="left">
              <tt>observed</tt> of <tt>none</tt> with a non-empty write set</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>E2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">a second write whose pre-state is not the first write's post-state</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>E3</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">
              <tt>empty-tree</tt> under sha256 carrying the sha1 constant</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>V1</tt></td>
            <td align="left">
              <tt>A4</tt></td>
            <td align="left">
              <tt>enforcement</tt> of <tt>quarantined</tt>, outside the closed set</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>V2</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">a <tt>pathScope</tt> member carrying a glob metacharacter</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>V3</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">a write outside <tt>pathScope</tt> carrying <tt>inScope</tt> of <tt>true</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>FE1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">six of the seven <tt>fieldEvidence</tt> keys present</td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>FE2</tt></td>
            <td align="left">
              <tt>A5</tt></td>
            <td align="left">
              <tt>substrate-covered</tt> declared beside <tt>vantage</tt> of <tt>self</tt></td>
            <td align="left">malformed</td>
          </tr>
          <tr>
            <td align="left">
              <tt>N1</tt></td>
            <td align="left">
              <tt>A1</tt></td>
            <td align="left">an anchor token digest carried with no offline validation rule defined</td>
            <td align="left">indeterminate</td>
          </tr>
          <tr>
            <td align="left">
              <tt>N2</tt></td>
            <td align="left">
              <tt>A4</tt></td>
            <td align="left">enforcement forty days after the signal, ordering intact</td>
            <td align="left">indeterminate</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>This is the first revision.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>No acknowledgments are recorded for this revision.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
qQAA

-->

</rfc>
