<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="exp"
     docName="draft-watts-agent-evidence-boundary-00"
     ipr="trust200902"
     submissionType="IETF"
     version="3">
  <front>
    <title abbrev="Evidence-Bounded Agent Authorization">Evidence-Bounded Authorization for Agentic Systems: Evidence Qualification Receipts</title>
    <seriesInfo name="Internet-Draft" value="draft-watts-agent-evidence-boundary-00"/>
    <author fullname="Deonte Watts" initials="D." surname="Watts">
      <organization>Independent Researcher</organization>
      <address>
        <postal>
          <city>San Francisco</city>
          <region>CA</region>
          <country>United States</country>
        </postal>
        <email>deonte@goodshyt.fun</email>
        <uri>https://orcid.org/0009-0005-8586-3650</uri>
      </address>
    </author>
    <date year="2026" month="September" day="12"/>
    <area>Security</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>AI agent</keyword>
    <keyword>authorization</keyword>
    <keyword>evidence</keyword>
    <keyword>provenance</keyword>
    <keyword>agentic systems</keyword>
    <abstract>
      <t>Autonomous agents increasingly make or propose consequential actions using premises assembled from model outputs, memory, tools, telemetry, and external data. Existing authentication and authorization mechanisms can establish who is acting, under whose delegation, and which operation is permitted, but they do not by themselves establish whether the proposition that triggered the operation has adequate support. This document defines the Evidence Qualification Receipt (EQR), a transport-neutral JSON data model and fail-closed verification procedure for binding a proposition to a declared evidence profile, its supporting evidence digests, contradiction state, freshness, and evaluation result. An EQR can be PASS, FAIL, or INDETERMINATE. A PASS EQR is only an authorization input: it is never itself permission to execute. The design is append-only: changed evidence produces a successor receipt rather than rewriting prior epistemic state. The goal is to prevent evidence, provenance, or model confidence from silently acquiring authorization semantics.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>
        Autonomous agents increasingly act on premises derived from model inference, retrieved memory,
        external tools, telemetry, documents, and other agents. Authentication can establish an actor's
        identity. Delegation can establish on whose behalf that actor operates. Authorization can establish
        whether a requested operation is permitted. None of those steps, by themselves, establish whether
        the proposition used to justify the action is adequately supported.
      </t>
      <t>
        This creates a failure mode that is easy to miss in otherwise well-designed authorization systems:
        a correctly authenticated and correctly authorized agent can still execute an action because an
        unsupported, stale, contradictory, or merely speculative premise was treated as though it were
        established evidence.
      </t>
      <t>
        This document defines an Evidence Qualification Receipt (EQR). An EQR binds an exact proposition
        digest to a versioned evidence-requirements profile, evidence digests, contradiction state, temporal
        context, and one of three evaluation results: PASS, FAIL, or INDETERMINATE. It is intended to be
        consumed by an authorization system as one input among identity, delegation, policy, action, and
        resource context.
      </t>
      <t>The design follows four non-collapse rules:</t>
      <ul>
        <li>Integrity is not admissibility.</li>
        <li>Evidence is not authority.</li>
        <li>Qualification is not authorization.</li>
        <li>Authorization is not execution.</li>
      </ul>
      <t>
        In particular, a cryptographically valid EQR with evaluation status PASS does not grant a capability,
        mint an access token, or require a resource server to execute an operation.
      </t>
      <t>
        This document is deliberately transport-neutral. It does not define a replacement for OAuth, workload
        identity, RATS, SCITT, or agent communication protocols. Profiles can bind an EQR or an EQR digest to
        those systems.
      </t>
    </section>

    <section anchor="conventions">
      <name>Conventions and Terminology</name>
      <t>
        The key words <bcp14>MUST</bcp14>, <bcp14>MUST NOT</bcp14>, <bcp14>REQUIRED</bcp14>,
        <bcp14>SHOULD</bcp14>, <bcp14>SHOULD NOT</bcp14>, and <bcp14>MAY</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>
      <dl>
        <dt>Proposition</dt>
        <dd><t>An exact declarative claim whose support state is being evaluated.</t></dd>
        <dt>Evidence Profile</dt>
        <dd><t>A versioned set of requirements defining what evidence, freshness, contradiction handling,
        comparison rules, and other checks are required for a proposition class.</t></dd>
        <dt>Evidence Qualification Receipt (EQR)</dt>
        <dd><t>An immutable result object binding a proposition, profile, evidence references, and evaluation
        outcome.</t></dd>
        <dt>Issuer</dt>
        <dd><t>The system that evaluates the declared profile and produces the EQR. Issuer identity is not
        proof that the evaluation is substantively correct.</t></dd>
        <dt>Verifier</dt>
        <dd><t>A component that validates an EQR's syntax, integrity, bindings, freshness, and local
        acceptability before making it available to authorization policy.</t></dd>
        <dt>Authorization System</dt>
        <dd><t>The component that decides whether an actor may perform an action on a resource. It can consume
        an EQR but remains authoritative for the permission decision.</t></dd>
        <dt>PASS</dt>
        <dd><t>All required profile checks are satisfied within the declared scope and tolerances.</t></dd>
        <dt>FAIL</dt>
        <dd><t>At least one required profile check is contradicted or violated.</t></dd>
        <dt>INDETERMINATE</dt>
        <dd><t>No required check has established FAIL, but one or more required inputs, bridges,
        freshness conditions, or contradiction resolutions are missing or unresolved.</t></dd>
      </dl>
    </section>

    <section anchor="problem">
      <name>Problem Statement and Non-Collapse Requirements</name>
      <t>
        Current agent authorization work correctly focuses on identity, delegation, user consent, policy,
        transaction binding, and provenance. A separate question arises before a high-consequence action:
        what evidence supports the proposition that made the action appear necessary or appropriate?
      </t>
      <t>
        Examples include a payment agent acting because it believes an invoice is overdue, an operations
        agent restarting a service because it believes a health check failed, or a research agent promoting
        a result because it believes an experiment met a preregistered criterion. The permission to perform
        an operation and the evidence supporting the premise for that operation are different objects.
      </t>
      <t>
        An implementation conforming to this document <bcp14>MUST NOT</bcp14> interpret PASS as an
        authorization decision. It <bcp14>MUST NOT</bcp14> interpret receipt integrity as evidence
        sufficiency. It <bcp14>MUST NOT</bcp14> convert INDETERMINATE into PASS because an action is
        time-sensitive or because other authorization inputs are valid.
      </t>
      <t>The following implication is therefore invalid:</t>
      <figure>
        <artwork type="ascii-art"><![CDATA[
 authenticated actor
       +
 valid delegation
       +
 permitted operation
       +
 signed evidence object
       |
       X  does not imply
       v
 "the triggering proposition is adequately supported"
]]></artwork>
      </figure>
      <t>
        EQR adds an explicit qualification step without changing which authorization system ultimately
        controls execution.
      </t>
    </section>

    <section anchor="architecture">
      <name>Architecture</name>
      <figure>
        <name>EQR in an agent authorization path</name>
        <artwork type="ascii-art"><![CDATA[
          proposition + evidence + profile
                       |
                       v
              +------------------+
              | EQR Evaluator    |
              +------------------+
                       |
                PASS / FAIL /
                INDETERMINATE
                       |
                       v
              +------------------+
              | EQR Verifier     |
              +------------------+
                       |
              qualified input only
                       |
       +---------------+----------------+
       | identity | delegation | policy |
       | action   | resource   | EQR    |
       +---------------+----------------+
                       |
                       v
              +------------------+
              | Authorization    |
              | System           |
              +------------------+
                 ALLOW / DENY
                       |
                       v
                  execution
]]></artwork>
      </figure>
      <t>
        The evaluator and verifier can be the same deployment component, but their logical responsibilities
        are distinct. The evaluator determines the profile outcome. The verifier determines whether the
        receipt can be trusted and used in the current context.
      </t>
      <t>
        An authorization system <bcp14>MAY</bcp14> require no EQR for low-consequence operations and a
        particular EQR profile for higher-consequence operations. This document does not define those local
        risk classes.
      </t>
    </section>

    <section anchor="model">
      <name>Evidence Qualification Receipt Data Model</name>
      <t>
        An EQR payload is a JSON object as defined by <xref target="RFC8259"/>. Implementations that compute
        a digest over a JSON payload <bcp14>SHOULD</bcp14> use the JSON Canonicalization Scheme
        <xref target="RFC8785"/> before hashing. When an EQR binds a non-JSON proposition, evidence object,
        profile, context, or action, the applicable profile <bcp14>MUST</bcp14> define the canonical byte
        representation that is hashed.
      </t>
      <t>The following members are defined:</t>
      <dl>
        <dt><tt>version</tt></dt>
        <dd><t>String. This document defines version <tt>1</tt>.</t></dd>
        <dt><tt>receipt_id</tt></dt>
        <dd><t>A URI identifying this immutable receipt, using URI syntax from <xref target="RFC3986"/>.</t></dd>
        <dt><tt>issuer</tt></dt>
        <dd><t>A URI identifying the EQR issuer.</t></dd>
        <dt><tt>issued_at</tt> and <tt>expires_at</tt></dt>
        <dd><t>Timestamps bounding receipt freshness. They <bcp14>MUST</bcp14> use the Internet date/time
        format defined by <xref target="RFC3339"/>.</t></dd>
        <dt><tt>profile</tt></dt>
        <dd><t>Object containing a stable profile identifier and digest of the exact profile bytes used.</t></dd>
        <dt><tt>claim</tt></dt>
        <dd><t>Object containing a stable claim identifier and digest of the exact proposition evaluated.</t></dd>
        <dt><tt>context_digest</tt></dt>
        <dd><t>Optional digest binding the evaluation to a declared snapshot, transaction, or other context.</t></dd>
        <dt><tt>action_digest</tt></dt>
        <dd><t>Optional digest binding the receipt to a proposed action. High-consequence profiles
        <bcp14>SHOULD</bcp14> require this member when the proposition is evaluated specifically to justify
        an action.</t></dd>
        <dt><tt>evaluation</tt></dt>
        <dd><t>Object containing <tt>status</tt>, <tt>requirements_satisfied</tt>, and the number or digests
        of unresolved blocking contradictions.</t></dd>
        <dt><tt>evidence</tt></dt>
        <dd><t>Array of evidence descriptors. Each descriptor binds at least a digest and evidence class;
        deployments can add local metadata such as freshness or an access-controlled retrieval reference.
        This document defines <tt>sha-256</tt> as the mandatory-to-implement digest algorithm
        <xref target="RFC6234"/>. Digest values <bcp14>MUST</bcp14> use base64url encoding without padding
        as specified in <xref target="RFC4648"/>.</t></dd>
        <dt><tt>supersedes</tt></dt>
        <dd><t>Optional receipt identifier of a predecessor EQR superseded by new evidence. The predecessor
        is not modified.</t></dd>
        <dt><tt>nonce</tt></dt>
        <dd><t>Optional verifier- or transaction-supplied value for replay resistance.</t></dd>
      </dl>

      <section anchor="status">
        <name>Evaluation Status</name>
        <t>
          The <tt>evaluation.status</tt> member <bcp14>MUST</bcp14> be exactly one of:
          <tt>pass</tt>, <tt>fail</tt>, or <tt>indeterminate</tt>.
        </t>
        <t>
          An issuer <bcp14>MUST</bcp14> produce <tt>fail</tt> when any required profile condition is known
          to be violated. Otherwise, if any required condition is missing, unresolved, stale, or outside
          declared tolerance, the issuer <bcp14>MUST</bcp14> produce <tt>indeterminate</tt>. The issuer
          <bcp14>MUST</bcp14> produce <tt>pass</tt> only when all required conditions are satisfied.
        </t>
        <t>
          An empty required-condition set <bcp14>MUST NOT</bcp14> yield PASS. A profile that intentionally
          requires no evidence does not need an EQR.
        </t>
      </section>

      <section anchor="example-payload">
        <name>Example EQR Payload</name>
        <sourcecode type="json"><![CDATA[
{
  "version": "1",
  "receipt_id": "urn:uuid:6ac9f8f0-30e1-4b4c-a142-9f5cb5ad58f1",
  "issuer": "https://qualifier.example",
  "issued_at": "2026-09-12T23:50:00Z",
  "expires_at": "2026-09-13T00:05:00Z",
  "profile": {
    "id": "https://example.org/profiles/invoice-overdue/v1",
    "hash_alg": "sha-256",
    "digest": "BASE64URL(PROFILE_DIGEST)"
  },
  "claim": {
    "id": "urn:example:claim:invoice-8472-overdue",
    "hash_alg": "sha-256",
    "digest": "BASE64URL(PROPOSITION_DIGEST)"
  },
  "context_digest": "BASE64URL(CONTEXT_DIGEST)",
  "action_digest": "BASE64URL(PROPOSED_ACTION_DIGEST)",
  "evaluation": {
    "status": "pass",
    "requirements_satisfied": true,
    "blocking_contradictions": []
  },
  "evidence": [
    {
      "class": "signed_invoice_record",
      "hash_alg": "sha-256",
      "digest": "BASE64URL(EVIDENCE_DIGEST)",
      "fresh_until": "2026-09-13T00:05:00Z"
    }
  ],
  "nonce": "t9mS6wqz2Dbf",
  "supersedes": null
}
]]></sourcecode>
        <t>Placeholder digest text in this example is non-normative.</t>
      </section>
    </section>

    <section anchor="protection">
      <name>Integrity Protection and Issuer Authentication</name>
      <t>
        This document does not define a new signature format. An inter-domain EQR
        <bcp14>MUST</bcp14> be integrity protected and bound to an authenticated issuer using a mechanism
        acceptable to the verifier. JWS <xref target="RFC7515"/> and COSE Sign1
        <xref target="RFC9052"/> are examples of existing mechanisms that can be profiled for this purpose.
      </t>
      <t>
        A verifier <bcp14>MUST NOT</bcp14> infer substantive evidence quality from successful signature
        verification. Signature validation establishes integrity and issuer binding; it does not establish
        that the issuer used an adequate evidence profile or evaluated it correctly.
      </t>
    </section>

    <section anchor="production">
      <name>Receipt Production</name>
      <t>
        Before producing an EQR, an issuer <bcp14>MUST</bcp14> bind the exact proposition and exact evidence
        profile. The profile <bcp14>MUST</bcp14> identify each required condition and the rule for handling
        missing values, stale values, contradictory evidence, and comparison tolerances.
      </t>
      <t>
        Where a profile compares multiple representations of the same property, the profile
        <bcp14>MUST</bcp14> define the comparison space, units, transformation or bridge, snapshot alignment,
        and tolerance. A unit mismatch or incompatible comparison type is a profile failure. Missing or
        unresolved calibration is INDETERMINATE.
      </t>
      <t>
        The issuer <bcp14>MUST NOT</bcp14> silently substitute a different proposition, evidence profile,
        evidence source, or action after evaluation. Such a change requires a new receipt.
      </t>
    </section>

    <section anchor="verify">
      <name>Receipt Verification and Use</name>
      <t>
        A verifier consuming an EQR <bcp14>MUST</bcp14> perform the following checks before exposing the
        receipt to authorization policy:
      </t>
      <ol>
        <li><t>Validate syntax and the supported EQR version.</t></li>
        <li><t>Validate required integrity protection and issuer authentication.</t></li>
        <li><t>Validate receipt freshness and, when present, nonce or transaction binding.</t></li>
        <li><t>Validate the proposition digest against the proposition used by the proposed action.</t></li>
        <li><t>Validate the profile identifier and profile digest against an acceptable local profile.</t></li>
        <li><t>Validate context and action digests when required by local policy.</t></li>
        <li><t>Apply local trust policy to the issuer and evidence classes.</t></li>
        <li><t>Expose the EQR evaluation status to the authorization system without rewriting it.</t></li>
      </ol>
      <t>
        A verifier can classify a receipt as syntactically/integrity VALID while its embedded evaluation
        remains FAIL or INDETERMINATE. Receipt validity and proposition qualification are separate dimensions.
      </t>

      <section anchor="failclosed">
        <name>Fail-Closed Qualification</name>
        <t>
          When an authorization policy requires a PASS EQR, FAIL and INDETERMINATE
          <bcp14>MUST NOT</bcp14> satisfy that requirement.
        </t>
        <sourcecode type="python"><![CDATA[
def qualifies_for_policy(eqr, local_policy, action):
    if not syntax_and_integrity_valid(eqr):
        return False

    if not fresh_and_bound(eqr, action):
        return False

    if eqr["evaluation"]["status"] != "pass":
        return False

    if eqr["evaluation"]["requirements_satisfied"] is not True:
        return False

    if eqr["evaluation"]["blocking_contradictions"]:
        return False

    return local_policy.accepts_evidence_qualification(eqr, action)
]]></sourcecode>
        <t>
          Returning <tt>true</tt> from this procedure means only that one authorization precondition is
          satisfied. It does not mean the action is authorized.
        </t>
      </section>
    </section>

    <section anchor="authorization-integration">
      <name>Integration with Authorization Systems</name>
      <t>Authorization remains a separate function:</t>
      <figure>
        <artwork type="ascii-art"><![CDATA[
 authorization_decision =
     local_policy(
         principal,
         delegation,
         proposed_action,
         protected_resource,
         current_context,
         verified_evidence_qualification
     )

 execute only if authorization_decision == ALLOW
]]></artwork>
      </figure>
      <t>
        Existing agent authorization mechanisms can carry an EQR by value, by digest, or by a reference whose
        dereferencing and trust semantics are defined by a profile. For example, an OAuth deployment could
        bind an EQR reference to transaction-specific authorization state or to Rich Authorization Requests
        <xref target="RFC9396"/>. This document does not register an OAuth authorization-details type or token
        claim.
      </t>
      <t>
        When an evidence challenge mechanism is used to request missing evidence, satisfying the challenge
        can result in a newly evaluated EQR. The new EQR is still not authorization and does not guarantee
        execution.
      </t>
    </section>

    <section anchor="appendonly">
      <name>Append-Only Lifecycle and Supersession</name>
      <t>
        EQR state is append-only. An implementation <bcp14>MUST NOT</bcp14> mutate an existing receipt from
        INDETERMINATE to PASS, from FAIL to PASS, or from PASS to another state after issuance.
      </t>
      <t>
        New evidence, a corrected profile, a changed action, or a changed evaluation result requires a new
        EQR with a new <tt>receipt_id</tt>. The successor <bcp14>MAY</bcp14> identify its predecessor in
        <tt>supersedes</tt>. A verifier <bcp14>MUST NOT</bcp14> treat supersession as deletion of the
        predecessor.
      </t>
      <figure>
        <artwork type="ascii-art"><![CDATA[
 EQR:v1
 status = indeterminate
        |
        | new evidence
        v
 EQR:v2
 supersedes = EQR:v1
 status = pass

 EQR:v1 remains immutable historical evidence.
]]></artwork>
      </figure>
      <t>
        This lifecycle allows an audit system to reconstruct what was known, missing, or contradicted at the
        time of each authorization decision.
      </t>
    </section>

    <section anchor="errors">
      <name>Failure and Error Semantics</name>
      <t>
        Profiles and transports can define their own error codes, but implementations should preserve the
        following distinctions:
      </t>
      <table>
        <name>Required distinctions</name>
        <thead>
          <tr><th>Condition</th><th>Result</th></tr>
        </thead>
        <tbody>
          <tr><td>Receipt malformed, signature invalid, or binding mismatch</td><td>INVALID receipt</td></tr>
          <tr><td>Required evidence contradicts profile</td><td>VALID receipt with FAIL</td></tr>
          <tr><td>Required evidence missing, stale, unresolved, or uncertainty crosses a threshold</td><td>VALID receipt with INDETERMINATE</td></tr>
          <tr><td>All required conditions satisfied</td><td>VALID receipt with PASS</td></tr>
          <tr><td>PASS EQR but authorization policy denies</td><td>DENY action</td></tr>
        </tbody>
      </table>
      <t>
        Collapsing INVALID, FAIL, INDETERMINATE, and authorization DENY into one generic "false" loses
        information useful for remediation and auditing.
      </t>
    </section>

    <section anchor="examples">
      <name>Examples</name>

      <section anchor="invoice">
        <name>Invoice Payment Agent</name>
        <t>
          An agent proposes a payment because it claims invoice 8472 is overdue. The authorization system
          already knows the user delegated payment authority up to a configured amount. Local policy also
          requires a PASS EQR for the proposition "invoice 8472 is overdue" under a profile requiring a signed
          invoice record, due-date comparison, duplicate-payment check, and freshness under five minutes.
        </t>
        <t>
          If the invoice record is present but the duplicate-payment service is unavailable, the EQR is
          INDETERMINATE. The valid delegation does not upgrade that state. The authorization system denies or
          defers according to local policy.
        </t>
      </section>

      <section anchor="ops">
        <name>Operations Agent</name>
        <t>
          An operations agent proposes a restart because a health signal exceeded a threshold. A profile
          requires agreement between two telemetry representations after unit normalization and time-window
          alignment. A reading of 250 milliseconds and 0.25 seconds can agree after a declared bridge, but
          this correspondence does not prove that both instruments observed the intended event.
        </t>
        <t>
          If timestamps cannot be aligned, the EQR is INDETERMINATE. If units are declared incompatible,
          the profile fails. If all required comparisons and freshness checks pass, the EQR can become an
          input to a separate restart authorization policy.
        </t>
      </section>

      <section anchor="research">
        <name>Research Promotion Agent</name>
        <t>
          A research workflow proposes to promote a result from "candidate" to "supported". The evidence
          profile requires locked source digests, numeric trace bindings, registered risk criteria, and a
          reproduction receipt. If independent reproduction is required but absent, the result is
          INDETERMINATE even when all local checks pass. A local success receipt cannot silently satisfy an
          independent-reproduction requirement.
        </t>
      </section>
    </section>

    <section anchor="implementation">
      <name>Implementation Status</name>
      <t>
        This section is non-normative and is included to provide transparency about the maturity of the design.
      </t>
      <t>
        The author maintains a local Python reference package for a broader fail-closed theoretical profile.
        The currently frozen package executes finite boundary checks for three-valued prerequisite conjunction,
        missing and mistyped comparisons, uncertainty crossing tolerance, empty and tied selections, blocked
        fiction-to-empirical promotion, and unresolved-evidence promotion. The local verification report records
        40 named checks passing. It also records that the package is a frozen theoretical candidate, not an
        empirical validation or deployment authorization.
      </t>
      <t>
        The referenced local package digest is:
        <tt>e53b16656c9a98a4851bfc0b627bd7df189b83c4df77f753361b58b9b8cd7f33</tt>.
        No interoperable network implementation or independent reproduction is claimed by this -00 draft.
      </t>
    </section>

    <section anchor="related">
      <name>Relationship to Existing Work</name>
      <t>
        AI-agent authentication and authorization work describes how existing identity and authorization
        standards can be applied to agents <xref target="I-D.aiagent-auth"/>. Agent Operation Authorization
        defines action-specific authorization proposals and tokens <xref target="I-D.agent-operation"/>.
        OAuth Authorization Evidence records user confirmation and audit evidence associated with access
        tokens <xref target="I-D.oauth-authz-evidence"/>. Authorization Evidence Challenge describes how a
        relying party can request missing authorization evidence <xref target="I-D.ae-challenge"/>.
        Agent Action Capsule provenance binding relates authorization, memory provenance, and recorded action
        outcomes <xref target="I-D.aac-provenance"/>.
      </t>
      <t>
        EQR is intended to be complementary. Its narrow question is: under a declared evidence profile, what
        is the current qualification state of the exact proposition being offered as a premise for an action?
        It neither replaces user consent evidence nor defines the authorization decision itself.
      </t>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <t>
        EQR introduces an additional input to authorization systems and therefore creates new downgrade,
        replay, misbinding, and trust-confusion risks.
      </t>
      <t>
        <strong>Authority laundering:</strong> A verifier <bcp14>MUST NOT</bcp14> treat a valid signature,
        reputable issuer, neighboring true statement, or PASS result under one profile as authority for a
        different proposition, profile, context, or action.
      </t>
      <t>
        <strong>Replay:</strong> High-consequence deployments <bcp14>SHOULD</bcp14> bind receipts to a short
        validity interval and, where appropriate, a nonce, transaction, or action digest. Replaying an old
        PASS receipt after the relevant evidence became stale can cause unsafe authorization.
      </t>
      <t>
        <strong>Profile substitution:</strong> Both a stable profile identifier and digest are included
        because a mutable profile URI alone permits semantic substitution. A verifier
        <bcp14>MUST</bcp14> reject a profile digest that does not match its accepted profile bytes.
      </t>
      <t>
        <strong>Evidence reference attacks:</strong> Optional evidence retrieval references can create SSRF,
        access-control, and exfiltration risks. A verifier <bcp14>MUST NOT</bcp14> dereference arbitrary
        locations solely because they appear in a receipt. Retrieval policy is local.
      </t>
      <t>
        <strong>Compromised issuer:</strong> Cryptographic integrity cannot make a dishonest or compromised
        issuer correct. Authorization systems need explicit issuer trust, profile acceptance, and evidence
        class policy.
      </t>
      <t>
        <strong>Denial of service:</strong> Evidence graphs and contradiction sets can be large. Profiles
        should bound input sizes, recursion, remote lookups, and verification cost before evaluation begins.
      </t>
      <t>
        <strong>Confused-deputy execution:</strong> A PASS EQR that is not bound to the intended proposition
        or action can be reused to justify a different action. Exact proposition and action bindings are
        recommended whenever an EQR participates in a high-consequence decision.
      </t>
    </section>

    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>
        Evidence supporting an agent decision can contain personal, confidential, financial, medical,
        location, behavioral, or proprietary information. EQR is designed to permit digest-only evidence
        descriptors so that an authorization path need not copy source data into every token or receipt.
      </t>
      <t>
        Implementations <bcp14>SHOULD</bcp14> minimize the proposition text, evidence metadata, retrieval
        locations, and correlation identifiers exposed across trust boundaries. Where a proposition itself
        is sensitive, deployments should exchange a digest or privacy-preserving reference and reveal the
        plaintext only to components that require it.
      </t>
      <t>
        Long-lived globally unique identifiers can create correlation risk. Deployments should scope receipt
        and claim identifiers to the smallest useful administrative domain unless cross-domain auditability
        is a requirement.
      </t>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>
        This document has no IANA actions. A future revision or companion profile that defines a registered
        media type, OAuth authorization-details type, token claim, or CBOR label will need corresponding IANA
        considerations.
      </t>
    </section>

    <section anchor="conclusion">
      <name>Conclusion</name>
      <t>
        Agent authorization systems need to distinguish the permission to act from the support for the
        proposition that motivated the action. EQR provides a small transport-neutral object for preserving
        that distinction. The governing rule is simple: evidence can qualify an authorization premise, but
        it cannot silently become authorization.
      </t>
    </section>
  </middle>

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

      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="Scott Bradner" initials="S." surname="Bradner"/>
          <date year="1997" month="March"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>

      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="Barry Leiba" initials="B." surname="Leiba"/>
          <date year="2017" month="May"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>

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

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




      <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339">
        <front>
          <title>Date and Time on the Internet: Timestamps</title>
          <author fullname="Graham Klyne" initials="G." surname="Klyne"/>
          <author fullname="Chris Newman" initials="C." surname="Newman"/>
          <date year="2002" month="July"/>
        </front>
        <seriesInfo name="RFC" value="3339"/>
        <seriesInfo name="DOI" value="10.17487/RFC3339"/>
      </reference>

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

      <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author fullname="Simon Josefsson" initials="S." surname="Josefsson"/>
          <date year="2006" month="October"/>
        </front>
        <seriesInfo name="RFC" value="4648"/>
        <seriesInfo name="DOI" value="10.17487/RFC4648"/>
      </reference>

      <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
        <front>
          <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
          <author fullname="Donald Eastlake" initials="D." surname="Eastlake"/>
          <author fullname="Tony Hansen" initials="T." surname="Hansen"/>
          <date year="2011" month="May"/>
        </front>
        <seriesInfo name="RFC" value="6234"/>
        <seriesInfo name="DOI" value="10.17487/RFC6234"/>
      </reference>

    </references>

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


      <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515">
        <front>
          <title>JSON Web Signature (JWS)</title>
          <author fullname="Michael Jones" initials="M." surname="Jones"/>
          <author fullname="John Bradley" initials="J." surname="Bradley"/>
          <author fullname="Nat Sakimura" initials="N." surname="Sakimura"/>
          <date year="2015" month="May"/>
        </front>
        <seriesInfo name="RFC" value="7515"/>
        <seriesInfo name="DOI" value="10.17487/RFC7515"/>
      </reference>


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


      <reference anchor="RFC9396" target="https://www.rfc-editor.org/info/rfc9396">
        <front>
          <title>OAuth 2.0 Rich Authorization Requests</title>
          <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt"/>
          <author fullname="Justin Richer" initials="J." surname="Richer"/>
          <author fullname="Brian Campbell" initials="B." surname="Campbell"/>
          <date year="2023" month="May"/>
        </front>
        <seriesInfo name="RFC" value="9396"/>
        <seriesInfo name="DOI" value="10.17487/RFC9396"/>
      </reference>

      <reference anchor="I-D.aiagent-auth" target="https://datatracker.ietf.org/doc/draft-klrc-aiagent-auth/">
        <front>
          <title>AI Agent Authentication and Authorization</title>
          <author fullname="P. Kasselman" initials="P." surname="Kasselman"/>
          <author fullname="J. Lombardo" initials="J." surname="Lombardo"/>
          <author fullname="Y. Rosomakho" initials="Y." surname="Rosomakho"/>
          <author fullname="B. Campbell" initials="B." surname="Campbell"/>
          <author fullname="N. Steele" initials="N." surname="Steele"/>
          <author fullname="A. Parecki" initials="A." surname="Parecki"/>
          <date year="2026" month="July"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-klrc-aiagent-auth-03"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.agent-operation" target="https://datatracker.ietf.org/doc/draft-liu-agent-operation-authorization/">
        <front>
          <title>Agent Operation Authorization</title>
          <author fullname="D. Liu" initials="D." surname="Liu"/>
          <author fullname="H. Zhu" initials="H." surname="Zhu"/>
          <author fullname="S. Krishnan" initials="S." surname="Krishnan"/>
          <date year="2026" month="March"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-liu-agent-operation-authorization-02"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.oauth-authz-evidence" target="https://datatracker.ietf.org/doc/draft-liu-oauth-authorization-evidence/">
        <front>
          <title>Authorization Evidence and Audit Trail for OAuth 2.0 Access Tokens</title>
          <author fullname="D. Liu" initials="D." surname="Liu"/>
          <date year="2026" month="June"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-liu-oauth-authorization-evidence-01"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.ae-challenge" target="https://datatracker.ietf.org/doc/draft-schrock-ae-challenge/">
        <front>
          <title>An Authorization Evidence Challenge for High-Risk Agent Actions</title>
          <author fullname="I. Schrock" initials="I." surname="Schrock"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-schrock-ae-challenge-05"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="I-D.aac-provenance" target="https://datatracker.ietf.org/doc/draft-rampalli-scitt-capsule-provenance-binding/">
        <front>
          <title>Binding Per-Action Authorization and Memory Provenance into Agent Action Capsules</title>
          <author fullname="Karthik Rampalli" initials="K." surname="Rampalli"/>
          <date year="2026" month="July"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-rampalli-scitt-capsule-provenance-binding-00"/>
        <refcontent>Work in Progress</refcontent>
      </reference>

      <reference anchor="RFC9334" target="https://www.rfc-editor.org/info/rfc9334">
        <front>
          <title>Remote ATtestation procedureS (RATS) Architecture</title>
          <author fullname="Henk Birkholz" initials="H." surname="Birkholz"/>
          <author fullname="Dave Thaler" initials="D." surname="Thaler"/>
          <author fullname="Michael Richardson" initials="M." surname="Richardson"/>
          <author fullname="Ned Smith" initials="N." surname="Smith"/>
          <author fullname="Wei Pan" initials="W." surname="Pan"/>
          <date year="2023" month="January"/>
        </front>
        <seriesInfo name="RFC" value="9334"/>
        <seriesInfo name="DOI" value="10.17487/RFC9334"/>
      </reference>
    </references>

    <section anchor="ack">
      <name>Acknowledgements</name>
      <t>
        The author thanks the IETF community authors whose 2026 work on agent authentication, transaction
        authorization, authorization evidence, evidence challenge semantics, and action provenance helped
        clarify the specific non-collapse boundary addressed by this draft.
      </t>
    </section>
  </back>
</rfc>
