<?xml version='1.0' encoding='UTF-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-das-third-party-decision-binding-00" ipr="trust200902" submissionType="IETF" consensus="false" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
  <front>
    <title abbrev="Third-Party Decision Binding">Trust Me, I Checked: Verifiable Third-Party Decision Binding at the Execution-Finality Boundary</title>
    <seriesInfo name="Internet-Draft" value="draft-das-third-party-decision-binding-00"/>
    <author fullname="Sangam Das" initials="S." surname="Das">
      <organization>Independent</organization>
      <address>
        <postal>
          <city>Balasore</city>
          <region>Odisha</region>
          <country>IN</country>
        </postal>
        <phone>+91-9861363532</phone>
        <email>info@sangamdas.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="16"/>
    <area>Security</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>execution finality</keyword>
    <keyword>authorization evidence</keyword>
    <keyword>decision provenance</keyword>
    <keyword>external policy decision</keyword>
    <keyword>SCITT</keyword>
    <keyword>WIMSE</keyword>
    <keyword>RATS</keyword>
    <keyword>OAuth</keyword>

    <abstract>
      <t>
        High-consequence distributed systems frequently allow one component to act based on a
        decision produced by another component, such as an authorization server, policy engine,
        risk service, attestation Verifier, compliance service, workload-identity authority, or
        safety controller.  The vulnerability is not limited to forged credentials: a compromised
        or incorrectly designed intermediary can claim that a required third-party check succeeded,
        replay an earlier decision, substitute evidence from a different act or context, suppress
        a required DENY, or retain evidence only for audit while the protected effect remains
        technically independent of that evidence.  The issue deserves high attention where the
        downstream consequence is financial, administrative, privacy-sensitive, safety-relevant,
        infrastructure-changing, or otherwise difficult to reverse.
      </t>
      <t>
        Existing mechanisms solve important parts of this problem.  OAuth Token Introspection
        <xref target="RFC7662"/> lets a protected resource query token state; HTTP Message
        Signatures <xref target="RFC9421"/> provide integrity and authenticity for selected HTTP
        message components; RATS <xref target="RFC9334"/> provides Evidence, Verifiers, and
        Attestation Results; Transaction Tokens <xref target="TXN-TOKENS"/> propagate identity and
        authorization context through trusted call chains; SCITT <xref target="RFC9943"/> provides
        signed statements, transparency, and verifiable receipts; and current authorization-
        evidence work <xref target="MUNOZ-EVIDENCE"/> <xref target="MUNOZ-SCITT"/> defines signed
        pre-execution Permits bound to canonical request material.  Where one of these mechanisms
        is verified by the actual non-bypassable effectuation boundary and already proves the
        required decision for the exact act, current context, and authorized use, that deployment
        can already satisfy the property described here.
      </t>
      <t>
        The residual gap arises only where the consequential component receives an upstream claim
        such as "the external check passed", where authentic evidence is bound to the wrong act,
        authority, tenant, purpose, generation, or sink, where valid evidence has become stale or
        replayable, where only a subset of required authorities is represented, or where evidence
        exists but is not a load-bearing prerequisite of effectuation.  This document introduces
        an architectural role called External Decision Evidence (EDE).  EDE is not a new wire
        format: an existing Permit, SCITT statement or receipt, Attestation Result, live
        authenticated decision response, or other protected result can instantiate EDE when its
        semantics satisfy the deployment profile.
      </t>
      <t>
        The proposed invariant is that a Candidate Act remains non-effective until the Finality
        Sink independently establishes that every required external decision authority issued an
        applicable decision for the concrete act, under the required decision basis and current
        state, with freshness, audience or sink binding, and authorized-use semantics appropriate
        to the deployment.  Prevention is claimed only when the protected consequence cannot occur
        without successful verification of the required evidence and alternate effectuation paths
        cannot bypass that verification.  Otherwise the mechanism provides auditability,
        accountability, detection, or mitigation rather than the same prevention guarantee.
      </t>
      <t>
        The model is intended to complement, not criticize or replace, OAuth, WIMSE, SCITT, RATS,
        externalized policy systems such as Amazon Verified Permissions/Cedar, continuous-access
        systems such as Microsoft Entra Continuous Access Evaluation, Google Cloud IAM controls,
        and protected-compute technologies such as NVIDIA attestation and Arm CCA.  The proposed
        delta is not the invention of signatures, authorization evidence, receipts, or attestation
        results; it is the effectuation-time requirement that independently verifiable required
        decisions become load-bearing for the exact protected act.  Criticism, corrections,
        counterexamples, implementation experience, prior-art pointers, and evidence that existing
        mechanisms already provide the full invariant are explicitly invited.
      </t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro">
      <name>Introduction</name>

      <section anchor="intro-vulnerability">
        <name>Vulnerability: "Trust Me, I Checked"</name>
        <t>
          Distributed systems frequently separate the component that makes a security decision
          from the component that produces the protected effect.  An API server can rely on an
          authorization service; an AI-agent runtime can rely on an independent policy engine; a
          payment service can rely on fraud, sanctions, or risk services; a cloud controller can
          rely on external authorization; and an operation can rely on a remote-attestation
          Verifier.
        </t>
        <t>
          This separation is useful, but it creates a security question when the effectuation
          component cannot independently distinguish a real external decision from an
          intermediary's assertion that the decision occurred.
        </t>
        <figure anchor="fig-trust-me">
          <name>The unprovable third-party check</name>
          <artwork type="ascii-art">
Candidate Act C
      |
      v
+-----------------------+
| Intermediary / RS     |
|                       |
| "Authority Y checked  |
|  this and said ALLOW" |
+-----------+-----------+
            |
            | no independently verifiable,
            | act-bound decision required here
            v
+-----------------------+
| Protected Effect K    |
+-----------------------+
          </artwork>
        </figure>
        <t>
          The intermediary can be honest and the architecture can still be underspecified.  The
          prevention property depends on what the final effectuation boundary can verify and what
          that boundary is technically required to verify, not merely on whether an upstream log
          says that a call was made.
        </t>
      </section>

      <section anchor="intro-existing">
        <name>Existing Solutions Already Address Important Parts</name>
        <t>
          OAuth Token Introspection allows a protected resource to query an authorization server
          for the current active state and metadata of an access token <xref target="RFC7662"/>.
          Where the protected resource itself controls the non-bypassable consequence and obtains
          all required current authorization semantics directly, a separate portable evidence
          artifact can be unnecessary.
        </t>
        <t>
          Signed authorization-evidence work is even closer to this problem.  The current
          <xref target="MUNOZ-EVIDENCE"/> draft defines signed pre-execution authorization records
          for WIMSE-authorized AI-agent actions and binds a Permit to canonical request material.
          Its companion SCITT profile <xref target="MUNOZ-SCITT"/> defines a profile for
          pre-execution authorization records.  This document does not claim that signed
          authorization evidence, exact-request binding, or Permit records are new.
        </t>
        <t>
          SCITT <xref target="RFC9943"/> provides an architecture for signed statements,
          transparency, registration, and receipts.  RATS <xref target="RFC9334"/> provides a
          mature architecture for Evidence, Verifiers, Attestation Results, Reference Values, and
          appraisal.  HTTP Message Signatures <xref target="RFC9421"/> provide integrity and
          authenticity over selected HTTP message components.  Transaction Tokens
          <xref target="TXN-TOKENS"/> maintain and propagate identity and authorization context
          through trusted-domain call chains.  WIMSE <xref target="WIMSE-ARCH"/> addresses workload
          identity and security context across multi-system environments.
        </t>
        <t>
          These mechanisms are treated as complementary.  Any one of them, or a combination, can
          already satisfy some or all of the invariant in a concrete deployment when the actual
          effectuation boundary verifies the exact required decision and the protected consequence
          cannot bypass that verification.
        </t>
      </section>

      <section anchor="intro-gap">
        <name>Why the Residual Gap Can Remain</name>
        <t>
          The residual gap is not "existing standards cannot carry evidence."  They can.  The gap
          exists only where the system has not established the complete semantic chain from the
          required external decision to the protected effect.
        </t>
        <t>
          With Token Introspection, the residual question appears when the introspecting Resource
          Server is not itself the final consequence boundary, or when a downstream worker, queue,
          database, device, or other component can effect the operation without preserving the
          decision dependency.  With HTTP Message Signatures, authentic request components do not
          by themselves prove that a separate authority evaluated and approved the semantic act.
        </t>
        <t>
          With RATS, a valid Attestation Result can establish a trust decision about an Attester;
          the residual question is whether that result is applicable to and required for the
          concrete consequential act.  With SCITT, a signed or registered statement can provide
          strong provenance, transparency, and accountability; the residual question is whether
          the statement semantically authorizes the pending act and is made a mandatory input
          before effectuation rather than merely an audit artifact.
        </t>
        <t>
          The Munoz Permit work is the closest overlap.  A deployment in which the actual
          non-bypassable effectuation boundary verifies a current applicable Permit for the exact
          request may already provide the property sought here.  This draft therefore asks
          reviewers to identify whether any residual architectural requirement remains.  If the
          Permit/Closure/SCITT model already guarantees the full invariant for the intended
          deployment class, this document should be narrowed, merged, or withdrawn rather than
          claim a false gap.
        </t>
      </section>

      <section anchor="intro-delta">
        <name>What This Architecture Introduces</name>
        <t>
          The proposed contribution is an effectuation-time composition invariant.  A deployment
          defines which external decision authorities are required for a Candidate Act.  Each
          required decision must be represented by independently verifiable External Decision
          Evidence, or must be re-established through an authenticated live query with equivalent
          semantics, and the Finality Sink must make those decisions load-bearing before protected
          commit.
        </t>
        <ul spacing="normal">
          <li>Bind the required external decision to the exact Candidate Act.</li>
          <li>Identify the authority that actually made the decision.</li>
          <li>Bind or re-establish the relevant decision basis, generation, or current state.</li>
          <li>Apply freshness, replay, audience/sink, and authorized-use constraints where required.</li>
          <li>Support multiple required authorities without treating one successful decision as universal approval.</li>
          <li>Keep the Candidate Act non-effective until the Finality Sink verifies the complete required decision set.</li>
          <li>Require the decision dependency to survive to the actual effectuation boundary and across any alternate path.</li>
          <li>Distinguish prevention from auditability, provenance, accountability, or detection.</li>
        </ul>
      </section>
    </section>

    <section anchor="conventions">
      <name>Conventions and Requirements Language</name>
      <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
        "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in BCP 14 <xref target="RFC2119"/>
        <xref target="RFC8174"/> when, and only when, they appear in all capitals.
      </t>
    </section>

    <section anchor="direct-question">
      <name>Direct Question: What Threat Does This Architecture Solve?</name>
      <t>
        If system X is required to obtain a decision from independent authority Y before producing
        consequence K, can X, an intermediary, or a downstream component cause K while falsely
        claiming that Y approved the exact act?
      </t>
      <artwork type="ascii-art">
Required(Y, C, K)
AND
No valid applicable decision from Y
    ==&gt;
K MUST remain non-effective
      </artwork>
      <t>
        The architecture targets the difference between a statement about a check and a
        load-bearing, independently verifiable decision dependency.
      </t>
    </section>

    <section anchor="motivating-scenario">
      <name>Motivating Scenario: Fabricated or Misbound External Approval</name>
      <t>
        Consider a high-consequence transfer that requires authorization-service approval and a
        separate risk-service decision.  The application obtains both at t0.  Before final commit,
        the application changes the destination, or it reuses a previous risk ALLOW for another
        amount.  Alternatively, a compromised application simply asserts that the risk service
        returned ALLOW without contacting it.
      </t>
      <figure anchor="fig-evidence-binding">
        <name>Verifiable external-decision binding</name>
        <artwork type="ascii-art">
                 +-------------------------+
Candidate C ----&gt;| Decision Authority A    |
                 | evaluate exact act      |
                 +------------+------------+
                              |
                              | E_A =
                              | protected decision evidence
                              v
