<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 4.0.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-williams-oauth-poi-chained-state-00" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="PoI Chained State">Proof-of-Intent (PoI) Chained State, Multi-Party Escalation, and Concurrency Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-williams-oauth-poi-chained-state-00"/>
    <author initials="P. C." surname="Williams" fullname="Paul Charles Williams">
      <organization abbrev="Barefoot Coders">Barefoot Coders, LLC</organization>
      <address>
        <email>paul@barefootcoders.com</email>
        <uri>https://mandrelproject.ai</uri>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol (oauth)</workgroup>
    <keyword>OAuth</keyword>
    <keyword>Proof-of-Intent</keyword>
    <keyword>Human-in-the-Loop</keyword>
    <keyword>AI Agents</keyword>
    <keyword>Multi-Party Authorization</keyword>
    <keyword>Concurrency</keyword>
    <keyword>Mandrel</keyword>
    <abstract>
      <?line 44?>

<t>The Proof-of-Intent (PoI) Core Protocol (draft-williams-oauth-poi-core-00) specifies a stateless, two-node (<tt>[R0, R1]</tt>) cryptographic framework for verifying synchronous Human-in-the-Loop (HITL) approvals, rejections, and single-hop parameter modifications. However, high-consequence enterprise workflows -- such as multi-tier loan underwriting, dual-control clinical orders, and asynchronous batch agent queues -- frequently require asynchronous review, hierarchical escalation when a human modification exceeds the first operator's organizational authority, and deterministic conflict resolution when multiple approvers act concurrently.</t>
      <t>This document extends PoI Core to define: (1) an asynchronous operating mode separating Intent Escrowing from Just-in-Time Challenge Minting to eliminate Time-of-Check to Time-of-Use (TOCTOU) state drift; (2) multi-hop hash-linked assertion chains (R0 -&gt; R1 -&gt; ... -&gt; Rn) supporting hierarchical SUPERCEDE escalations and multi-party co-signatures; (3) a Linear Chain Compare-and-Swap (CAS) concurrency model on head_node_hash that resolves races between competing approvers without ambiguous tree forks; and (4) extended verification rules (including bounded chain length DoS protection) and concurrency error codes.</t>
    </abstract>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation-for-stateful-and-multi-hop-poi-workflows">
        <name>Motivation for Stateful and Multi-Hop PoI Workflows</name>
        <t><xref target="POI-CORE"/> defines the stateless, two-node (<tt>[R0, R1]</tt>) Proof-of-Intent protocol, which satisfies synchronous, single-approver Human-in-the-Loop (HITL) interactions. However, complex enterprise deployments introduce three additional requirements that exceed a two-node stateless model:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Asynchronous Approval Queues:</strong> An autonomous agent may prepare a batch of proposed actions (e.g., loan underwriting packages or clinical refill orders) hours before a human reviewer logs in. Issuing a long-lived challenge at proposal time exposes the system to Time-of-Check to Time-of-Use (TOCTOU) data drift.</t>
          </li>
          <li>
            <t><strong>Hierarchical Escalation of Human Modifications (<tt>R0 -&gt; R1 -&gt; R2</tt>):</strong> When a human operator modifies parameters via a <tt>SUPERCEDE</tt> assertion (<tt>R1</tt>), the new parameters may exceed that operator's organizational authority limit, requiring escalation to a next-line approver (<tt>R2</tt>) who must cryptographically verify both the original agent proposal (<tt>R0</tt>) and the first operator's signed adjustment and justification (<tt>R1</tt>).</t>
          </li>
          <li>
            <t><strong>Concurrent Approver Race Conditions:</strong> Multiple authorized approvers may inspect a queued intent simultaneously and submit competing transitions against the same parent node (e.g., Approver 1 submits <tt>APPROVE H0</tt> while Approver 2 submits <tt>SUPERCEDE H0</tt>).</t>
          </li>
        </ol>
      </section>
      <section anchor="relationship-to-poi-core-and-orthogonality">
        <name>Relationship to PoI Core and Orthogonality</name>
        <t>This document normatively extends <xref target="POI-CORE"/>. All Ephemeral Intent Key (EIK), Key Certification Token (<tt>application/poi+jwt;kind=kct</tt>), PoP Key Chaining Rotation (<tt>application/poi+jwt;kind=roll</tt>), JCS canonical hashing (<xref target="RFC8785"/>), Assurance Tier (<tt>session-pop</tt>, <tt>webauthn-uv</tt>, <tt>webauthn-hw</tt>), and Countersigned Intent Receipt (<tt>application/poi+jwt;kind=rcpt</tt>) specifications from <xref target="POI-CORE"/> apply unchanged.</t>
        <t>Consistent with <xref target="POI-CORE"/>, organizational policy rules (such as which dollar amount or medication class triggers escalation) and domain record locking strategies remain strictly orthogonal to PoI cryptographic verification.</t>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <section anchor="requirements-language">
        <name>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, as shown here.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>In addition to the terms defined in Section 2.2 of <xref target="POI-CORE"/>, this specification uses the following terms:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Escrowed Intent:</strong> A proposed transaction (<tt>R0</tt>) or partially approved chain (<tt>[R0, ..., Rk]</tt>) persisted by a Resource Server in a non-terminal pending state awaiting asynchronous human review or next-line escalation.</t>
          </li>
          <li>
            <t><strong>Head Node Hash (<tt>head_node_hash</tt>):</strong> The <tt>node_hash</tt> (<tt>Hk</tt>) of the latest verified node (<tt>seq: k</tt>) in an Escrowed Intent's <tt>chain</tt> on the Resource Server.</t>
          </li>
          <li>
            <t><strong>Linear Chain Compare-and-Swap (CAS):</strong> The atomic state transition rule requiring any candidate node at <tt>seq: k + 1</tt> to reference the Resource Server's current <tt>head_node_hash</tt> (<tt>Hk</tt>) as its parent hash.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="asynchronous-operating-mode-escrowing-and-just-in-time-minting">
      <name>Asynchronous Operating Mode (Escrowing and Just-in-Time Minting)</name>
      <section anchor="the-stale-challenge-and-toctou-problem">
        <name>The Stale Challenge and TOCTOU Problem</name>
        <t>In asynchronous workflows, hours or days may elapse between when an AI agent proposes an action (<tt>t0</tt>) and when a human approver reviews it (<tt>t1</tt>). If the Resource Server mints a signed Intent Challenge Object (ICO) at <tt>t0</tt> with a multi-day expiration window:
1. Underlying domain state (e.g., patient lab results, allergy records, or borrower credit flags) may change between <tt>t0</tt> and <tt>t1</tt> (TOCTOU drift).
2. A long-lived challenge creates an unnecessarily wide replay and tampering window.</t>
        <t>To prevent TOCTOU drift while keeping cryptographic validity windows tight, Resource Servers supporting asynchronous HITL MUST split <strong>Intent Escrowing</strong> from <strong>Just-in-Time Challenge Minting</strong>.</t>
      </section>
      <section anchor="stage-1-asynchronous-intent-escrowing">
        <name>Stage 1: Asynchronous Intent Escrowing</name>
        <t>At <tt>t0</tt> (when the autonomous agent invokes the Resource Server without an active human session):
1. The Resource Server validates the proposed parameters, computes a snapshot digest of relevant domain state (<tt>context_state_hash</tt>), and stores the proposal in <tt>PENDING_APPROVAL</tt> state under a unique <tt>intent_id</tt>.
2. The Resource Server returns HTTP <tt>202 Accepted</tt> (or <tt>403 Forbidden</tt> with <tt>PoI-Challenge: error="intent_proof_required", intent_id="..."</tt>) to the agent without minting a long-lived ICO.</t>
      </section>
      <section anchor="stage-2-just-in-time-challenge-minting">
        <name>Stage 2: Just-in-Time Challenge Minting</name>
        <t>At <tt>t1</tt> (when an authorized human approver logs in with an active KCT and opens <tt>intent_id</tt> from their approval queue):