Candidate C -------------&gt; +-----------------------+
                           | FINALITY SINK          |
                           | verify issuer          |
                           | verify H(C)            |
                           | verify basis/current   |
                           | verify freshness       |
                           | verify sink/use        |
                           +-----------+-----------+
                                       |
                                       v
                              PROTECTED EFFECT K
        </artwork>
      </figure>
      <t>
        The Finality Sink does not need to know how A internally reached its decision.  It needs to
        establish that the recognized authority made the required decision, that the evidence
        applies to the exact pending act and current conditions required by the deployment, and
        that effectuation cannot proceed without that result.
      </t>
    </section>

    <section anchor="problem-space">
      <name>Problem Space</name>
      <section anchor="provenance-applicability">
        <name>Decision Provenance Is Not Decision Applicability</name>
        <t>
          Cryptographic proof that authority A issued evidence E does not prove that E applies to
          Candidate Act C now.  Applicability can depend on act identity, principal, resource,
          purpose, policy generation, revocation state, risk state, audience, sink, freshness, or
          authorized-use constraints.
        </t>
      </section>
      <section anchor="evidence-not-authority">
        <name>Evidence Is Not Execution Authority</name>
        <t>
          Possession of a valid evidence object SHOULD NOT automatically confer unrestricted
          execution authority.  A decision artifact can be evidence that a predicate was
          satisfied without becoming a reusable bearer credential for other acts or sinks.
        </t>
      </section>
      <section anchor="audit-not-prevention">
        <name>Audit Is Not Prevention</name>
        <t>
          A signed decision record, SCITT Receipt, log entry, or closure record can provide strong
          audit and accountability.  If it is created or checked only after the protected effect,
          it does not establish the prevention property defined here.
        </t>
      </section>
    </section>

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

      <section anchor="adversary-capabilities">
        <name>Adversary Capabilities</name>
        <t>
          The adversary MAY control or compromise the requester, AI agent, application process,
          intermediary Resource Server, orchestration layer, ordinary host software, evidence
          cache, local audit/logging layer, queue producer, downstream worker, or network path
          outside cryptographically protected channels.
        </t>
        <t>
          The adversary MAY omit a required external query, fabricate a local ALLOW, suppress a
          DENY or challenge, replay authentic evidence, substitute evidence between acts, alter an
          act after evidence issuance, present evidence to a different sink or tenant, use stale
          evidence after a policy/revocation change, reorder authority results, or present only a
          subset of the required authority set.
        </t>
      </section>

      <section anchor="threat-severity">
        <name>Threat Severity and Applicability</name>
        <t>
          Severity is consequence-dependent rather than universally critical.  The issue deserves
          high attention where an external decision is a mandatory condition for financial
          settlement, fraud/AML/sanctions processing, sensitive-data release, model-weight or
          confidential-compute egress, cloud administrative changes, AI-agent actions, device or
          operating-system actions, industrial actuation, cross-jurisdiction data movement,
          critical network operations, or remote-attestation-dependent protected actions.
        </t>
        <t>
          In those systems, a false or misbound claim that "the independent check passed" can be
          equivalent to bypassing the control entirely.
        </t>
      </section>

      <section anchor="baseline-profile">
        <name>Baseline Third-Party-Decision Profile</name>
        <t>
          The requester, intermediary, network, and ordinary application software are untrusted.
          Required external decision authorities, configured verification roots, authoritative
          current-state sources where required, and the Finality Sink are trusted to follow the
          protocol.
        </t>
      </section>

      <section anchor="high-assurance-profile">
        <name>High-Assurance Third-Party-Decision Profile</name>
        <t>
          A higher-assurance deployment MAY additionally assume compromise of the general-purpose
          operating system, agent runtime, orchestration plane, local policy service, ordinary
          evidence cache, and audit storage.  In that profile, evidence verification, relevant
          current-state anchoring, and protected commit MUST occur in a protection domain that the
          compromised components cannot rewrite or bypass.
        </t>
        <t>
          Possible substrates include a protected transaction service, HSM or security processor,
          TEE or secure monitor, DPU or SmartNIC, protected storage/controller, or another
          independently enforceable boundary appropriate to the system.
        </t>
      </section>

      <section anchor="trusted-roots">
        <name>Trusted Roots and Limits</name>
        <t>
          The base model assumes the cryptographic primitives remain secure and at least one
          configured trust root for each required authority remains trustworthy.  Compromise of
          every required decision authority, compromise of the Finality Sink itself, or a
          consequence reachable outside the declared effectuation domain is outside the base
          prevention claim.
        </t>
      </section>
    </section>

    <section anchor="goals">
      <name>Design Goals and Non-Goals</name>
      <t>
        The goal is to make externally produced decisions independently verifiable and
        load-bearing at the effectuation boundary without defining a universal policy language or
        universal evidence token.
      </t>
      <t>
        This document does not define a new OAuth grant type, a new SCITT statement format, a new
        RATS evidence format, a new signature algorithm, a new transaction token, or a universal
        decision protocol.  Existing formats and live authenticated queries can satisfy the model.
      </t>
      <t>
        The document also does not claim that every high-consequence act requires a third-party
        authority.  The required authority set is deployment policy.
      </t>
    </section>

    <section anchor="existing-delta">
      <name>Existing Mechanisms and the Proposed Delta</name>

      <section anchor="oauth-introspection">
        <name>OAuth Token Introspection</name>
        <t>
          RFC 7662 defines a method for a protected resource to query an OAuth authorization
          server about token active state and metadata <xref target="RFC7662"/>.  A live
          authenticated query immediately before a non-bypassable protected effect can be a strong
          way to satisfy current-decision requirements.
        </t>
        <t>
          The residual question exists only when the token state does not represent all required
          external decisions, the introspecting Resource Server is not the final consequence
          boundary, or downstream effectuation can proceed without preserving the decision.
        </t>
      </section>

      <section anchor="munoz-permit">
        <name>Signed Authorization Evidence and the Munoz Permit</name>
        <t>
          <xref target="MUNOZ-EVIDENCE"/> defines signed authorization-evidence records for
          WIMSE-authorized AI-agent actions.  The Permit commits to canonical request material, and
          the draft discusses independently verifiable pre-execution authorization evidence.
          <xref target="MUNOZ-SCITT"/> defines a SCITT profile for such records.
        </t>
        <t>
          This is direct and important overlap.  This document does not propose a competing Permit
          format.  A valid current Permit verified by the actual non-bypassable Finality Sink can
          instantiate External Decision Evidence.  Reviewers are specifically asked whether that
          architecture already supplies the full invariant, in which case this document should be
          narrowed or merged.
        </t>
      </section>

      <section anchor="scitt-relation">
        <name>SCITT</name>
        <t>
          RFC 9943 defines an architecture for signed statements, transparency, registration, and
          verifiable receipts <xref target="RFC9943"/>.  These properties can strengthen issuer
          attribution, provenance, auditability, and accountability.
        </t>
        <t>
          The execution-finality question is semantic and temporal: does the protected effect
          require an applicable decision by the required authority for this exact pending act?
          Registration or receipt verification is not automatically equivalent to that condition,
          although a SCITT profile can carry or strengthen the required evidence.
        </t>
      </section>

      <section anchor="rats-relation">
        <name>RATS and Attestation Results</name>
        <t>
          RATS defines Evidence, Verifiers, Attestation Results, Endorsements, Reference Values,
          and Relying Party appraisal <xref target="RFC9334"/>.  An Attestation Result can be an
          external decision input to a consequential action.
        </t>
        <t>
          This document does not redefine attestation.  It asks whether a required Attestation
          Result remains applicable to the concrete act and is technically required at the later
          consequence boundary.  If the Relying Party already controls that effect and enforces
          those semantics, no additional finality layer is required merely for duplication.
        </t>
      </section>

      <section anchor="http-signatures">
        <name>HTTP Message Signatures</name>
        <t>
          RFC 9421 provides integrity and authenticity over selected HTTP message components
          <xref target="RFC9421"/>.  It can protect an external-decision request, response, or
          covered act parameters.
        </t>
        <t>
          Message authenticity alone does not define the application proposition "recognized
          authority A evaluated this exact Candidate Act under basis B and approved it for sink S".
          A profile can use HTTP Message Signatures to protect that proposition.
        </t>
      </section>

      <section anchor="transaction-tokens">
        <name>OAuth Transaction Tokens</name>
        <t>
          <xref target="TXN-TOKENS"/> maintains and propagates identity, workload identity, and
          authorization context through call chains within a trusted domain.  Such context can
          help preserve decision lineage across multi-service processing.
        </t>
        <t>
          This document does not duplicate Transaction Tokens.  Its separate question is whether a
          particular external decision that is mandatory for the final effect is independently
          established and load-bearing at effectuation.
        </t>
      </section>

      <section anchor="wimse-relation">
        <name>WIMSE</name>
        <t>
          WIMSE addresses workload identity and security context across multi-system and multi-hop
          environments <xref target="WIMSE-ARCH"/>.  Its ecosystem is directly relevant to
          carrying the identities of decision authorities and executing workloads.  External
          Decision Evidence can compose with WIMSE context without redefining WIMSE identifiers
          or workload credentials.
        </t>
      </section>

      <section anchor="what-is-new">
        <name>What Is New in This Document</name>
        <t>
          The proposed contribution is not signatures, authorization evidence, receipts,
          introspection, attestation, or decision provenance by themselves.  It is a
          vendor-neutral effectuation-time invariant:
        </t>
        <artwork type="ascii-art">
If authority A_i is REQUIRED for Candidate Act C and consequence K,
then K cannot become effective unless the Finality Sink independently
establishes an applicable decision from A_i for that exact act under
the required current-state and authorized-use semantics.
        </artwork>
        <t>
          Existing mechanisms that already provide that property for a deployment already satisfy
          the architecture.  The document is useful only to the extent that stating the invariant
          and its composition requirements exposes gaps between evidence generation and
          effectuation.
        </t>
      </section>
    </section>

    <section anchor="prevention-mitigation">
      <name>Prevention, Mitigation, and Auditability</name>
      <section anchor="prevention-profile">
        <name>Prevention Profile</name>
        <t>
          Prevention of the governed fabricated/omitted/misbound-decision class can be claimed only
          when the required authority set is defined, the Finality Sink independently verifies the
          required decision set, each decision applies to the exact act and required current state,
          evidence cannot be substituted outside permitted context, and no alternate path can
          create the protected consequence without equivalent verification.
        </t>
        <artwork type="ascii-art">
Defined required authorities
          +
exact-act decision binding
          +
trusted issuer verification
          +
currentness / freshness / revocation semantics
          +
sink or authorized-use binding where required
          +
non-bypassable effectuation
          +
atomic or equivalent verification-to-commit coupling
          =
PREVENTION of the governed missing/misbound-decision class
        </artwork>
      </section>
      <section anchor="mitigation-profile">
        <name>Mitigation or Accountability Profile</name>
        <t>
          If the intermediary merely claims that it checked, evidence is checked after effect,
          evidence is not exact-act bound, stale evidence is accepted, only some required
          authorities are represented, or the protected effect has a bypass path, the system
          provides mitigation, accountability, detection, or auditability rather than the same
          prevention guarantee.
        </t>
      </section>
    </section>

    <section anchor="terminology">
      <name>Terminology</name>
      <t><strong>Candidate Act:</strong> A proposed consequence-bearing operation that can be computed, queued, or authorized but has not yet been permitted to create the protected consequence.</t>
      <t><strong>Protected Consequence:</strong> The external, persistent, financial, physical, disclosure, administrative, or other effect governed by the deployment.</t>
      <t><strong>External Decision Authority (EDA):</strong> An independently recognized authority whose decision is required for a particular Candidate Act or class of acts.</t>
      <t><strong>External Decision Evidence (EDE):</strong> Protected evidence, or an authenticated live decision result with equivalent semantics, establishing that an EDA issued a decision relevant to a Candidate Act.  EDE is an architectural role, not a required wire format.</t>
      <t><strong>Required Decision Authority Set:</strong> The set or rule defining which EDAs must provide acceptable decisions for the Candidate Act.</t>
      <t><strong>Decision Basis:</strong> Security-relevant policy, reference, risk, revocation, trust, account, purpose, jurisdiction, or other state used by an EDA to make its decision.</t>
      <t><strong>Decision-Basis Generation:</strong> A version, epoch, digest, status root, or equivalent identity for load-bearing decision state.</t>
      <t><strong>Evidence Applicability:</strong> The property that EDE applies to the exact Candidate Act, recognized authority, current required state, audience/sink and authorized-use context.</t>
      <t><strong>Non-Effective State:</strong> A condition in which a Candidate Act can be prepared and validated while the requester still lacks the means to produce the protected consequence without final enforcement.</t>
      <t><strong>Finality Sink:</strong> The protected functional boundary controlling the first transition that makes the Candidate Act externally effective.</t>
      <t><strong>Protected Commit:</strong> The transition or serialization point after which the protected consequence becomes effective under the deployment model.</t>
    </section>

    <section anchor="ede-model">
      <name>External Decision Evidence Model</name>
      <t>
        Let C be the concrete Candidate Act, K the protected consequence, S the Finality Sink,
        A_i a required external decision authority, B_i its decision basis, G_i a generation or
        equivalent current-state identifier, N a freshness value, and U the authorized-use
        constraints.
      </t>
      <artwork type="ascii-art">
Conceptual evidence role:

E_i = Protect_Ai(
        H(C),
        Decision_i,
        H(B_i) or BasisReference_i,
        G_i,
        N,
        AudienceOrSink_i,
        U_i,
        EvidenceIdentifier_i)

This is a semantic model, not a mandated token encoding.
      </artwork>
      <t>
        The deployment need not carry every field explicitly.  A field can be re-established
        through an authenticated current-state query or protected local state if the resulting
        invariant is equivalent.
      </t>
    </section>

    <section anchor="formal-model">
      <name>Formal Mathematical Model</name>
      <t>
        Let R(C) be the Required Decision Authority Set for Candidate Act C.  Define
        EvidenceValid for evidence E_i from authority A_i as follows:
      </t>
      <artwork type="ascii-art">
EvidenceValid(E_i, A_i, C, S, State_now) :=
       IssuerTrusted(E_i, A_i)
   AND IntegrityValid(E_i)
   AND ExactActBinding(E_i, C)
   AND DecisionAllows(E_i, C)
   AND DecisionBasisApplicable(E_i, State_now)
   AND FreshnessValid(E_i, State_now)
   AND AudienceOrSinkValid(E_i, S)
   AND AuthorizedUseValid(E_i, C, S)
   AND ReplayRuleSatisfied(E_i)
      </artwork>
      <t>
        A profile MAY define some predicates as TRUE by construction.  For example, a live
        mutually authenticated query whose response cannot be replayed outside the channel can
        satisfy freshness or audience properties differently from a portable signed object.
      </t>
      <artwork type="ascii-art">
RequiredEvidenceSatisfied(C, S, State_now) :=
    FOR ALL A_i in R(C):
        EXISTS E_i such that
            IssuedBy(E_i, A_i)
            AND EvidenceValid(E_i, A_i, C, S, State_now)
      </artwork>
      <t>
        The base safety invariant is:
      </t>
      <artwork type="ascii-art">
Effective(K, C)
    ==&gt;
RequiredEvidenceSatisfied(C, S, State_now)
AND FinalityPredicate(C, S, State_now) = TRUE
AND EffectuationPathAuthorized(C, S)
      </artwork>
      <t>
        For a strict prevention profile inside the declared threat and effectuation domain:
      </t>
      <artwork type="ascii-art">
NOT RequiredEvidenceSatisfied(C, S, State_now)
    ==&gt;
NOT Effective(K, C)
      </artwork>

      <section anchor="bounded-proof">
        <name>Bounded Prevention Argument</name>
        <t>
          Assume that (1) every required authority in R(C) is correctly identified; (2) an attacker
          cannot forge acceptable evidence for an uncompromised required authority; (3) the
          Finality Sink independently verifies RequiredEvidenceSatisfied before commit; (4) the
          verification-to-commit relation is atomic or protected by an equivalent ordering rule;
          and (5) every path capable of producing K under the declared threat model crosses an
          equivalent Finality Sink.  Under those assumptions, an attacker cannot cause K while
          omitting, fabricating, or substituting a required external decision without violating at
          least one explicit assumption.
        </t>
        <t>
          This argument is intentionally bounded.  It is not proof that an EDA's policy is correct,
          that its internal reasoning is trustworthy, or that consequences outside the declared
          effectuation domain are controlled.
        </t>
      </section>
    <section anchor="formal-candidate-authority"><name>Candidate and Authority Model</name><t>Let C be the canonical Candidate Act, K the protected consequence, S the Finality Sink,
A_i an external decision authority, E_i evidence associated with A_i, B_i the decision basis used
by A_i, G_i a currentness or policy generation, N a freshness/challenge value, and U_i
authorized-use constraints.  Let R(C) be the protected rule describing which authority decisions
are required for C.</t><artwork type="ascii-art">
C      = canonical security-relevant Candidate Act
K      = protected consequence
S      = Finality Sink

A_i    = external decision authority i
E_i    = evidence / live response associated with A_i
B_i    = decision basis used by A_i
G_i    = basis/policy/currentness generation
N_i    = freshness challenge / nonce if required
U_i    = authorized-use constraints

R(C)   = protected authority-composition rule for C
</artwork></section><section anchor="formal-evidence-structure"><name>Abstract Evidence Semantics</name><t>External Decision Evidence is an architectural role, not a mandatory wire format.  A
portable object can conceptually bind the following semantics even when the actual protocol uses
different fields or a live authenticated exchange.</t><artwork type="ascii-art">
E_i := Protect_Ai(
         issuer = A_i,
         act_digest = H(C),
         decision = d_i,
         basis_digest = H(B_i),
         generation = G_i,
         freshness = N_i,
         audience_or_sink = S_if_required,
         use_constraints = U_i,
         evidence_id = id_i)
</artwork><t>A live query MAY satisfy equivalent semantics without constructing this literal object.  What
matters is that the sink can independently establish the issuer, exact act, decision, currentness,
freshness, and applicable-use semantics before effectuation.</t></section><section anchor="formal-evidence-validity"><name>Evidence Validity Predicate</name><artwork type="ascii-art">
EvidenceValid(E_i, A_i, C, S, State_now) :=
       IssuedBy(E_i, A_i)
   AND IssuerTrustedForDecisionClass(A_i, C)
   AND IntegrityOrChannelAuthenticityValid(E_i)
   AND ExactActBinding(E_i, C)
   AND DecisionSemanticsValid(E_i)
   AND DecisionAllows(E_i, C)
   AND DecisionBasisApplicable(E_i, State_now)
   AND GenerationApplicable(E_i, State_now)
   AND FreshnessValid(E_i, State_now)
   AND AudienceOrSinkValidIfRequired(E_i, S)
   AND AuthorizedUseValid(E_i, C, S)
   AND ReplayRuleSatisfied(E_i, C, S)
   AND EvidenceNotSuperseded(E_i, State_now)
</artwork><t>A profile can make some predicates true by construction.  For example, a mutually
authenticated live query with a sink-generated nonce can satisfy issuer, audience, and freshness
differently from a portable signed object.</t></section><section anchor="formal-authority-rule"><name>General Authority-Composition Rule</name><t>The required-authority policy need not be a simple conjunction.  A protected rule can contain
mandatory authorities, alternative authorities, thresholds, role classes, negative-decision
precedence, or conditional dependencies.</t><artwork type="ascii-art">
Rule R(C) may contain:

MANDATORY(A_authz)

ANY_OF({
    A_fraud_primary,
    A_fraud_backup
})

THRESHOLD(
    k = 2,
    authorities = {
        A_risk_1,
        A_risk_2,
        A_risk_3
    })

REQUIRE_IF(
    predicate = HighValue(C),
    authority = A_human_approval)

DENY_OVERRIDES({
    A_safety,
    A_compliance
})
</artwork><t>The rule itself is load-bearing security state.  An attacker must not be able to weaken
R(C), silently remove a required authority, or reinterpret UNKNOWN/TIMEOUT as ALLOW.</t></section><section anchor="formal-authority-evaluation"><name>Authority-Rule Evaluation</name><artwork type="ascii-art">
DecisionState(A_i,C) ∈ {
    ALLOW,
    DENY,
    CHALLENGE,
    UNKNOWN,
    UNAVAILABLE
}

RuleSatisfied(R(C), E, State_now) :=
    EvaluateProtectedRule(
        R(C),
        per_authority = {
            A_i -&gt;
                EvidenceValid(E_i,A_i,C,S,State_now)
                ? DecisionState(A_i,C)
                : UNKNOWN
        })
</artwork><t>For a strict prevention profile, every rule construct must define DENY, CHALLENGE, UNKNOWN,
UNAVAILABLE, and conflicting-decision behavior.  Undefined composition semantics are not a valid
prevention rule.</t></section><section anchor="formal-dependency-graph"><name>Authority Dependency Graph</name><t>Some external decisions depend on earlier decisions or shared context.  Let D_A(C) be a
directed acyclic authority-dependency graph when ordering is required.</t><artwork type="ascii-art">
D_A(C) = (Authorities, DependsOn)

Example:

 A_identity ----&gt; A_authz ----&gt; A_fraud
                      \
                       +-------&gt; A_compliance

Validity condition:

If A_j depends on A_i, then evidence for A_j MUST identify,
directly or by protected context reference, the decision basis
or transaction state in which A_i's result was incorporated.
</artwork><t>A cycle in the dependency graph is either invalid or requires an explicitly defined
fixed-point/transaction protocol; this document does not silently assume cyclic dependencies are
safe.</t></section><section anchor="formal-exact-act"><name>Exact-Act Binding</name><artwork type="ascii-art">
ExactActBinding(E_i,C) :=
    H(CanonicalSecurityAct(C))
        =
    E_i.act_digest

CanonicalSecurityAct(C) MUST cover every field whose change can:
    alter the protected consequence,
    alter the authority decision,
    alter destination/audience,
    alter purpose/use,
    alter target resource,
    alter amount/parameter/state transition.
</artwork><t>If an authority intentionally approves a class of acts rather than one exact act, the evidence
must explicitly encode the allowed class and the sink must verify that C is inside that class.
Class authorization is not treated as exact-act binding by accident.</t></section><section anchor="formal-basis-currentness"><name>Decision-Basis Currentness</name><artwork type="ascii-art">
BasisApplicable(E_i, State_now) :=
       BasisIdentityKnown(E_i)
   AND (
          E_i.generation == CurrentGeneration(A_i,C)
          OR
          AuthoritativeCompatibilityProof(
              E_i.generation,
              CurrentGeneration(A_i,C),
              C)
       )
   AND NoApplicableRevocationAfterDecision(E_i,C)
</artwork><t>An authentic decision can become stale after policy, risk, trust, resource, account, or
revocation state changes.  Signature validity is therefore not equivalent to decision currentness.</t></section><section anchor="formal-replay-nonbearer"><name>Replay and Non-Bearer Semantics</name><artwork type="ascii-art">
NonBearerUseValid(E_i,C,S,Txn) :=
       ExactActBinding(E_i,C)
   AND SinkBindingValidIfRequired(E_i,S)
   AND TransactionBindingValidIfRequired(E_i,Txn)
   AND FreshnessValid(E_i)
   AND (
          ReusableByPolicy(E_i,C,S)
          OR ConsumeOnce(E_i.id, Txn)
       )
</artwork><t>Evidence can be independently verifiable without being bearer authority.  Possession alone
need not be sufficient to exercise the protected effect.</t></section><section anchor="formal-live-query"><name>Live-Query Equivalence</name><artwork type="ascii-art">
LiveDecisionValid(Q_i, A_i, C, S, N, State_now) :=
       MutuallyAuthenticatedPeer(Q_i) = A_i
   AND Q_i.challenge = N
   AND Q_i.act_digest = H(C)
   AND Q_i.decision = ALLOW
   AND Q_i.basis_current(State_now)
   AND Q_i.sink_valid_if_required(S)

Portable evidence is NOT required if:
    LiveDecisionValid(...) supplies equivalent semantics.
</artwork></section><section anchor="formal-required-evidence"><name>Required Decision Satisfaction</name><artwork type="ascii-art">
RequiredDecisionSatisfied(C,S,E,State_now) :=
       RuleIntegrityValid(R(C))
   AND RuleSatisfied(R(C), E, State_now)
   AND AllMandatoryNegativeDecisionsAbsent(R(C),E)
   AND AllDependencyConstraintsSatisfied(D_A(C),E)
   AND CurrentnessConstraintsSatisfied(E,State_now)
</artwork></section><section anchor="formal-serialization"><name>Verification-to-Commit Serialization</name><t>The decision set can become stale after verification but before effect.  Let ≺_S be the
authoritative serialization order protecting load-bearing state and protected effect commit.</t><artwork type="ascii-art">
Let:
    VerifySet(C,E,g)   = successful decision-set verification
    Change(g -&gt; g+1)  = load-bearing policy/revocation/trust change
    CommitEff(C)      = protected effect commit

If:
    VerifySet(C,E,g) ≺_S Change(g -&gt; g+1) ≺_S CommitEff(C)

then:
    verification under g MUST NOT authorize CommitEff(C)
    unless an authoritative compatibility/survival rule says
    the change is irrelevant to C.
</artwork></section><section anchor="formal-strict-invariant"><name>Strict Effectuation Invariant</name><artwork type="ascii-art">
Effective(K,C)
    =&gt;
RequiredDecisionSatisfied(C,S,E,State_now)
AND FinalityPredicate(C,S,State_now) = TRUE
AND EffectuationPathAuthorized(C,S)
AND VerificationGenerationCurrent(C,E,State_now)

Strict prevention:

NOT RequiredDecisionSatisfied(C,S,E,State_now)
    =&gt;
NOT Effective(K,C)
</artwork></section><section anchor="formal-bounded-proof-expanded"><name>Expanded Bounded Prevention Proof</name><t>Assume: (1) R(C) is integrity-protected and complete for the deployment; (2) uncompromised
required authorities cannot be impersonated; (3) exact-act or explicit class binding is verified;
(4) currentness/revocation/freshness rules are enforced; (5) the Finality Sink independently
verifies the authority rule; (6) verification and commit are serialized against load-bearing
state changes; and (7) every path capable of producing K crosses equivalent enforcement.</t><t>Suppose K becomes effective even though a required authority decision is missing, stale,
inapplicable, substituted, or negative.  Then RequiredDecisionSatisfied is false.  The strict
prevention invariant prohibits effectuation, contradicting the assumed effect unless at least one
premise — rule completeness, authority authenticity, exact-act binding, currentness, sink
integrity, serialization, or path completeness — failed.  This proves only the bounded technical
property; it does not prove that an authority's internal policy or decision is substantively
correct.</t></section></section>

    <section anchor="authority-set">
      <name>Required Decision-Authority Set</name>
      <t>
        Some acts require one authority; others can require several.  A payment, for example, can
        require application authorization, fraud acceptance, and an attestation or device-trust
        decision.
      </t>
      <figure anchor="fig-multi-authority">
        <name>Multiple required decision authorities</name>
        <artwork type="ascii-art">
                 +-----------------+       E1
Candidate C ----&gt; Authz Authority  +--------\
                 +-----------------+         \
                                             \
                 +-----------------+       E2  \
Candidate C ----&gt; Risk Authority   +----------&gt; [ FINALITY SINK ] --&gt; K
                 +-----------------+          /
                                             /
                 +-----------------+       E3/
Candidate C ----&gt; Attest Verifier  +--------/
                 +-----------------+

The sink evaluates the decision-set rule for C.
One valid E_i does not automatically replace another required E_j.
        </artwork>
      </figure>
      <artwork type="ascii-art">
Example conjunction:

R(C) = { Authz, Fraud, Attestation }

AllowFinal(C) =
    EvidenceValid(E_authz)
    AND EvidenceValid(E_fraud)
    AND EvidenceValid(E_attest)
      </artwork>
      <t>
        A profile MAY define threshold, role-class, or alternative authority rules, but this
        document does not define a universal policy language.
      </t>
    <figure anchor="fig-authority-rule-types"><name>Authority-rule types beyond simple conjunction</name><artwork type="ascii-art">
Rule examples for one Candidate Act C:

1. Conjunction:
   [Authz] AND [Fraud] AND [Attestation]

2. Alternative:
   [FraudPrimary] OR [FraudBackup]

3. Threshold:
   any 2 of {Risk1, Risk2, Risk3}

4. Conditional:
   IF amount &gt; threshold
      THEN [HumanApproval] REQUIRED

5. DENY dominance:
   [Safety = DENY] OR [Compliance = DENY]
      =&gt; FINAL DENY
</artwork></figure><figure anchor="fig-authority-dependency-dag"><name>Decision-authority dependency graph</name><artwork type="ascii-art">
Identity Authority
       |
       v
Authorization Authority
       | \
       |  \
       v   v
 Fraud     Compliance
       \   /
        \ /
         v
    Finality Sink

If Fraud evaluated a different transaction/basis from Authz,
both signatures can be valid while the combined decision is invalid.
</artwork></figure></section>

    <section anchor="exact-act">
      <name>Exact-Act and Decision-Basis Binding</name>
      <t>
        The act representation used for decision binding MUST include every parameter whose change
        can affect whether the act is authorized under the external decision.  Canonicalization
        must be unambiguous for the deployment.
      </t>
      <figure anchor="fig-substitution">
        <name>Wrong-act substitution</name>
        <artwork type="ascii-art">
Authority approves:

    C1 = transfer(amount=100, destination=Alice)
    E1 binds H(C1)

Attacker attempts:

    C2 = transfer(amount=100000, destination=Bob)

At Finality Sink:

    H(C1) != H(C2)
          |
          v
        REJECT
        </artwork>
      </figure>
      <t>
        Exact byte equality is not universally required if a profile defines an unambiguous
        semantic canonicalization.  The security requirement is that no security-relevant semantic
        change be ignored by the binding.
      </t>
    <figure anchor="fig-canonicalization-boundary"><name>Canonical act binding across authority and sink</name><artwork type="ascii-art">
Application object
      |
      v
+----------------------+
| CanonicalSecurityAct |
| amount               |
| resource             |
| operation            |
| destination          |
| purpose              |
| critical parameters  |
+----------+-----------+
           |
           +---- H(C) ----&gt; External Authority
           |
           +---- H(C) ----&gt; Finality Sink

If authority hashes C1 and sink effects C2:
    H(C1) != H(C2)  =&gt; REJECT
</artwork></figure></section>

    <section anchor="freshness-currentness">
      <name>Freshness, Currentness, and Revocation</name>
      <t>
        Authentic evidence can become stale.  A decision made under generation G17 is not
        automatically applicable after a load-bearing decision basis advances to G18.
      </t>
      <artwork type="ascii-art">
t0                         t1                         t2
|                          |                          |
| E_i issued under G17     | policy/revocation       | protected
| for Candidate C          | advances to G18         | commit
|--------------------------|--------------------------|
                                                   |
                                                   v
                                      verify applicability of
                                      E_i under current state

If G18 invalidates E_i:
    reject / re-authorize / obtain new evidence.
      </artwork>
      <t>
        This property composes with state/policy continuity and finality-bound revocation.  A
        deployment can use short validity, live queries, protected generations, event-driven state,
        challenge binding, or another method appropriate to its threat model.
      </t>
    <figure anchor="fig-decision-generation-race"><name>Decision generation changes before protected commit</name><artwork type="ascii-art">
Finality Sink                    External/Policy State
     |                                  |
     | verify E under G17               |
     |                                  |
     |                    change -&gt; G18 |
     |                                  |
     | enter protected commit           |
     | assert generation == G17 --FAIL  |
     |                                  |
     +---- refresh / re-authorize ------+
</artwork></figure><figure anchor="fig-replay-nonbearer"><name>Independently verifiable evidence need not be bearer authority</name><artwork type="ascii-art">
Attacker obtains valid E_i
          |
          v
     presents E_i
          |
          v
+---------------------------+
| Finality Sink             |
| exact act?                |
| sink/tenant?              |
| transaction?              |
| freshness?                |
| consumed already?         |
+-----------+---------------+
            |
       any mismatch
            |
            v
          REJECT

Valid signature alone does not imply reusable authority.
</artwork></figure></section>

    <section anchor="sink-binding">
      <name>Sink, Audience, and Authorized-Use Binding</name>
      <t>
        Exact-act binding may not be sufficient when the same evidence could be presented to a
        different tenant, trust domain, resource, or effectuation boundary.  A profile SHOULD bind
        the evidence to the intended audience, sink, domain, transaction, or use context when
        cross-context substitution is possible.
      </t>
      <t>
        Evidence MUST NOT be treated as a general bearer execution credential merely because it
        verifies cryptographically.
      </t>
    </section>

    <section anchor="state-machine">
      <name>State Machine</name>
      <figure anchor="fig-state-machine">
        <name>External-decision finality state machine</name>
        <artwork type="ascii-art">
+----------------+
| PROPOSED ACT C |
+-------+--------+
        |
        v
+-----------------------+
| DETERMINE REQUIRED    |
| AUTHORITIES R(C)      |
+----------+------------+
           |
           v
+-----------------------+
| OBTAIN / RESOLVE EDE  |
| FOR EACH REQUIRED A_i |
+----------+------------+
           |
           v
+-----------------------+
| NON-EFFECTIVE         |
| PENDING FINAL CHECK   |
+----------+------------+
           |
           v
+-----------------------+
| FINALITY SINK         |
| verify issuer         |
| exact act             |
| current basis         |
| freshness/replay      |
| sink/use              |
| complete authority set|
+----+-------------+----+
     |             |
    fail          pass
     |             |
     v             v
NON-EFFECTIVE   PROTECTED COMMIT
 / REAUTHORIZE       |
                     v
                  EFFECTIVE
        </artwork>
      </figure>
    <figure anchor="fig-decision-state-machine-expanded"><name>Expanded decision-evidence state machine</name><artwork type="ascii-art">
                 +------------------+
                 | Candidate Act C  |
                 +--------+---------+
                          |
                          v
                 +------------------+
                 | Resolve R(C)     |
                 | + D_A(C)         |
                 +--------+---------+
                          |
                          v
              +-------------------------+
              | Obtain evidence / live  |
              | decisions per authority |
              +------------+------------+
                           |
                           v
                 +------------------+
                 | Validate each E_i|
                 +--------+---------+
                          |
               +----------+----------+
               |                     |
             fail                  individual
               |                  results ready
               v                     |
         NON-EFFECTIVE               v
                              +-----------------+
                              | Evaluate R(C)   |
                              | DENY/UNKNOWN?   |
                              +--------+--------+
                                       |
                            +----------+----------+
                            |                     |
                          fail                   pass
                            |                     |
                            v                     v
                     NON-EFFECTIVE        FINALITY SINK
                                                |
                                      currentness recheck
                                                |
                                                v
                                        PROTECTED COMMIT
                                                |
                                                v
                                            EFFECTIVE
</artwork></figure></section>

    <section anchor="solution">
      <name>Solution Architecture</name>

      <section anchor="prepare">
        <name>Prepare Candidate Act</name>
        <t>
          Construct a canonical Candidate Act containing the security-relevant act parameters.
          Preparation, inference, orchestration, and ordinary upstream approval MUST NOT by
          themselves create the protected consequence.
        </t>
      </section>

      <section anchor="resolve-required">
        <name>Resolve Required External Authorities</name>
        <t>
          Determine R(C), including mandatory authorities and any approved alternative or threshold
          rule.  The rule itself is protected policy state.
        </t>
      </section>

      <section anchor="obtain-evidence">
        <name>Obtain or Re-Establish External Decisions</name>
        <t>
          For each required authority, obtain EDE through a portable protected object or an
          authenticated live decision query.  The mechanism MUST identify the recognized decision
          authority and bind or re-establish the exact Candidate Act and required context.
        </t>
      </section>

      <section anchor="remain-noneffective">
        <name>Remain Non-Effective</name>
        <t>
          The Candidate Act remains non-effective after evidence acquisition.  Evidence possession
          alone MUST NOT create a bypass around final verification.
        </t>
      </section>

      <section anchor="final-verify">
        <name>Verify at the Finality Sink</name>
        <t>
          The Finality Sink independently verifies that the complete required decision set is
          present and applicable, then couples successful verification to the protected commit.
        </t>
      </section>

      <section anchor="solution-full-flow-diagram"><name>End-to-End Finality Flow</name><figure anchor="fig-full-flow">
        <name>End-to-end external-decision finality flow</name>
        <artwork type="ascii-art">
                         +----------------------+
                         | Required Authority A |
                     +--&gt;| decide + protect E_A |
                     |   +----------+-----------+
                     |              |
                     |              v
+-----------+        |         +---------+
| Candidate |--------+--------&gt;|  E_A    |
| Act C     |        |         +---------+
+-----+-----+        |
      |              |   +----------------------+
      |              +--&gt;| Required Authority B |
      |                  | decide + protect E_B |
      |                  +----------+-----------+
      |                             |
      |                             v
      |                        +---------+
      |                        |  E_B    |
      |                        +----+----+
      |                             |
      +-----------------------------+
                    |
                    v
          +-------------------------+
          | NON-EFFECTIVE STATE     |
          | C + required evidence   |
          +------------+------------+
                       |
                       v
          +-------------------------+
          | FINALITY SINK           |
          | required set complete?  |
          | issuers trusted?        |
          | exact act?              |
          | current basis?          |
          | freshness/replay?       |
          | sink/use applicable?    |
          +-----------+-------------+
                      |
                pass  |  fail
          +-----------+----------+
          |                      |
          v                      v
  PROTECTED COMMIT        REMAIN NON-EFFECTIVE
          |
          v
       EFFECT K
        </artwork>
      </figure>
    </section></section>

    <section anchor="pseudocode">
      <name>Illustrative Pseudocode</name>
      <t>The pseudocode is non-normative.  It separates Candidate Act canonicalization, protected
authority-rule resolution, evidence acquisition, portable evidence verification, live queries,
dependency validation, general rule evaluation, freshness/revocation handling, protected
finalization, evidence consumption, multi-hop propagation, alternate-path coverage, and
crash-safe recovery.</t><section anchor="pseudo-canonical-act"><name>Canonicalize the Candidate Act</name><artwork type="ascii-art">
function canonical_security_act(candidate):
    return CanonicalAct(
        subject = candidate.subject,
        resource = candidate.resource,
        operation = candidate.operation,
        parameters = canonical_security_parameters(candidate),
        destination = candidate.destination_if_security_relevant,
        purpose = candidate.purpose_if_required,
        tenant = candidate.tenant_if_required,
        transaction_id = candidate.transaction_id_if_required)