1. The client requests the challenge for <tt>intent_id</tt> from the Resource Server.
2. <strong>State Freshness Evaluation:</strong> The Resource Server verifies that the underlying domain state still matches <tt>context_state_hash</tt> (or re-computes <tt>display_facts</tt> against current state).
3. The Resource Server mints a <strong>fresh, short-lived ICO</strong> (<tt>typ: "poi+jwt;kind=chal"</tt>, <tt>nbf: t1</tt>, <tt>exp: t1 + 300s</tt>) bound to <tt>intent_id</tt> and <tt>context_state_hash</tt>.</t>
      </section>
      <section anchor="stage-3-synchronous-signing-and-role-separation">
        <name>Stage 3: Synchronous Signing and Role Separation</name>
        <t>The approver reviews the freshly minted ICO inside the Signing Vault and signs <tt>R1</tt> using their currently active KCT (or WebAuthn credential).</t>
        <t>Because the ICO is minted at <tt>t1</tt> and signed under the approver's active KCT at <tt>t1</tt>, this flow naturally supports <strong>role separation (dual control)</strong>: the user or service account under which the AI agent proposed <tt>R0</tt> at <tt>t0</tt> MAY be distinct from the authorized human (<tt>sub</tt> in <tt>R1</tt>'s KCT) who approves or supercedes <tt>R0</tt> at <tt>t1</tt>.</t>
      </section>
    </section>
    <section anchor="multi-hop-hash-linked-chains-r0-r1-rn">
      <name>Multi-Hop Hash-Linked Chains (<tt>R0 -&gt; R1 -&gt; ... -&gt; Rn</tt>)</name>
      <section anchor="general-n-node-envelope-structure-and-transport-sizing">
        <name>General <tt>n</tt>-Node Envelope Structure and Transport Sizing</name>
        <t>In the Chained State profile, a Proof-of-Intent Envelope (<tt>application/poi-envelope+json</tt>) carries an ordered <tt>chain</tt> of <tt>n + 1</tt> nodes (<tt>seq: 0 ... n</tt>, where <tt>1 &lt;= n &lt; MAX_CHAIN_LENGTH</tt>).</t>
        <t>Because multi-node chains (<tt>n &gt;= 2</tt>) containing nested <tt>kcert</tt> JWTs and WebAuthn assertions can exceed the 4 KB to 8 KB HTTP header limit enforced by reverse proxies, implementations SHOULD transmit multi-node PoIEs in the HTTP request body (<tt>Content-Type: application/poi-envelope+json</tt>) rather than the <tt>PoI-Envelope</tt> HTTP header, or use detached mode for <tt>R0</tt> (omitting <tt>challenge_jws</tt> when the stateful Resource Server already holds <tt>[R0, ..., R_(n-1)]</tt> in escrow).</t>
        <sourcecode type="json"><![CDATA[
{
  "intent_id": "intent_loan_4409",
  "chain": [
    {
      "seq": 0,
      "node_type": "PROPOSAL",
      "challenge_jws": "<Compact-JWS-from-Resource-Server>",
      "node_hash": "sha256:H0_8f992a..."
    },
    {
      "seq": 1,
      "node_type": "SUPERCEDE",
      "supercedes_node_hash": "sha256:H0_8f992a...",
      "assurance_tier": "urn:ietf:params:oauth:poi:tier:session-pop",
      "assertion_jws": "<Compact-JWS-Signed-by-Loan-Officer>",
      "node_hash": "sha256:H1_3c771b..."
    },
    {
      "seq": 2,
      "node_type": "APPROVE",
      "target_node_hash": "sha256:H1_3c771b...",
      "assurance_tier": "urn:ietf:params:oauth:poi:tier:webauthn-uv",
      "assertion_jws": "<WebAuthn-Bundle-Signed-by-Sr-Underwriter>",
      "node_hash": "sha256:H2_9a110f..."
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="three-outcomes-of-a-supercede-assertion">
        <name>Three Outcomes of a <tt>SUPERCEDE</tt> Assertion</name>
        <t>When a human signer submits a <tt>SUPERCEDE</tt> node (<tt>Rk</tt>) asserting modified parameters (<tt>asserted_params</tt>), the Resource Server's orthogonal policy engine evaluates <tt>asserted_params</tt> and selects one of three deterministic transitions:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Outcome 1 -- Sufficient Authority and Assurance (Immediate Execution):</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>The signer of <tt>Rk</tt> possesses organizational authority for <tt>asserted_params</tt>, and <tt>Rk</tt> satisfies the required assurance tier for those parameters.</t>
              </li>
              <li>
                <t>The Resource Server commits <tt>asserted_params</tt> immediately and issues a terminal Countersigned Intent Receipt (<tt>CIR</tt>).</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Outcome 2 -- Same Signer Has Authority, Higher Assurance Tier Required (Step-Up Challenge):</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>asserted_params</tt> is within the signer's organizational role authority, but the modified value crosses into a higher assurance requirement (for example, a physician modifies a prescription from a non-controlled drug at Tier 1 <tt>session-pop</tt> to a Schedule II controlled substance requiring Tier 3 <tt>webauthn-hw</tt>).</t>
              </li>
              <li>
                <t>The Resource Server returns HTTP <tt>403 Forbidden</tt> with <tt>PoI-Challenge: error="insufficient_assurance_tier", required_tier="urn:ietf:params:oauth:poi:tier:webauthn-hw"</tt>, and a step-up challenge targeting <tt>Hk</tt> so the same signer can immediately complete hardware token attestation.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Outcome 3 -- Organizational Authority Exceeded (Chained Escalation):</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>asserted_params</tt> exceeds the signer's organizational policy limit (for example, a loan officer adjusts a loan from <tt>"45000.00"</tt> to <tt>"60000.00"</tt>, exceeding their <tt>"50000.00"</tt> underwriting limit).</t>
              </li>
              <li>
                <t>The Resource Server records <tt>[R0, ..., Rk]</tt> as <tt>PENDING_ESCALATION</tt> with <tt>head_node_hash = Hk</tt>, returns HTTP <tt>202 Accepted</tt> (or <tt>403 Forbidden</tt> with <tt>poi_error: "authority_escalation_required"</tt>), and routes the escalated intent to the next-line authority queue.</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
      <section anchor="chained-escalation-challenge-format">
        <name>Chained Escalation Challenge Format</name>
        <t>When a next-line approver opens an escalated intent at <tt>head_node_hash = Hk</tt>, the Resource Server mints an ICO (<tt>typ: "poi+jwt;kind=chal"</tt>) that includes a <tt>prior_chain</tt> claim containing the verified predecessor nodes <tt>[R0, ..., Rk]</tt> alongside the computed parameter delta in <tt>display_facts</tt>.</t>
        <t>The next-line approver's Signing Vault MUST verify the Resource Server's ICO signature and render:
1. The original proposal (<tt>R0</tt>),
2. Each intermediate <tt>SUPERCEDE</tt> modification, diff, and human justification (<tt>R1 ... Rk</tt>), and
3. The verified identity of each prior human signer, before prompting the next-line approver to sign Node <tt>R_(k+1)</tt> (<tt>APPROVE</tt> targeting <tt>Hk</tt>, or another <tt>SUPERCEDE</tt> targeting <tt>Hk</tt>).</t>
      </section>
    </section>
    <section anchor="concurrent-approver-race-conditions-linear-chain-compare-and-swap">
      <name>Concurrent Approver Race Conditions (Linear Chain Compare-and-Swap)</name>
      <section anchor="linear-chain-cas-invariant-on-headnodehash">
        <name>Linear Chain CAS Invariant on <tt>head_node_hash</tt></name>
        <t>In multi-operator environments, two authorized approvers (Approver 1 and Approver 2) may concurrently inspect a pending intent at <tt>head_node_hash = Hk</tt> (<tt>seq: k</tt>) and submit competing transitions for <tt>seq: k + 1</tt> -- for example, Approver 1 submits <tt>R_(k+1)_A</tt> (<tt>APPROVE</tt> targeting <tt>Hk</tt>) while Approver 2 submits <tt>R_(k+1)_B</tt> (<tt>SUPERCEDE</tt> targeting <tt>Hk</tt>).</t>
        <t>To prevent ambiguous forked trees and ensure a single linear audit history, Resource Servers MUST enforce an atomic <strong>Linear Chain Compare-and-Swap (CAS) Invariant</strong>:</t>
        <ul spacing="normal">
          <li>
            <t>A Resource Server MUST only accept and append a candidate node at <tt>seq: k + 1</tt> if:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Its parent hash reference (<tt>target_node_hash</tt> or <tt>supercedes_node_hash</tt>) is byte-identical to the Resource Server's current <tt>head_node_hash</tt> (<tt>Hk</tt> at <tt>seq: k</tt>), AND</t>
              </li>
              <li>
                <t>The intent has not already reached a terminal state (<tt>COMMITTED</tt> or <tt>REJECTED</tt>).</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Upon accepting <tt>R_(k+1)</tt>, the Resource Server atomically updates <tt>head_node_hash</tt> from <tt>Hk</tt> to <tt>H_(k+1)</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="prohibition-on-silent-rebase">
        <name>Prohibition on Silent Rebase</name>
        <t>Intermediary agents, orchestrators, and Resource Servers MUST NOT rewrite a losing assertion's parent hash reference from <tt>Hk</tt> to <tt>H_(k+1)</tt> in flight. Because <tt>target_node_hash</tt> and <tt>supercedes_node_hash</tt> are covered by the human signer's cryptographic signature, rewriting the parent pointer invalidates the signature and violates What You See Is What You Sign (WYSIWYS), as the losing signer never reviewed the intervening transition <tt>R_(k+1)</tt>.</t>
      </section>
      <section anchor="arrival-order-1-supercede-arrives-before-approve">
        <name>Arrival Order 1: <tt>SUPERCEDE</tt> Arrives Before <tt>APPROVE</tt></name>
        <sourcecode type="text"><![CDATA[
t = 100ms: Approver 2 submits R1_B (SUPERCEDE H0 -> new params P1)
           RS CAS succeeds: head_node_hash advances H0 -> H1_B.

t = 150ms: Approver 1 submits R1_A (APPROVE H0)
           RS CAS FAILS: parent H0 != current head H1_B.
]]></sourcecode>
        <ol spacing="normal" type="1"><li>
            <t>If <tt>R1_B</tt> was within Approver 2's authority and executed immediately at <tt>t = 100ms</tt>, the Resource Server MUST reject Approver 1's <tt>R1_A</tt> with HTTP <tt>409 Conflict</tt> (<tt>poi_error: "intent_already_finalized"</tt>), returning the terminal <tt>CIR</tt>.</t>
          </li>
          <li>
            <t>If <tt>R1_B</tt> remains pending (e.g., awaiting co-signature or escalation), the Resource Server MUST reject <tt>R1_A</tt> with HTTP <tt>409 Conflict</tt> (<tt>poi_error: "stale_head_conflict"</tt>), returning the updated chain <tt>[R0, R1_B]</tt>. Approver 1's Signing Vault renders Approver 2's modification (<tt>R1_B</tt>) and justification so Approver 1 can consciously sign <tt>R2</tt> (<tt>APPROVE H1_B</tt>) if authorized.</t>
          </li>
        </ol>
      </section>
      <section anchor="arrival-order-2-approve-arrives-before-supercede">
        <name>Arrival Order 2: <tt>APPROVE</tt> Arrives Before <tt>SUPERCEDE</tt></name>
        <sourcecode type="text"><![CDATA[
t = 100ms: Approver 1 submits R1_A (APPROVE H0)
           RS CAS succeeds: head_node_hash advances H0 -> H1_A.

t = 150ms: Approver 2 submits R1_B (SUPERCEDE H0 -> new params P1)
           RS CAS FAILS: parent H0 != current head H1_A.
]]></sourcecode>
        <ol spacing="normal" type="1"><li>
            <t><strong>Single-Approver Policy (Already Executed at <tt>t = 100ms</tt>):</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>If <tt>R1_A</tt> satisfied the Resource Server's policy and triggered immediate execution at <tt>t = 100ms</tt>, the Resource Server MUST reject Approver 2's <tt>R1_B</tt> with HTTP <tt>409 Conflict</tt> (<tt>poi_error: "intent_already_finalized"</tt>), returning <tt>[R0, R1_A]</tt> and the <tt>CIR</tt>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Multi-Approver / Quorum Policy (Still Pending at <tt>H1_A</tt>):</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>If the intent requires multiple approvals (e.g., 2-of-2 quorum) and remains pending at <tt>head_node_hash = H1_A</tt> after Approver 1's signature, the Resource Server MUST reject Approver 2's <tt>R1_B</tt> with HTTP <tt>409 Conflict</tt> (<tt>poi_error: "stale_head_conflict"</tt>), returning <tt>[R0, R1_A]</tt>.</t>
              </li>
              <li>
                <t>Approver 2's Signing Vault alerts Approver 2 that Approver 1 approved <tt>R0</tt> (<tt>H1_A</tt>), preserves Approver 2's edited parameter values in the UI, and prompts Approver 2 to sign their modification against the new head <tt>H1_A</tt>.</t>
              </li>
              <li>
                <t>The resulting linear chain <tt>R0 -&gt; R1_A (APPROVE H0) -&gt; R2 (SUPERCEDE H1_A)</tt> preserves exact chronological audit provenance: it proves Approver 1 approved <tt>R0</tt>, and Approver 2 subsequently superceded Approver 1's approval with new parameters <tt>P1</tt> (which invalidates Approver 1's prior approval of <tt>R0</tt> and requires quorum approval over <tt>H2</tt>).</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="extended-multi-node-verification-algorithm">
      <name>Extended Multi-Node Verification Algorithm</name>
      <t>A Resource Server or offline verifier validating a multi-node PoIE (<tt>chain[0 ... n]</tt>, where <tt>n &gt;= 1</tt>) MUST execute the following steps:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Enforce Bounded Chain Length (<tt>MAX_CHAIN_LENGTH</tt>):</strong>
          </t>
          <ul spacing="normal">
            <li>
              <t>Before performing any cryptographic operations, confirm <tt>2 &lt;= length(chain) &lt;= MAX_CHAIN_LENGTH</tt> (where the RECOMMENDED default for <tt>MAX_CHAIN_LENGTH</tt> is <tt>16</tt>). If <tt>length(chain)</tt> exceeds <tt>MAX_CHAIN_LENGTH</tt>, fail immediately with HTTP <tt>400 Bad Request</tt> (<tt>malformed_poi_envelope</tt>).</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>Validate Root Proposal (<tt>R0</tt>):</strong>
          </t>
          <ul spacing="normal">
            <li>
              <t>Execute Step 1 of Section 7.1 of <xref target="POI-CORE"/> to verify <tt>chain[0].challenge_jws</tt> and confirm <tt>chain[0].node_hash == H0</tt>.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>Iterate Through Chain Nodes (<tt>i = 1 ... n</tt>):</strong>
          </t>
          <ul spacing="normal">
            <li>
              <t>Confirm <tt>chain[i].seq == i</tt>.</t>
            </li>
            <li>
              <t>Confirm <tt>chain[i]</tt>'s parent hash reference (<tt>target_node_hash</tt> for <tt>APPROVE</tt>/<tt>REJECT</tt>, or <tt>supercedes_node_hash</tt> for <tt>SUPERCEDE</tt>) equals <tt>chain[i-1].node_hash</tt> (<tt>H_(i-1)</tt>).</t>
            </li>
            <li>
              <t>Confirm <tt>assertion.aud == ico.iss</tt>.</t>
            </li>
            <li>
              <t>If <tt>chain[i].node_type == "REJECT"</tt> and <tt>i &lt; n</tt>, fail verification with <tt>chain_continuity_broken</tt> (a <tt>REJECT</tt> node is strictly terminal and MUST NOT have child nodes).</t>
            </li>
            <li>
              <t>If <tt>chain[i].node_type == "SUPERCEDE"</tt>, recompute <tt>SHA-256(JCS(asserted_params))</tt> over the raw JSON tree and confirm it matches <tt>asserted_params_hash</tt>.</t>
            </li>
            <li>
              <t>Verify <tt>chain[i]</tt>'s cryptographic signature and assurance tier (<tt>session-pop</tt>, <tt>webauthn-uv</tt>, or <tt>webauthn-hw</tt>) per Step 3 of Section 7.1 of <xref target="POI-CORE"/>.</t>
            </li>
            <li>
              <t>Confirm <tt>chain[i].node_hash</tt> matches the canonical SHA-256 digest of node <tt>i</tt>.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><strong>Determine Effective Parameter State and Active Signers:</strong>
          </t>
          <ul spacing="normal">
            <li>
              <t>Let <tt>k_last_supercede</tt> be the largest index <tt>k</tt> (<tt>1 &lt;= k &lt;= n</tt>) where <tt>chain[k].node_type == "SUPERCEDE"</tt>, or <tt>0</tt> if no <tt>SUPERCEDE</tt> node exists in <tt>chain</tt>.</t>
            </li>
            <li>
              <t>The <strong>effective parameters</strong> of the chain are <tt>chain[k_last_supercede].asserted_params</tt> (if <tt>k_last_supercede &gt;= 1</tt>) or <tt>R0.raw_params</tt> (if <tt>k_last_supercede == 0</tt>).</t>
            </li>
            <li>
              <t><strong>Important Quorum Rule:</strong> Any <tt>APPROVE</tt> node at index <tt>j &lt; k_last_supercede</tt> attested to parameters that were subsequently superceded at index <tt>k_last_supercede</tt>. Therefore, when evaluating multi-approver quorum or escalation authority for the effective parameters, the policy engine MUST only count signers at indices <tt>i &gt;= k_last_supercede</tt>.</t>
            </li>
          </ul>
        </li>
      </ol>
    </section>
    <section anchor="chained-state-and-concurrency-error-modes">
      <name>Chained State and Concurrency Error Modes</name>
      <section anchor="escalation-and-concurrency-error-definitions">
        <name>Escalation and Concurrency Error Definitions</name>
        <t>In addition to the 19 core error codes defined in Section 8 of <xref target="POI-CORE"/>, this extension defines four error codes for stateful, asynchronous, and multi-party workflows:</t>
        <ul spacing="normal">
          <li>
            <t><strong><tt>authority_escalation_required</tt></strong> (HTTP <tt>202 Accepted</tt> or <tt>403 Forbidden</tt>):
            </t>
            <ul spacing="normal">
              <li>
                <t><em>Trigger:</em> A verified <tt>SUPERCEDE</tt> assertion (<tt>Rk</tt>) asserts parameters that exceed the signer's organizational policy limit (Section 4.2 Outcome 3). When queued asynchronously for next-line approval, the Resource Server SHOULD return <tt>202 Accepted</tt> with <tt>"poi_status": "pending_escalation"</tt>; when synchronous multi-party approval is required, the Resource Server MUST return <tt>403 Forbidden</tt> with <tt>PoI-Challenge: error="authority_escalation_required"</tt>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong><tt>stale_head_conflict</tt></strong> (HTTP <tt>409 Conflict</tt>):
            </t>
            <ul spacing="normal">
              <li>
                <t><em>Trigger:</em> A candidate node at <tt>seq: k + 1</tt> failed the Linear Chain Compare-and-Swap check because a concurrent signer already advanced the Resource Server's <tt>head_node_hash</tt> for <tt>intent_id</tt> from <tt>Hk</tt> to <tt>H_(k+1)</tt> while the intent remains open (Section 5.1). The <xref target="RFC9457"/> problem details body MUST include <tt>current_head_node_hash</tt> and the updated <tt>chain</tt> array (<tt>[R0, ..., R_(k+1)]</tt>) so the client Signing Vault can render the intervening transition and prompt the user against <tt>H_(k+1)</tt>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong><tt>intent_already_finalized</tt></strong> (HTTP <tt>409 Conflict</tt>):
            </t>
            <ul spacing="normal">
              <li>
                <t><em>Trigger:</em> A candidate node arrived after a concurrent signer's <tt>APPROVE</tt>, <tt>REJECT</tt>, or authoritative <tt>SUPERCEDE</tt> assertion already transitioned <tt>intent_id</tt> into a terminal executed or rejected state (<tt>CIR</tt> issued). The problem details body SHOULD include the terminal <tt>CIR</tt>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong><tt>context_state_drifted</tt></strong> (HTTP <tt>409 Conflict</tt>):
            </t>
            <ul spacing="normal">
              <li>
                <t><em>Trigger:</em> In asynchronous flows (Section 3), the underlying domain record on the Resource Server changed between when the proposal or challenge was created (<tt>context_state_hash</tt>) and when the PoIE was submitted for execution (TOCTOU violation).</t>
              </li>
            </ul>
          </li>
        </ul>
        <t><em>Non-normative example of a <tt>stale_head_conflict</tt> Problem Details response:</em></t>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 409 Conflict
Content-Type: application/problem+json

{
  "type": "urn:ietf:params:oauth:poi:error:stale_head_conflict",
  "title": "Concurrent Approver Modified Chain Head",
  "status": 409,
  "detail": "Candidate seq 1 references H0, but head is H1_B.",
  "poi_error": "stale_head_conflict",
  "intent_id": "intent_loan_4409",
  "failed_node_seq": 1,
  "current_head_node_hash": "sha256:H1_3c771b...",
  "chain": [
    {
      "seq": 0,
      "node_type": "PROPOSAL",
      "node_hash": "sha256:H0_8f992a..."
    },
    {
      "seq": 1,
      "node_type": "SUPERCEDE",
      "supercedes_node_hash": "sha256:H0_8f992a...",
      "node_hash": "sha256:H1_3c771b..."
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="summary-matrix-of-extension-error-codes">
        <name>Summary Matrix of Extension Error Codes</name>
        <table>
          <thead>
            <tr>
              <th align="left">poi_error Code</th>
              <th align="left">Category</th>
              <th align="left">HTTP Status</th>
              <th align="left">Retryable with New Signature?</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>authority_escalation_required</tt></td>
              <td align="left">Escalation</td>
              <td align="left">
                <tt>202</tt> / <tt>403</tt></td>
              <td align="left">Yes (Next-line approver appends <tt>R_(k+1)</tt>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>stale_head_conflict</tt></td>
              <td align="left">Concurrency / CAS</td>
              <td align="left">
                <tt>409</tt></td>
              <td align="left">Yes (Review new head <tt>H_(k+1)</tt> and re-sign)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>intent_already_finalized</tt></td>
              <td align="left">Concurrency / Terminal</td>
              <td align="left">
                <tt>409</tt></td>
              <td align="left">No (Intent already executed or rejected)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>context_state_drifted</tt></td>
              <td align="left">State / TOCTOU</td>
              <td align="left">
                <tt>409</tt></td>
              <td align="left">Yes (Fetch re-evaluated challenge)</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="time-of-check-to-time-of-use-toctou-mitigation">
        <name>Time-of-Check to Time-of-Use (TOCTOU) Mitigation</name>
        <t>In asynchronous workflows, Resource Servers MUST NOT issue long-lived ICO challenges at proposal time (<tt>t0</tt>). Resource Servers MUST bind <tt>context_state_hash</tt> when minting the just-in-time ICO at review time (<tt>t1</tt>) and re-verify <tt>context_state_hash</tt> atomically when committing the terminal node of the PoIE.</t>
      </section>
      <section anchor="lineage-integrity-across-escalation-hops">
        <name>Lineage Integrity Across Escalation Hops</name>
        <t>In multi-party escalations (<tt>R0 -&gt; R1 -&gt; R2</tt>), a compromised intermediary orchestrator might attempt to strip <tt>R1</tt> or alter the first human's justification to influence the next-line approver (<tt>R2</tt>). Because <tt>H1</tt> commits to the entire signed <tt>R1</tt> assertion JWS (<xref target="RFC7515"/>, including <tt>asserted_params_hash</tt> and <tt>justification</tt>) and the Resource Server's escalation ICO signs <tt>prior_chain: [R0, R1]</tt>, any tampering with intermediate nodes invalidates both the hash chain and the Resource Server's challenge signature.</t>
        <t>Furthermore, per Step 4 of Section 6, verifiers MUST NOT count <tt>APPROVE</tt> signatures at indices <tt>j &lt; k_last_supercede</tt> toward quorum requirements for parameters modified at <tt>k_last_supercede</tt>, preventing an attacker or confused policy engine from treating a prior approval of <tt>R0</tt> as an approval of modified parameters in <tt>Rk</tt>.</t>
      </section>
      <section anchor="denial-of-service-mitigation-via-bounded-chain-depth">
        <name>Denial-of-Service Mitigation via Bounded Chain Depth</name>
        <t>Because verifying each node in <tt>chain</tt> requires up to two asymmetric public key signature verifications (<tt>kcert</tt> and <tt>assertion_jws</tt>), an unbounded <tt>chain</tt> array would allow a malicious client to cause CPU exhaustion by submitting thousands of self-superceding nodes in a single request. Verifiers MUST enforce <tt>MAX_CHAIN_LENGTH</tt> (Section 6 Step 1) prior to executing any cryptographic signature checks.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="poi-error-code-registrations">
        <name>PoI Error Code Registrations</name>
        <t>This document registers four additional error codes in the "Proof-of-Intent (PoI) Error Codes" registry (<tt>urn:ietf:params:oauth:poi:error</tt>) established in Section 11.3 of <xref target="POI-CORE"/>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>authority_escalation_required</tt> (Section 7.1)</t>
          </li>
          <li>
            <t><tt>stale_head_conflict</tt> (Section 7.1)</t>
          </li>
          <li>
            <t><tt>intent_already_finalized</tt> (Section 7.1)</t>
          </li>
          <li>
            <t><tt>context_state_drifted</tt> (Section 7.1)</t>
          </li>
        </ul>
      </section>
      <section anchor="jwt-claim-registrations">
        <name>JWT Claim Registrations</name>
        <t>This document registers the following claims in the IANA "JSON Web Token Claims" registry (<xref target="RFC7519"/>):</t>
        <ul spacing="normal">
          <li>
            <t><tt>context_state_hash</tt>: Digest of the Resource Server's underlying domain state at challenge issuance time (Section 3.2).</t>
          </li>
          <li>
            <t><tt>prior_chain</tt>: Ordered array of verified predecessor PoIE nodes included in an escalated Intent Challenge Object (Section 4.3).</t>
          </li>
          <li>
            <t><tt>current_head_node_hash</tt>: The <tt>node_hash</tt> of the current head node on the Resource Server returned in a <tt>stale_head_conflict</tt> error response (Section 7.1).</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="POI-CORE">
        <front>
          <title>Cryptographic Proof-of-Intent (PoI) Core Protocol for Human-in-the-Loop (HITL) Step-Up Authorization</title>
          <author initials="P. C." surname="Williams" fullname="Paul Charles Williams">
            <organization>Barefoot Coders, LLC</organization>
          </author>
          <date year="2026" month="October"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-williams-oauth-poi-core-00"/>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
        <front>
          <title>JSON Web Signature (JWS)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7515"/>
        <seriesInfo name="DOI" value="10.17487/RFC7515"/>
      </reference>
      <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
        <front>
          <title>JSON Web Token (JWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7519"/>
        <seriesInfo name="DOI" value="10.17487/RFC7519"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8785.xml">
        <front>
          <title>JSON Canonicalization Scheme (JCS)</title>
          <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
          <author fullname="B. Jordan" initials="B." surname="Jordan"/>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
          <date month="June" year="2020"/>
          <abstract>
            <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
            <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8785"/>
        <seriesInfo name="DOI" value="10.17487/RFC8785"/>
      </reference>
      <reference anchor="RFC9457" target="https://www.rfc-editor.org/info/rfc9457" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9457.xml">
        <front>
          <title>Problem Details for HTTP APIs</title>
          <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
          <author fullname="E. Wilde" initials="E." surname="Wilde"/>
          <author fullname="S. Dalal" initials="S." surname="Dalal"/>
          <date month="July" year="2023"/>
          <abstract>
            <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
            <t>This document obsoletes RFC 7807.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9457"/>
        <seriesInfo name="DOI" value="10.17487/RFC9457"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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
vV8AAA==

-->

</rfc>