</artwork></section><section anchor="pseudo-resolve-rule"><name>Resolve the Protected Authority Rule</name><artwork type="ascii-art">
function resolve_authority_rule(candidate):
    rule = protected_authority_policy_lookup(
        canonical_security_act(candidate))

    if !rule.integrity_valid:
        reject("authority rule integrity failure")

    if rule.generation != current_authority_policy_generation():
        return RELOAD_RULE

    if rule.undefined_semantics_for(
            DENY, UNKNOWN, UNAVAILABLE, CHALLENGE):
        reject("incomplete authority composition semantics")

    if !dependency_graph_acyclic_or_explicitly_supported(
            rule.dependency_graph):
        reject("unsupported authority dependency cycle")

    return rule
</artwork></section><section anchor="pseudo-build-request"><name>Build an External Decision Request</name><artwork type="ascii-art">
function build_decision_request(candidate, authority, sink_context):
    C = canonical_security_act(candidate)

    return {
        act_digest: H(C),
        subject: C.subject,
        resource: C.resource,
        operation: C.operation,
        purpose: C.purpose,
        transaction_id: C.transaction_id,
        decision_class:
            required_decision_class(candidate, authority),
        upstream_decision_context:
            dependency_context_for(authority, candidate),
        sink_or_audience:
            sink_context.identity_if_required,
        freshness_challenge:
            sink_context.challenge_if_required,
        requested_basis:
            current_basis_requirements(candidate, authority)
    }
</artwork></section><section anchor="pseudo-obtain-evidence-expanded"><name>Obtain Portable or Live External Decisions</name><artwork type="ascii-art">
function obtain_external_decision(
        candidate, authority, sink_context, mode):

    req = build_decision_request(
        candidate, authority, sink_context)

    if mode == LIVE_QUERY:
        return authenticated_live_query(authority, req)

    if mode == PORTABLE_EVIDENCE:
        response = authenticated_call(authority, req)

        if response == NONE:
            return DECISION_UNAVAILABLE

        return response.evidence

    reject("unsupported decision acquisition mode")
</artwork></section><section anchor="pseudo-verify-portable"><name>Verify One Portable Evidence Object</name><artwork type="ascii-art">
function verify_portable_evidence(
        candidate,
        sink,
        evidence,
        requirement,
        state_now):

    if evidence == NONE:
        return UNKNOWN

    if !issuer_matches(evidence, requirement.authority):
        return INVALID("wrong authority")

    if !verify_evidence_integrity(evidence):
        return INVALID("integrity/authenticity failure")

    C = canonical_security_act(candidate)

    if !act_or_allowed_class_matches(evidence, C):
        return INVALID("wrong candidate act")

    if !decision_semantics_valid(evidence):
        return INVALID("unknown decision semantics")

    if evidence.decision == DENY:
        return DENY

    if evidence.decision != ALLOW:
        return evidence.decision

    if !decision_basis_applicable(evidence, state_now):
        return STALE

    if !freshness_valid(evidence, state_now):
        return STALE

    if !audience_or_sink_valid_if_required(evidence, sink):
        return INVALID("wrong sink/audience")

    if !authorized_use_valid(evidence, C, sink):
        return INVALID("use constraints violated")

    if !replay_rule_satisfied(evidence, C, sink):
        return INVALID("replay/use violation")

    if evidence_superseded(evidence, state_now):
        return STALE

    return ALLOW
</artwork></section><section anchor="pseudo-verify-live-expanded"><name>Verify a Live External Decision</name><artwork type="ascii-art">
function verify_live_decision(candidate, sink, authority):
    C = canonical_security_act(candidate)

    challenge = fresh_sink_challenge()

    response = authenticated_decision_query(
        authority,
        act_digest = H(C),
        sink = sink.identity_if_required,
        challenge = challenge,
        transaction_id = C.transaction_id)

    if !channel_peer_is(response.channel, authority):
        return INVALID("wrong authority")

    if response.challenge != challenge:
        return INVALID("freshness challenge mismatch")

    if response.act_digest != H(C):
        return INVALID("wrong candidate act")

    if response.decision == DENY:
        return DENY

    if response.decision != ALLOW:
        return response.decision

    if !response.basis_current(current_security_state()):
        return STALE

    return ALLOW
</artwork></section><section anchor="pseudo-dependency-validation"><name>Validate Authority Dependencies</name><artwork type="ascii-art">
function validate_authority_dependencies(
        candidate, rule, evidence_map):

    order = topological_order(rule.dependency_graph)

    for authority in order:
        deps = dependencies_of(authority)

        for dep in deps:
            if evidence_map[dep] != ALLOW:
                return INVALID(
                    "dependency not satisfied", dep)

            if !decision_context_binds_dependency(
                    authority_evidence=evidence_map.raw[authority],
                    dependency_evidence=evidence_map.raw[dep],
                    candidate=candidate):
                return INVALID(
                    "authority evaluated inconsistent basis")

    return VALID
</artwork></section><section anchor="pseudo-evaluate-rule"><name>Evaluate the General Authority Rule</name><artwork type="ascii-art">
function evaluate_authority_rule(rule, decision_map):
    # DENY-dominant authorities first.
    for authority in rule.deny_override_authorities:
        if decision_map[authority] == DENY:
            return DENY

    for mandatory in rule.mandatory:
        if decision_map[mandatory] != ALLOW:
            return decision_map[mandatory]

    for group in rule.any_of_groups:
        if count(ALLOW in group) &lt; 1:
            return DENY_OR_UNKNOWN_BY_POLICY(group)

    for threshold in rule.threshold_groups:
        if count(ALLOW in threshold.authorities) &lt; threshold.k:
            return DENY_OR_UNKNOWN_BY_POLICY(threshold)

    for conditional in rule.conditionals:
        if conditional.predicate(candidate):
            if decision_map[conditional.authority] != ALLOW:
                return decision_map[conditional.authority]

    return ALLOW
</artwork></section><section anchor="pseudo-verify-required-set-expanded"><name>Verify the Complete Required Decision Set</name><artwork type="ascii-art">
function verify_required_decision_set(
        candidate, sink, evidence_set):

    rule = resolve_authority_rule(candidate)

    decision_map = {}
    raw_map = {}

    for requirement in rule.all_requirements:
        evidence = select_evidence(
            evidence_set,
            authority=requirement.authority,
            decision_class=requirement.decision_class)

        result = verify_portable_evidence(
            candidate,
            sink,
            evidence,
            requirement,
            current_security_state())

        decision_map[requirement.authority] = result
        raw_map[requirement.authority] = evidence

    decision_map.raw = raw_map

    if validate_authority_dependencies(
            candidate, rule, decision_map) != VALID:
        reject("authority dependency failure")

    result = evaluate_authority_rule(
        rule, decision_map)

    if result != ALLOW:
        reject_or_reauthorize(
            "required authority rule not satisfied",
            result)

    return {
        rule: rule,
        decisions: decision_map,
        generation:
            current_decision_state_generation(candidate)
    }
</artwork></section><section anchor="pseudo-refresh-stale"><name>Refresh Stale or Superseded Decisions</name><artwork type="ascii-art">
function refresh_stale_decisions(
        candidate, sink, verification_result):

    refreshed = {}

    for authority, result in verification_result.decisions:
        if result in {STALE, UNKNOWN, UNAVAILABLE}:
            refreshed[authority] =
                obtain_external_decision(
                    candidate,
                    authority,
                    sink.context,
                    mode=preferred_mode(authority))
        else:
            refreshed[authority] =
                verification_result.decisions.raw[authority]

    return refreshed
</artwork></section><section anchor="pseudo-finalize-expanded"><name>Protected Finalization</name><artwork type="ascii-art">
function finalize(candidate, evidence_set):
    begin_protected_finality_section()

    sink = current_finality_sink()

    if !candidate_integrity_valid(candidate):
        reject("invalid candidate")

    if candidate.expired:
        reject("candidate expired")

    verified = verify_required_decision_set(
        candidate, sink, evidence_set)

    observed_generation = verified.generation

    if !effectuation_path_authorized(candidate, sink):
        reject("unmediated effectuation path")

    atomic {
        current = current_security_state()

        assert current_decision_state_generation(candidate)
               == observed_generation

        assert required_decision_set_still_applicable(
            candidate,
            verified.decisions.raw,
            current)

        assert protected_authority_rule_still_same(
            candidate,
            verified.rule)

        assert policy_still_allows(candidate, current)
        assert revocation_state_allows(candidate, current)
        assert trust_state_allows(candidate, current)

        consume_once_if_required(
            candidate.execution_authority)

        consume_or_mark_evidence_if_required(
            candidate,
            verified.decisions.raw)

        commit_protected_effect(candidate)
    }

    return EFFECT_COMMITTED
</artwork></section><section anchor="pseudo-evidence-consumption"><name>Evidence Replay and Consumption State</name><artwork type="ascii-art">
function consume_or_mark_evidence_if_required(
        candidate, evidence_map):

    for authority, evidence in evidence_map:
        rule = replay_policy_for(
            authority, evidence, candidate)

        if rule == REUSABLE:
            continue

        if rule == SINGLE_USE:
            protected_consume_once(evidence.id)
            continue

        if rule == TRANSACTION_BOUND:
            protected_mark_used(
                evidence.id,
                candidate.transaction_id)
            continue

        if rule == SINK_BOUND:
            protected_mark_use(
                evidence.id,
                current_finality_sink().identity)
            continue

        reject("undefined evidence replay semantics")
</artwork></section><section anchor="pseudo-multihop-context"><name>Preserve Decision Context Across Multi-Hop Systems</name><artwork type="ascii-art">
function forward_candidate(
        candidate, next_hop, verified_context):

    envelope = {
        candidate: candidate,
        act_digest: H(canonical_security_act(candidate)),
        authority_rule_id:
            verified_context.rule.id,
        decision_generation:
            verified_context.generation,
        evidence_references:
            scoped_references(
                verified_context.decisions.raw)
    }

    return authenticated_forward(
        next_hop, envelope)

# Downstream hops MUST NOT assume the references remain current.
# The Finality Sink re-establishes applicability before effect.
</artwork></section><section anchor="pseudo-alternate-path-coverage"><name>Verify Required-Decision Coverage Across Effectuation Paths</name><artwork type="ascii-art">
function verify_decision_path_coverage(
        consequence,
        path_inventory,
        required_authority_rule):

    for path in paths_capable_of(
            consequence, path_inventory):

        if path.crosses_sink_that_enforces(
                required_authority_rule):
            continue

        if path.enforces_equivalent_decision_invariant:
            continue

        return CoverageFailure(
            reason="required-decision bypass path",
            witness=path)

    return COVERAGE_VALID
</artwork></section><section anchor="pseudo-crash-recovery"><name>Crash-Safe Recovery</name><artwork type="ascii-art">
function recover(candidate_id):
    state = protected_commit_state(candidate_id)

    if state == EFFECTIVE:
        return DO_NOT_REPLAY

    if state == COMMITTING:
        outcome = resolve_atomic_commit(candidate_id)

        if outcome == EFFECT_COMMITTED:
            return DO_NOT_REPLAY

        return REVALIDATE_ALL_REQUIRED_DECISIONS

    if state == PENDING:
        return REVALIDATE_ALL_REQUIRED_DECISIONS

    return FAIL_CLOSED
</artwork></section></section>

    <section anchor="live-vs-portable">
      <name>Live Query Versus Portable Evidence</name>
      <t>
        Portable evidence is useful for asynchronous workflows, disconnected verification,
        multi-hop systems, later audit, and independently verifiable provenance.  A live
        authenticated decision query can provide stronger currentness in some deployments and can
        avoid replay or portability concerns.
      </t>
      <t>
        This architecture does not prefer one universally.  The requirement is semantic:
        independently establish the required external decision for the exact act under current
        applicability rules at or immediately before the protected effect.
      </t>
    <figure anchor="fig-live-vs-portable"><name>Live query versus portable evidence</name><artwork type="ascii-art">
Portable evidence:

 Authority -&gt; signed E_i -&gt; queue/store -&gt; Finality Sink
                 |
          independently verifiable
          asynchronous / multi-hop
          replay rules required


Live query:

 Finality Sink -- fresh challenge --&gt; Authority
 Finality Sink &lt;-- bound decision ---- Authority
                 |
          strong currentness
          authority availability required

Both can satisfy the architecture if semantic requirements match.
</artwork></figure><figure anchor="fig-live-query-failure-modes"><name>Live query must still bind the exact act</name><artwork type="ascii-art">
Fresh TLS channel alone is insufficient:

 Sink -------- authenticated --------&gt; Authority
      asks: "may user act?"
                 |
                 v
             ALLOW

But pending effect is:
  transfer(amount=100000, account=B)

Required live semantics:
  peer identity
  + exact act digest / allowed class
  + decision
  + freshness challenge
  + current basis
  + sink/use constraints if required
</artwork></figure></section>

    <section anchor="scitt-offline">
      <name>SCITT Transparency and Offline Verification</name>
      <t>
        A SCITT Signed Statement or Receipt can strengthen provenance and transparency of Decision
        Evidence, particularly where later independent verification is important.  A profile can
        require registration before effectuation or allow registration after effectuation for
        accountability.
      </t>
      <figure anchor="fig-audit-vs-prevention">
        <name>Audit-only evidence versus prevention</name>
        <artwork type="ascii-art">
Audit / accountability path:

    Candidate C ---&gt; EFFECT K ---&gt; create/register receipt
                         |
                         +---- effect already occurred


Prevention path:

    Candidate C
        |
        v
    obtain / resolve required decision evidence
        |
        v
    FINALITY SINK verifies evidence
        |
        v
    protected commit
        |
        v
      EFFECT K
        </artwork>
      </figure>
      <t>
        The two flows can coexist.  The distinction is whether evidence verification is a
        prerequisite to effectuation.
      </t>
    </section>

    <section anchor="rats-ede">
      <name>RATS-Based Decision Evidence</name>
      <t>
        Where a protected act requires an acceptable workload, device, firmware, or execution
        environment state, an Attestation Result can serve as EDE from a recognized Verifier.
        The profile must determine whether the Attestation Result is sufficiently fresh, whether
        it applies to the workload performing or requesting C, and whether any change in trust
        state requires re-appraisal before effectuation.
      </t>
    </section>

    <section anchor="multihop">
      <name>Multi-Hop and WIMSE Composition</name>
      <t>
        In a multi-service chain, the component that first obtains a decision may not control the
        final consequence.  EDE therefore needs either to travel with the transaction, be
        re-resolvable from a protected identifier, or be re-established by the final component.
      </t>
      <figure anchor="fig-multihop">
        <name>Decision dependency across a multi-hop chain</name>
        <artwork type="ascii-art">
External Decision Authority
          |
          | E_A / resolvable decision reference
          v
      Workload A
          |
          | WIMSE / Txn-Token / service context
          v
      Workload B
          |
          v
      Queue / Worker
          |
          v
   +------------------+
   | FINALITY SINK    |
   | independently    |
   | establish E_A    |
   +--------+---------+
            |
            v
          EFFECT K
        </artwork>
      </figure>
      <t>
        Merely propagating identity context does not automatically prove that a particular required
        authority issued an applicable decision, while a portable EDE object does not replace
        workload authentication.  The two properties are complementary.
      </t>
    <figure anchor="fig-multihop-staleness"><name>Decision context can become stale across asynchronous hops</name><artwork type="ascii-art">
A_authz issues E under G17
        |
        v
Service A -&gt; Queue -&gt; Service B -&gt; Worker C -&gt; Finality Sink
                    ^
                    |
              policy becomes G18

Forwarded E[G17] remains authentic
but may no longer be applicable at final effect.
</artwork></figure></section>

    <section anchor="alternate-path">
      <name>Alternate-Path Resistance</name>
      <t>
        Perfect Decision Evidence is not preventive if a second path can create K without
        verifying it.  A prevention profile therefore composes with consequence-path completeness:
        every route capable of creating the protected consequence must either cross a Finality
        Sink that verifies the required decision set or preserve an equivalent invariant.
      </t>
    <figure anchor="fig-decision-bypass-path"><name>Required-decision verification bypass</name><artwork type="ascii-art">
Protected path:

 C -&gt; collect E1,E2 -&gt; Finality Sink -&gt; EFFECT
                           ^
                           |
                     rule R(C) enforced


Alternate path:

 C -&gt; admin / queue / direct storage / recovery ------&gt; EFFECT

If alternate path can cause the same consequence without R(C),
evidence verification on the protected path is not prevention.
</artwork></figure></section>

    <section anchor="attack-analysis">
      <name>Attack Analysis</name>

      <section anchor="attack-fabricated">
        <name>Fabricated "ALLOW"</name>
        <t>
          A compromised intermediary claims that authority A returned ALLOW but presents no
          acceptable EDE.  The Finality Sink rejects because A is required and
          RequiredEvidenceSatisfied is false.
        </t>
      </section>

      <section anchor="attack-wrong-act">
        <name>Wrong-Act Substitution</name>
        <t>
          EDE was issued for C1 and is presented with C2.  Exact-act binding fails.
        </t>
      </section>

      <section anchor="attack-replay">
        <name>Evidence Replay</name>
        <t>
          Authentic evidence from a prior act or transaction is replayed.  Freshness,
          transaction/sink binding, consume-once semantics, or current-state rules reject the
          replay according to the profile.
        </t>
      </section>

      <section anchor="attack-partial-set">
        <name>Partial Authority-Set Attack</name>
        <t>
          The attacker presents authorization-service approval but omits a mandatory fraud or
          attestation decision.  The authority-set rule fails even though the presented evidence
          is valid.
        </t>
      </section>

      <section anchor="attack-suppress-deny">
        <name>Suppressed DENY or Challenge</name>
        <t>
          An intermediary suppresses a negative result and presents only positive evidence from
          another authority.  The sink evaluates the complete required authority rule rather than
          trusting the intermediary's aggregate statement.
        </t>
      </section>

      <section anchor="attack-stale">
        <name>Stale but Authentic Decision</name>
        <t>
          Evidence remains cryptographically valid after the relevant policy or revocation
          generation changes.  Current applicability fails and the act is re-authorized or
          rejected.
        </t>
      </section>

      <section anchor="attack-cross-context">
        <name>Cross-Tenant or Cross-Sink Substitution</name>
        <t>
          Evidence issued for one tenant, jurisdiction, resource, or effectuation sink is presented
          in another.  Audience/sink/domain or authorized-use binding rejects the substitution
          where the deployment requires such binding.
        </t>
      </section>

      <section anchor="attack-audit-only">
        <name>Audit Artifact Presented as Authority</name>
        <t>
          A receipt proves that a statement was registered or logged, but the statement does not
          semantically authorize the act or was registered after effectuation.  The Finality Sink
          rejects because provenance alone does not satisfy DecisionAllows and applicability.
        </t>
      </section>
    </section>

    <section anchor="high-assurance">
      <name>High-Assurance Enforcement</name>
      <figure anchor="fig-high-assurance">
        <name>Decision verification below a compromisable host</name>
        <artwork type="ascii-art">
Compromisable plane
+----------------------------------------------+
| Agent | App | OS | Orchestrator | Local PDP  |
+------------------------+---------------------+
                         |
                         v
             +-------------------------+
             | PROTECTED FINALITY SINK |
             | trusted authority roots |
             | exact-act verification  |
             | current state           |
             | required decision set   |
             | atomic protected commit |
             +------------+------------+
                          |
                          v
                       EFFECT K
        </artwork>
      </figure>
      <t>
        A high-assurance profile cannot rely on a compromised host to attest that it performed the
        required decision checks.  Verification state and protected commit must be anchored below
        or outside that trust boundary.
      </t>
    <figure anchor="fig-high-assurance-authority"><name>Decision verification below a compromised host</name><artwork type="ascii-art">
Compromisable plane
+--------------------------------------------------+
| Agent | App | OS | Orchestrator | Evidence Cache|
+--------------------------+-----------------------+
                           |
                           v
              +----------------------------+
              | PROTECTED FINALITY SINK    |
              | reconstruct exact C        |
              | resolve protected R(C)     |
              | verify E_i / live decisions|
              | current generation         |
              | replay / use constraints   |
              | protected commit           |
              +-------------+--------------+
                            |
                            v
                         EFFECT K
</artwork></figure></section>

    <section anchor="deployment-patterns">
      <name>Deployment Patterns</name>
      <section anchor="direct-live">
        <name>Finality Sink Performs Live Decision Query</name>
        <t>
          The sink contacts the required authority immediately before effectuation.  This can
          minimize stale-state risk and avoid portable bearer-like evidence.
        </t>
      </section>
      <section anchor="portable-ede">
        <name>Portable Signed Decision Evidence</name>
        <t>
          The authority issues a signed Permit, statement, Attestation Result, or other protected
          object that the sink verifies later.  This is useful for asynchronous and multi-hop
          workflows.
        </t>
      </section>
      <section anchor="ede-reference">
        <name>Protected Decision Reference</name>
        <t>
          The upstream component carries only a protected identifier or digest, and the sink
          retrieves or reconstructs the authoritative decision from a protected service.
        </t>
      </section>
      <section anchor="hybrid">
        <name>Hybrid Evidence plus Current-State Check</name>
        <t>
          The sink verifies signed issuance-time evidence and separately checks current revocation,
          policy generation, or risk state before commit.
        </t>
      </section>
    </section>

    <section anchor="performance">
      <name>Performance and Availability</name>
      <t>
        Requiring synchronous calls to several authorities on every hot-path operation can be
        expensive and can reduce availability.  Portable evidence, protected local status roots,
        mirrored generations, cached authority metadata, and threshold rules can reduce hot-path
        cost when their staleness and replay semantics are explicit.
      </t>
      <t>
        A performance optimization MUST NOT silently convert a prevention profile into an
        audit-only profile.  Deployments SHOULD document decision latency, evidence-verification
        latency, cache lifetime, propagation delay, and the maximum interval during which an
        otherwise authentic decision can remain accepted after a load-bearing state change.
      </t>
    </section>

    <section anchor="industry-alignment">
      <name>Complementary Industrial Alignment</name>
      <t>
        Microsoft Entra Continuous Access Evaluation demonstrates event-driven enforcement of
        critical identity and risk changes by relying applications and resource providers
        <xref target="MS-CAE"/>.  Amazon Verified Permissions/Cedar provides externalized
        authorization decisions over principal, action, resource, and context
        <xref target="AWS-AVP"/>.  Google Cloud IAM deny policies provide centrally managed
        prohibitions over principals and permissions <xref target="GOOGLE-IAM"/>.
      </t>
      <t>
        NVIDIA attestation and Arm CCA provide protected-compute and attestation mechanisms that
        can supply trust inputs or host protected verification/enforcement components
        <xref target="NVIDIA-ATTEST"/> <xref target="ARM-CCA"/>.
      </t>
      <t>
        These systems are cited as industrial alignment or integration points only.  This document
        does not assert that any named product is insecure, incomplete, vulnerable, non-conforming,
        or required to implement this architecture.  A particular deployment may already provide
        some or all of the proposed invariant.
      </t>
    </section>

    <section anchor="test-vectors">
      <name>Required Classes of Test Vectors</name>
      <t>A concrete profile or implementation SHOULD test at least:</t>
      <ul spacing="normal">
        <li>all required authorities issue applicable ALLOW decisions for exact C: succeed;</li>
        <li>one mandatory authority missing: reject;</li>
        <li>one authority returns DENY: reject according to the authority-set rule;</li>
        <li>evidence issuer does not match required authority: reject;</li>
        <li>evidence for C1 presented with C2: reject;</li>
        <li>evidence replayed outside permitted transaction or use: reject;</li>
        <li>policy/revocation generation changed after issuance: re-authorize or reject;</li>
        <li>evidence presented to wrong tenant/sink where sink binding is required: reject;</li>
        <li>SCITT receipt valid but underlying statement does not authorize C: reject;</li>
        <li>Attestation Result valid but not applicable to the acting workload/current state: reject;</li>
        <li>threshold rule satisfied by allowed authority combination: succeed;</li>
        <li>threshold rule not satisfied: reject;</li>
        <li>live-query challenge mismatch: reject;</li>
        <li>evidence unavailable under a fail-closed prevention profile: remain non-effective;</li>
        <li>alternate path reaches effect without evidence verification: prevention profile fails;</li>
        <li>audit record created only after effect: classify as audit/accountability, not prevention.</li>
      </ul>
    <t>Implementations SHOULD include negative tests for: valid evidence from the wrong authority;
valid evidence bound to the wrong act; threshold rules with insufficient ALLOW decisions;
DENY-dominant authorities; UNKNOWN and timeout handling; stale basis generations; dependency
graphs evaluated over inconsistent upstream context; replay at another sink or transaction; a
live query with fresh TLS but no exact-act binding; and alternate effectuation paths that bypass
the required-authority rule.</t></section>

    <section anchor="questions-community">
      <name>Questions to the IETF Community</name>
      <t>
        Criticism, corrections, counterexamples, operational experience, prior-art pointers,
        evidence that existing IETF mechanisms already provide an equivalent invariant, and
        recommendations to narrow, merge, or stop the work are explicitly invited.  Negative
        answers are useful outcomes.
      </t>
      <ol spacing="normal">
        <li>Does <xref target="MUNOZ-EVIDENCE"/> together with <xref target="MUNOZ-SCITT"/> already provide the full proposed invariant when the actual effectuation boundary verifies the Permit before effectuation?</li>
        <li>If not, what exact residual property remains: authority provenance, exact-act binding, currentness, sink binding, required-decision-set semantics, or effectuation coupling?</li>
        <li>Should this work therefore be a BCP or architecture/problem statement rather than a new evidence format?</li>
        <li>Is the term External Decision Evidence useful, or does existing IETF terminology already cover the same architectural role?</li>
        <li>When a Resource Server directly queries an authoritative third party over an authenticated channel immediately before effectuation, is portable evidence unnecessary?</li>
        <li>When does a live authenticated query provide stronger semantics than a portable signed decision object?</li>
        <li>Should portable Decision Evidence normally be audience/sink bound, or is exact-act binding sufficient for common deployments?</li>
        <li>How should policy-generation or revocation changes invalidate otherwise authentic Decision Evidence?</li>
        <li>How should several required authorities be represented without defining a universal policy language?</li>
        <li>Are threshold or quorum decision rules appropriate in an IETF security-architecture document?</li>
        <li>How should an implementation distinguish Decision Evidence from bearer execution authority?</li>
        <li>What canonicalization rules are necessary to prevent evidence from being rebound to a semantically different act?</li>
        <li>Can SCITT receipts provide useful transparency and accountability while remaining outside the hot path?</li>
        <li>What is the correct relationship between SCITT registration proof and execution-time authorization?</li>
        <li>For RATS, when is an Attestation Result sufficient as a required external decision, and when must it be rebound to a concrete Candidate Act?</li>
        <li>How should WIMSE identity and delegation context be associated with evidence without duplicating WIMSE credential formats?</li>
        <li>Which existing commercial or standards-based systems already guarantee this invariant in full?</li>
        <li>What counterexample would falsify or materially narrow the need for this architecture?</li>
        <li>Which deployment classes inherently provide only auditability or mitigation rather than prevention?</li>
        <li>Which venue is most appropriate for further discussion: OAuth, WIMSE, SCITT, RATS, DISPATCH, SAAG, or another group?</li>
      </ol>
    </section>

    <section anchor="ietf-venues">
      <name>Potential IETF Discussion Venues and Scope Boundaries</name>
      <section anchor="venue-oauth">
        <name>OAuth</name>
        <t>
          OAuth is directly relevant because Token Introspection, Transaction Tokens, and current
          agent/delegation work address authorization context and decisions.  This document should
          not presume that OAuth owns non-OAuth effectuation semantics.
        </t>
      </section>
      <section anchor="venue-wimse">
        <name>WIMSE</name>
        <t>
          WIMSE is highly relevant to distributed workload identity and authorization context, and
          current authorization-evidence work is discussed in that community.
        </t>
      </section>
      <section anchor="venue-scitt">
        <name>SCITT</name>
        <t>
          SCITT is relevant to signed statements, transparency, registration, and receipts.  A
          decision-evidence profile can compose with SCITT without turning every SCITT statement
          into execution authority.
        </t>
      </section>
      <section anchor="venue-rats">
        <name>RATS</name>
        <t>
          RATS is relevant where the required external decision is an attestation or trust
          appraisal, or where the Finality Sink itself requires attested protection.
        </t>
      </section>
      <section anchor="venue-dispatch">
        <name>DISPATCH</name>
        <t>
          DISPATCH can be useful for routing if the work cuts across OAuth, WIMSE, SCITT, RATS, and
          general security architecture without a clear single owner.
        </t>
      </section>
      <section anchor="venue-saag">
        <name>SAAG</name>
        <t>
          SAAG is useful for broad Security Area architectural criticism.  It is not a Working
          Group that adopts documents.
        </t>
      </section>
      <section anchor="venue-no-presumption">
        <name>No Presumed Home</name>
        <t>
          This document does not claim that any named group should adopt the work.  The preferred
          sequence is overlap review, criticism, validation of any residual gap, and routing only
          if a distinct interoperable work item remains justified.
        </t>
      </section>
    </section>

    <section anchor="related-drafts">
      <name>Relationship to Other Execution-Finality Internet-Drafts</name>
      <t>
        This document isolates third-party decision binding rather than repeating the broader
        execution-finality architecture.
      </t>
      <ul spacing="normal">
        <li>The protocol-layer draft defines the broad Candidate Act to Non-Effective State to protected validation to Finality Sink architecture.</li>
        <li>The agentic draft applies execution finality to AI tool dispatch.</li>
        <li>The hardware-rooted draft discusses protected enforcement for high-consequence infrastructure.</li>
        <li>The RATS/attestation-bound draft connects trusted workload state to consequential authority.</li>
        <li>The state/policy-continuity draft asks whether the earlier decision basis remains applicable before effectuation.</li>
        <li>The finality-bound-revocation draft asks whether withdrawn authority can survive to protected commit.</li>
        <li>The consequence-path-completeness draft asks whether the effect can bypass enforcement entirely.</li>
        <li>The purpose-execution-finality draft addresses purpose/capability laundering and cross-domain data reuse.</li>
        <li>The AI-interoperability draft applies bounded finality to third-party AI/device interoperability.</li>
        <li>This document asks whether a required independent decision can be independently established as real, applicable, and load-bearing at the final effect.</li>
      </ul>
      <artwork type="ascii-art">
State continuity:
    Is the earlier decision basis still applicable?

Revocation finality:
    Has authority been withdrawn before effectuation?

Consequence-path completeness:
    Can the effect avoid enforcement entirely?

Third-party decision binding:
    Can the Finality Sink independently establish that the
    REQUIRED external authority actually issued the applicable
    decision for this exact act?
      </artwork>
      <t>
        Related documents include <xref target="DAS-PROTOCOL"/>, <xref target="DAS-AGENTIC"/>,
        <xref target="DAS-HARDWARE"/>, <xref target="DAS-RATS"/>, <xref target="DAS-STATE"/>,
        <xref target="DAS-REVOCATION"/>, <xref target="DAS-PATH"/>, <xref target="DAS-PURPOSE"/>,
        and <xref target="DAS-INTEROP"/>.
      </t>
    </section>

    <section anchor="implementations">
      <name>Public Implementations and Companion Engineering Material</name>
      <t>
        The following repositories provide related execution-finality engineering material.  They
        are not represented as standardized External Decision Evidence implementations unless the
        relevant code and profile explicitly provide that property.
      </t>
      <ul spacing="normal">
        <li>Execution-Finality Architecture for Machine-Generated Acts: architectural background for Candidate Acts, protected validation, evidence, and Finality Sinks.</li>
        <li>Hardened Challenge-Bound Execution Finality for AI Interoperability: runnable challenge binding, exact-effect binding, policy/epoch/revocation checks, replay protection, and protected finality at selected sinks.</li>
      </ul>
      <t>
        The companion materials are <xref target="GH-ARCH"/> and <xref target="GH-HARDENED"/>.
        A future implementation of the exact EDE profile described here should be identified as
        such only after its issuer, act, currentness, authority-set, and sink-binding semantics are
        verified.
      </t>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <t>
        Security depends simultaneously on correct required-authority policy, evidence integrity,
        exact-act applicability, current-state handling, Finality Sink integrity, and
        non-bypassable effectuation.  Strong cryptography on an irrelevant or stale decision does
        not create authorization.
      </t>

      <section anchor="sec-compromised-intermediary">
        <name>Compromised Intermediary</name>
        <t>
          The Finality Sink MUST NOT rely on an untrusted intermediary's assertion that a required
          external decision occurred.  It must verify EDE or perform an authenticated equivalent
          query.
        </t>
      </section>

      <section anchor="sec-requester">
        <name>Compromised Requester or Agent</name>
        <t>
          A requester may present selectively chosen evidence, omit negative results, or attempt to
          construct a Candidate Act after decision issuance.  The sink reconstructs the exact act
          and required authority set independently.
        </t>
      </section>

      <section anchor="sec-authority-compromise">
        <name>Decision-Authority Compromise</name>
        <t>
          If a required EDA is compromised, it can issue malicious ALLOW decisions.  Higher-
          assurance profiles can use independent authorities, threshold rules, transparency,
          separation of duties, or narrower trust scopes.  The base model does not claim to detect
          a fully compromised trusted authority.
        </t>
      </section>

      <section anchor="sec-forgery">
        <name>Evidence Forgery</name>
        <t>
          Evidence authentication keys, algorithms, trust roots, and verification policy must be
          appropriate to the deployment.  Unknown or untrusted issuers MUST NOT satisfy a required
          authority rule.
        </t>
      </section>

      <section anchor="sec-wrong-authority">
        <name>Wrong-Authority Substitution</name>
        <t>
          A valid signature from authority B does not satisfy a requirement for authority A merely
          because both issue syntactically similar evidence.
        </t>
      </section>

      <section anchor="sec-act-substitution">
        <name>Exact-Act Substitution</name>
        <t>
          Security-relevant act parameters must be covered by the decision binding.  Canonicalization
          ambiguities can otherwise permit semantic substitution.
        </t>
      </section>

      <section anchor="sec-replay">
        <name>Evidence Replay and Bearerization</name>
        <t>
          Evidence can become a bearer-like authority if it is reusable without appropriate act,
          sink, transaction, freshness, or consumption constraints.  Profiles MUST define replay
          semantics explicitly.
        </t>
      </section>

      <section anchor="sec-stale">
        <name>Stale Decision Basis</name>
        <t>
          An authentic decision can become inapplicable after policy, risk, reference, resource,
          account, or trust state changes.  Currentness is distinct from signature validity.
        </t>
      </section>

      <section anchor="sec-revocation">
        <name>Revocation After Evidence Issuance</name>
        <t>
          If revocation is load-bearing, the Finality Sink must verify current revocation state or
          otherwise establish that the evidence remains applicable before commit.
        </t>
      </section>

      <section anchor="sec-omission">
        <name>Required Evidence Omission</name>
        <t>
          The required-authority rule must be protected.  An attacker MUST NOT satisfy a
          multi-authority policy by presenting only the easiest positive decision.
        </t>
      </section>

      <section anchor="sec-conflicting">
        <name>Conflicting Authorities and Threshold Rules</name>
        <t>
          Profiles using multiple authorities must define how DENY, CHALLENGE, UNKNOWN, timeout,
          and conflicting decisions compose.  Ambiguity SHOULD fail closed for prevention
          profiles.
        </t>
      </section>

      <section anchor="sec-audience">
        <name>Audience, Sink, Tenant, and Jurisdiction Confusion</name>
        <t>
          Evidence valid for one context can be unsafe in another.  Profiles should bind or
          re-establish these dimensions wherever cross-context reuse can change authorization.
        </t>
      </section>

      <section anchor="sec-canonicalization">
        <name>Canonicalization</name>
        <t>
          The representation hashed or signed must correspond to the semantics evaluated by the
          EDA and effected by the sink.  Alternate encodings, default values, omitted fields,
          parameter ordering, external references, and dynamically resolved values require
          explicit treatment.
        </t>
      </section>

      <section anchor="sec-toctou">
        <name>TOCTOU Between Evidence Verification and Commit</name>
        <t>
          A successful verification followed by an unprotected delay reintroduces a race.  The
          final current-state check and protected commit require atomicity, generation locking,
          compare-and-swap, transaction serialization, or an equivalent invariant where
          concurrent state changes are load-bearing.
        </t>
      </section>

      <section anchor="sec-cache-rollback">
        <name>Evidence Cache Rollback</name>
        <t>
          An attacker may restore an older positive decision cache.  Protected generations,
          authenticated roots, monotonic state, or equivalent anti-rollback mechanisms are needed
          where cached evidence is accepted.
        </t>
      </section>

      <section anchor="sec-events">
        <name>Lost or Reordered Decision Events</name>
        <t>
          Push-based state or revocation updates require authenticated ordering, gap detection, or
          equivalent rules.  Loss of a negative event MUST NOT silently preserve a prevention claim
          that requires current state.
        </t>
      </section>

      <section anchor="sec-alternate-path">
        <name>Alternate Effectuation Path</name>
        <t>
          Every technical path capable of producing the protected consequence must preserve the
          required-decision invariant.  An alternate API, queue, direct storage path, administrative
          interface, device path, or recovery mechanism can otherwise bypass perfect evidence
          verification.
        </t>
      </section>

      <section anchor="sec-fail-open">
        <name>Fail-Open Behavior</name>
        <t>
          Decision-authority unavailability creates availability pressure.  For an operation whose
          prevention profile requires the authority, "decision unavailable" MUST NOT silently
          become ALLOW.  Lower-assurance fallback modes must be explicit.
        </t>
      </section>

      <section anchor="sec-dos">
        <name>Denial of Service</name>
        <t>
          Attackers can target EDAs, evidence retrieval, transparency services, or status channels
          to block effectuation.  Replication and caching can improve availability, but not by
          silently weakening required currentness or authority-set semantics.
        </t>
      </section>

      <section anchor="sec-audit-authority">
        <name>Audit Receipt Confused with Execution Authority</name>
        <t>
          A receipt proving that a statement was registered, logged, or witnessed does not by
          itself prove that the statement authorizes C or that the protected effect was
          conditional on it.
        </t>
      </section>

      <section anchor="sec-scitt-semantics">
        <name>SCITT Registration Is Not Semantic Correctness</name>
        <t>
          SCITT transparency strengthens provenance and accountability.  The Finality Sink still
          needs application semantics establishing that the underlying statement is from the
          required authority and applies to the pending Candidate Act.
        </t>
      </section>

      <section anchor="sec-verifier">
        <name>Verifier Compromise</name>
        <t>
          Where the EDA is a RATS Verifier or another appraisal component, compromise can produce
          malicious positive results.  The trust model and any multi-verifier or threshold
          controls must be explicit.
        </t>
      </section>

      <section anchor="sec-crash">
        <name>Crash Consistency</name>
        <t>
          A crash between required-evidence verification, execution-authority consumption, and
          protected commit must not create a replay or bypass.  Transactional or idempotent recovery
          may be required.
        </t>
      </section>

      <section anchor="sec-retention">
        <name>Evidence Retention</name>
        <t>
          Long-lived evidence can improve auditability but increase privacy, correlation, and key-
          compromise exposure.  Retention should match the security and accountability objective.
        </t>
      </section>

      <section anchor="sec-out-of-scope">
        <name>Out-of-Scope Failures</name>
        <t>
          The architecture does not infer human intent, guarantee that an EDA's policy is morally
          or legally correct, defeat compromise of every trust root, prevent physical subversion
          outside the hardware model, or control consequences outside the declared effectuation
          domain.
        </t>
      </section>
    </section>

    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>
        Decision Evidence can reveal identity, transaction details, risk classifications, account
        status, purpose, resource relationships, device posture, jurisdiction, or operational
        timing.  Profiles SHOULD minimize evidence contents and SHOULD avoid exposing raw
        decision-basis inputs when a scoped decision, digest, selective-disclosure statement, or
        protected reference is sufficient.
      </t>
      <t>
        Stable evidence identifiers can become correlators across services.  Audience-scoped
        identifiers, pairwise references, local verification, and bounded retention can reduce
        linkability where compatible with the security objective.
      </t>
    </section>

    <section anchor="review-request">
      <name>Criticism, Corrections, and Review Invited</name>
      <t>
        This document is intentionally presented for adversarial technical review.  Reviewers are
        invited to identify incorrect assumptions, existing standards or products that already
        provide the full property, deployment cases where the proposed abstraction is unnecessary,
        evidence formats that already encode every required semantic, unmodeled bypass paths,
        privacy costs, latency costs, or terminology that conflicts with established IETF usage.
      </t>
      <t>
        The strongest requested counterexample is a concrete deployment in which existing
        authorization-evidence, SCITT, OAuth, RATS, WIMSE, or another standardized mechanism
        already guarantees that a required independent decision for the exact act is both
        independently verifiable and technically mandatory at the non-bypassable effectuation
        boundary.  Such evidence should narrow, merge, or correct this proposal rather than be
        treated as opposition.
      </t>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

    <section anchor="conclusion">
      <name>Conclusion</name>
      <t>
        A distributed system can contain excellent policy engines, signed evidence, receipts,
        attestation results, and audit trails while still leaving one question unresolved: did the
        actual protected effect technically depend on the required independent decision for this
        exact act?
      </t>
      <artwork type="ascii-art">
"Authority Y was checked"
          !=
"Finality Sink independently established
 Y's applicable decision for exact act C"

For the prevention profile:

Required decision missing or inapplicable
          ==&gt;
Candidate remains non-effective
      </artwork>
      <t>
        Existing mechanisms that already enforce this relationship already satisfy the core
        invariant.  The purpose of this document is to make the decision-to-effect relationship
        explicit, testable, composable with existing IETF mechanisms, and open to correction by
        the community.
      </t>
    <t>A useful implementation should be able to explain not merely that "authorization failed"
but which authority requirement was unsatisfied, which evidence predicate failed, whether the
failure was exact-act binding, freshness, currentness, replay, dependency consistency, rule
composition, or effectuation-path coverage, and under which protected generation the decision
was evaluated.</t></section>
  </middle>

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

      <reference anchor="RFC2119" target="https://www.rfc-editor.org/rfc/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"/>
      </reference>

      <reference anchor="RFC8174" target="https://www.rfc-editor.org/rfc/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"/>
      </reference>
    </references>

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

      <reference anchor="RFC7662" target="https://www.rfc-editor.org/rfc/rfc7662">
        <front>
          <title>OAuth 2.0 Token Introspection</title>
          <author fullname="Justin Richer" initials="J." surname="Richer"/>
          <date year="2015" month="October"/>
        </front>
        <seriesInfo name="RFC" value="7662"/>
      </reference>

      <reference anchor="RFC9334" target="https://www.rfc-editor.org/rfc/rfc9334">
        <front>
          <title>Remote ATtestation procedureS (RATS) Architecture</title>
          <author><organization>IETF</organization></author>
          <date year="2023" month="January"/>
        </front>
        <seriesInfo name="RFC" value="9334"/>
      </reference>

      <reference anchor="RFC9421" target="https://www.rfc-editor.org/rfc/rfc9421">
        <front>
          <title>HTTP Message Signatures</title>
          <author><organization>IETF</organization></author>
          <date year="2024" month="February"/>
        </front>
        <seriesInfo name="RFC" value="9421"/>
      </reference>

      <reference anchor="RFC9943" target="https://www.rfc-editor.org/rfc/rfc9943">
        <front>
          <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
          <author><organization>IETF</organization></author>
          <date year="2026" month="June"/>
        </front>
        <seriesInfo name="RFC" value="9943"/>
      </reference>

      <reference anchor="TXN-TOKENS" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-transaction-tokens/">
        <front>
          <title>Transaction Tokens</title>
          <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale"/>
          <author fullname="George Fletcher" initials="G." surname="Fletcher"/>
          <author fullname="Pieter Kasselman" initials="P." surname="Kasselman"/>
          <date year="2026" month="July"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-11"/>
      </reference>

      <reference anchor="MUNOZ-EVIDENCE" target="https://datatracker.ietf.org/doc/draft-munoz-wimse-authorization-evidence/">
        <front>
          <title>Signed Authorization-Evidence Records for WIMSE-Authorized AI Agent Actions</title>
          <author fullname="Christian Munoz" initials="C." surname="Munoz"/>
          <date year="2026" month="July"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-munoz-wimse-authorization-evidence-01"/>
      </reference>

      <reference anchor="MUNOZ-SCITT" target="https://datatracker.ietf.org/doc/draft-munoz-scitt-permit-profile/">
        <front>
          <title>A SCITT Profile for Pre-Execution AI Action Authorization Records</title>
          <author fullname="Christian Munoz" initials="C." surname="Munoz"/>
          <date year="2026" month="July"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-munoz-scitt-permit-profile-01"/>
      </reference>

      <reference anchor="AIAGENT-AUTH" target="https://datatracker.ietf.org/doc/draft-klrc-aiagent-auth/">
        <front>
          <title>AI Agent Authentication and Authorization</title>
          <author><organization>Internet-Draft authors</organization></author>
          <date year="2026" month="July"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-klrc-aiagent-auth-03"/>
      </reference>

      <reference anchor="WIMSE-ARCH" target="https://datatracker.ietf.org/doc/draft-ietf-wimse-arch/">
        <front>
          <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
          <author><organization>IETF WIMSE Working Group</organization></author>
          <date year="2026" month="July"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-08"/>
      </reference>

      <reference anchor="MS-CAE" target="https://learn.microsoft.com/en-us/entra/architecture/resilience-with-continuous-access-evaluation">
        <front>
          <title>Build resilience by using Continuous Access Evaluation in Microsoft Entra ID</title>
          <author><organization>Microsoft</organization></author>
          <date year="2026"/>
        </front>
      </reference>

      <reference anchor="AWS-AVP" target="https://docs.aws.amazon.com/verifiedpermissions/">
        <front>
          <title>Amazon Verified Permissions Documentation</title>
          <author><organization>Amazon Web Services</organization></author>
          <date year="2026"/>
        </front>
      </reference>

      <reference anchor="GOOGLE-IAM" target="https://docs.cloud.google.com/iam/docs/deny-access">
        <front>
          <title>Deny access to resources — Identity and Access Management</title>
          <author><organization>Google Cloud</organization></author>
          <date year="2026"/>
        </front>
      </reference>

      <reference anchor="NVIDIA-ATTEST" target="https://docs.nvidia.com/attestation/attestation-client-tools-sdk/latest/gpu_and_switch_attestation.html">
        <front>
          <title>NVIDIA Attestation SDK — GPU and Switch Attestation</title>
          <author><organization>NVIDIA</organization></author>
          <date year="2026"/>
        </front>
      </reference>

      <reference anchor="ARM-CCA" target="https://www.arm.com/architecture/security-features/arm-confidential-compute-architecture">
        <front>
          <title>Arm Confidential Compute Architecture</title>
          <author><organization>Arm</organization></author>
          <date year="2026"/>
        </front>
      </reference>

      <reference anchor="DAS-PROTOCOL" target="https://datatracker.ietf.org/doc/draft-das-execution-finality-protocol-layer/">
        <front>
          <title>The Missing Execution-Finality Protocol Layer of the Internet</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-execution-finality-protocol-layer-00"/>
      </reference>

      <reference anchor="DAS-AGENTIC" target="https://datatracker.ietf.org/doc/draft-das-agentic-execution-finality/">
        <front>
          <title>Execution-Finality for Agentic AI Tool Dispatch</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-agentic-execution-finality-00"/>
      </reference>

      <reference anchor="DAS-HARDWARE" target="https://datatracker.ietf.org/doc/draft-das-hardware-enforced-execution-finality/">
        <front>
          <title>Hardware-Rooted National Control to Prevent Covert Intelligence Data Export and Unauthorized Frontier and Neural AI/Autonomous Acts in Critical Infrastructure</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-hardware-enforced-execution-finality-00"/>
      </reference>

      <reference anchor="DAS-RATS">
        <front>
          <title>Attestation-Bound Execution Finality for GPU, AI Accelerator, DPU, SmartNIC, and Confidential-Computing Infrastructure</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="September"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-rats-attestation-bnd-execution-finality-04"/>
      </reference>

      <reference anchor="DAS-STATE">
        <front>
          <title>When Valid Authorization Becomes Stale: State and Policy Continuity at the Execution-Finality Boundary</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="September"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-state-policy-continuity-finality-00"/>
      </reference>

      <reference anchor="DAS-REVOCATION">
        <front>
          <title>Revoked but Still Executable: Closing the Authorization-to-Effect Gap with Finality-Bound Revocation</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="September"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-finality-bound-revocation-00"/>
      </reference>

      <reference anchor="DAS-PATH">
        <front>
          <title>When the Gate Can Be Bypassed: Consequence-Path Completeness for Execution Finality</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="September"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-consequence-path-completeness-00"/>
      </reference>

      <reference anchor="DAS-PURPOSE">
        <front>
          <title>Data-Purpose Laundering Prevention: Execution-Finality for Preventing Cross-Domain Data Reuse</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="September"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-purpose-execution-finality-03"/>
      </reference>

      <reference anchor="DAS-INTEROP" target="https://datatracker.ietf.org/doc/draft-das-execution-finality-ai-interoperability/">
        <front>
          <title>Breaking the Apple-Siri EU DMA Deadlock Without Sacrificing Privacy or Security</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-das-execution-finality-ai-interoperability-00"/>
      </reference>

      <reference anchor="GH-ARCH" target="https://github.com/sangmdas/Execution-Finality-Architechture-for-AI-Machines-">
        <front>
          <title>Execution-Finality Architecture for Machine-Generated Acts</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026"/>
        </front>
      </reference>

      <reference anchor="GH-HARDENED" target="https://github.com/sangmdas/Hardened-Challenge-Bound-Execution-Finality-for-AI-Interoperability">
        <front>
          <title>Hardened Challenge-Bound Execution Finality for AI Interoperability</title>
          <author fullname="Sangam Das" initials="S." surname="Das"/>
          <date year="2026"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
