<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pinto-cbap-1-00" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="CBAP-1">Contestability Binding Application Profile 1 (CBAP-1)</title>
    <seriesInfo name="Internet-Draft" value="draft-pinto-cbap-1-00"/>
    <author initials="T." surname="Pinto" fullname="Tiago Pinto">
      <organization>Independent Researcher</organization>
      <address>
        <postal>
          <country>Portugal</country>
        </postal>
        <email>tiago@donttrustverify.pt</email>
        <uri>https://donttrustverify.pt</uri>
      </address>
    </author>
    <date year="2026" month="September" day="15"/>
    <area>Security</area>
    <keyword>agent authorization</keyword>
    <keyword>contestability</keyword>
    <keyword>CBAP-1</keyword>
    <keyword>verifiable evidence</keyword>
    <abstract>
      <?line 46?>

<t>Signed authorization records can show that an action was authorized under specified rules, but they do not by themselves establish a stable or verifiable path for an Affected Party to contest that action.</t>
      <t>This document defines Contestability Binding Application Profile 1 (CBAP-1), a closed application profile that binds an Authorization Artifact to signed contestation terms before execution. CBAP-1 specifies deterministic CBOR and COSE encoding, fixed artifact formats, executor-verification and execution records, by-value policy material, a half-open filing window, a closed structured result, and deterministic first-failure reason codes.</t>
      <t>CBAP-1 does not define contestation notices, active execution-state effects, network reachability checks, policy-freshness evaluation, dispute adjudication, or remedy. It reports authenticated protocol facts and signed claims without asserting forum independence, legal validity, physical execution order, or fairness.</t>
    </abstract>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Securing an agent authorization with signatures, receipts, validity limits, and logs can answer one question: was the action authorized under the specified rules? It does not answer a different question: where and how an Affected Party can contest the action, or which contestation parameters were bound before execution.</t>
      <t>A locator alone is insufficient. If the forum, procedure, policy references, or filing window can be substituted after authorization, two implementations can validate the same authorization while deriving different contestation paths.</t>
      <t>CBAP-1 removes that ambiguity by binding the Authorization Artifact to signed contestation parameters, Exact Forum Acceptance, executor-verification evidence, an Execution Record, and the policy material required by those objects. It defines one deterministic verification procedure and one closed structured-result contract.</t>
      <t>The profile is intentionally narrow. Successful CBAP-1 verification reports <tt>selection_provenance: unilateral</tt>, exact forum acceptance, <tt>pre_execution_evidence: executor_attested</tt>, and no active execution-state effect. It does not infer forum independence, policy fairness, legal standing, current endpoint availability, human receipt, physical execution order, or remedy.</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>The key words <strong>MUST</strong>, <strong>MUST NOT</strong>, <strong>REQUIRED</strong>, <strong>SHALL</strong>, <strong>SHALL NOT</strong>,
<strong>SHOULD</strong>, <strong>SHOULD NOT</strong>, <strong>RECOMMENDED</strong>, <strong>NOT RECOMMENDED</strong>, <strong>MAY</strong>, and
<strong>OPTIONAL</strong> 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="scope">
      <name>Scope</name>
      <t>This document specifies one self-contained application profile. It defines the encoding rules, payload structures, trust inputs, verification procedure, and result contract required to bind an authorization to contestation terms before execution.</t>
      <t>CBAP-1 specifies:</t>
      <ul spacing="normal">
        <li>
          <t>Core Deterministic CBOR encoding with fixed resource ceilings for the complete bundle and its signed objects;</t>
        </li>
        <li>
          <t>tagged embedded-payload COSE_Sign1 objects using the fixed CBAP-1 Ed25519 profile;</t>
        </li>
        <li>
          <t>closed schemas for the Contestation Parameters Object, Exact Forum Acceptance Statement, Authorization Artifact, Executor Verification record, Execution Record, policy set, and bundle;</t>
        </li>
        <li>
          <t>direct binding between the Authorization Artifact and CPO, together with exact forum-terms binding;</t>
        </li>
        <li>
          <t>local trust inputs for issuer, forum, and executor roles;</t>
        </li>
        <li>
          <t>a half-open filing window <tt>[executed-at, filing_deadline)</tt>;</t>
        </li>
        <li>
          <t>a deterministic 21-boundary verification procedure;</t>
        </li>
        <li>
          <t>a 17-entry structured result comprising 16 semantic fields plus <tt>reasons</tt>, with a closed CBAP-1-reachable vocabulary; and</t>
        </li>
        <li>
          <t>a closed first-failure vocabulary of 21 reason codes.</t>
        </li>
      </ul>
      <t>CBAP-1 does not define class-based forum acceptance, separate contestability notices, multiparty or external selection evidence, active hold or fence effects, network reachability checks, policy-freshness evaluation, or generic extension machinery.</t>
      <t>This document also does not define dispute adjudication, evidence exchange, appeals, remedies, legal standing, forum impartiality, legal enforceability, or the legitimacy of the underlying authorization or policy.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t><strong>Authorization Artifact:</strong> The signed <tt>cbap1-authorization</tt> object defined by this profile. It binds the authorization identifier, issuer, validity interval, action digest, and CPO digest.</t>
      <t><strong>Authorization Instance Identifier (<tt>authorization-id</tt>):</strong> The <tt>authorization-id</tt> CDDL member is a 16-byte identifier for one authorization instance, intended to be globally unique or collision-resistant.</t>
      <t><strong>Action Digest (<tt>action_digest</tt>):</strong> <tt>SHA-256(action_bytes)</tt> over the exact action byte string carried by the bundle, recomputed and checked against each signed object that carries the action digest.</t>
      <t><strong>Contestation Parameters Object (CPO):</strong> The closed signed data structure defined by the CBAP-1 CDDL in Section 5.3.</t>
      <t><strong>Contestation Terms:</strong> The unsigned per-authorization data carried as <tt>cbap1-terms</tt> inside the CPO, including profile identifiers, authorization validity, forum and policy references, affected-party access declarations, and filing-window parameters.</t>
      <t><strong>Contestability Binding:</strong> The cryptographic binding from the Authorization Artifact to the exact signed CPO through its digest, together with the cross-object bindings verified by Section 7.</t>
      <t><strong>Forum:</strong> The service or institution designated to receive a contestation. Successful signature verification authenticates the forum-signed statement under the configured trust inputs; it does not establish forum independence, competence, fairness, or legal jurisdiction.</t>
      <t><strong>Exact Forum Acceptance Statement:</strong> The forum-signed acceptance of the exact <tt>forum_terms</tt> projection bound to the CPO.</t>
      <t><strong>Authorization Binding Profile (ABP):</strong> The rules used to verify and project the Authorization Artifact. CBAP-1 fixes one Authorization Artifact format and one ABP identifier.</t>
      <t><strong>Authorization Trust Profile:</strong> The opaque profile identifier supplied by trusted local policy and bound in the CPO terms to identify the authorization trust semantics accepted by the verifier.</t>
      <t><strong>Standing Policy:</strong> Versioned policy material identified by digest and URI that describes which roles or parties may file. CBAP-1 verifies its bound identity and by-value integrity but does not establish the legitimacy of the policy.</t>
      <t><strong>Affected Party:</strong> A person or organization whose interests may be materially affected by an authorized action. An Affected Party need not be the principal, agent, issuer, executor, or relying party.</t>
    </section>
    <section anchor="cbap-1-profile">
      <name>CBAP-1 Profile</name>
      <section anchor="mandatory-encoding-cbap-1-core-deterministic-cbor">
        <name>Mandatory encoding: CBAP-1 Core Deterministic CBOR</name>
        <t>The Contestability Binding Application Profile 1 (CBAP-1) is the mandatory-to-implement encoding and executable profile defined by this document. CBAP-1 uses the Core Deterministic Encoding Requirements in Section 4.2.1 of <xref target="RFC8949"/>. It does not use the length-first map key ordering in Section 4.2.3 of <xref target="RFC8949"/>, historically called canonical CBOR by <xref target="RFC7049"/>.</t>
        <t>A CBAP-1 encoder and verifier MUST enforce all of the following:</t>
        <ul spacing="normal">
          <li>
            <t>preferred and shortest serialization for every integer, length, and tag argument;</t>
          </li>
          <li>
            <t>definite-length byte strings, text strings, arrays, and maps only;</t>
          </li>
          <li>
            <t>bytewise-lexicographic ordering of the deterministic encodings of map keys;</t>
          </li>
          <li>
            <t>rejection of duplicate map keys before conversion to a host-language map;</t>
          </li>
          <li>
            <t>rejection of floating-point values and simple values other than <tt>false</tt>, <tt>true</tt>, and <tt>null</tt>; at the bundle outer-item boundary, rejection of every CBOR tag, including tag 18; for each signed COSE_Sign1 object carried inside a bundle <tt>bstr</tt>, requirement of the object's outer COSE_Sign1 tag 18 and rejection of any other tag;</t>
          </li>
          <li>
            <t>well-formed UTF-8 text strings, compared as encoded bytes without Unicode, URI, case, or percent-encoding normalization;</t>
          </li>
          <li>
            <t>unsigned-integer member labels exactly as specified by the closed CDDL below.</t>
          </li>
        </ul>
        <t>The closed CBAP-1 CDDL uses none of the simple values <tt>false</tt>, <tt>true</tt>, or <tt>null</tt>. Their allowance at the Core Deterministic CBOR layer does not make them valid where the closed CDDL requires another type; such a mismatch fails at the relevant closed-schema boundary.</t>
        <t>Before allocating, slicing, advancing an input cursor, or iterating a declared collection length, a decoder MUST verify with checked arithmetic that the length is representable by the host and does not exceed the remaining input. A declared length or count that cannot be consumed from the received bytes MUST be rejected at the enclosing encoding boundary. It MUST NOT wrap an offset, panic, abort the process, or attempt an allocation based only on the received length.</t>
        <t>CBAP-1 additionally fixes these resource ceilings:</t>
        <sourcecode type="text"><![CDATA[
MAX_BUNDLE_BYTES         = 8388608
MAX_BSTR_BYTES           = 1048576
MAX_TSTR_UTF8_BYTES      = 4096
MAX_COLLECTION_MEMBERS   = 64
MAX_NESTING_DEPTH        = 32
MAX_POLICY_PAIRS         = 5
]]></sourcecode>
        <t>After verification-time validation and before parsing the outer CBOR item, a verifier MUST require the complete received bundle to be no more than <tt>MAX_BUNDLE_BYTES</tt> bytes. A larger bundle fails at <tt>outer_encoding_invalid</tt> without parsing the bundle.</t>
        <t>At each CBOR decoding boundary, before allocation or iteration, the decoder MUST require every definite-length byte string to be no more than <tt>MAX_BSTR_BYTES</tt>, every definite-length text string to contain no more than <tt>MAX_TSTR_UTF8_BYTES</tt> received UTF-8 bytes, every array or map to contain no more than <tt>MAX_COLLECTION_MEMBERS</tt> members, and nesting depth to be no more than <tt>MAX_NESTING_DEPTH</tt>. For the nesting-depth predicate at each independently decoded CBOR boundary, the root item has depth 0; descending from an item to the data item carried by a tag, to an array element, or to a map key or map value increments depth by one, and the decoder MUST reject before descending when the resulting child depth would exceed <tt>MAX_NESTING_DEPTH</tt>. A byte string is opaque for nesting-depth accounting at the boundary that decodes it; when bytes carried in a byte string are subsequently decoded as CBOR by this profile, that parse is a new independent CBOR boundary whose root again has depth 0. Thus depth 32 is permitted and an attempted descent to depth 33 is rejected. The text-string ceiling is measured on received UTF-8 bytes, not Unicode scalar values.</t>
        <t>A resource-ceiling predicate belongs to the boundary currently decoding the item. At the outer-item boundary it yields <tt>outer_encoding_invalid</tt>. At signed-object boundaries 5 through 9 it is part of that object's complete validation pipeline and yields that object's existing invalid reason. Resource predicates are evaluated before allocation, iteration, closed-schema predicates, and later cross-object or profile predicates that require the decoded value.</t>
        <t>For example, a 5000-byte payload signer <tt>key-id</tt> text string or CPO forum <tt>key-id</tt> text string exceeds <tt>MAX_TSTR_UTF8_BYTES</tt> while the signed payload is decoded and therefore fails at the enclosing signed-object boundary; a later 1-through-64-byte key rule or step 13 forum-key length predicate is not evaluated. A 5000-byte URI text string inside a signed payload likewise fails at that signed-object boundary before the step 13 HTTPS-URI predicate. A 5000-byte protected <tt>kid</tt> byte string does not exceed <tt>MAX_BSTR_BYTES</tt>, but it still fails the existing protected-<tt>kid</tt> 1-through-64-byte constraint at the same signed-object boundary.</t>
        <t>The existing 64-byte key-identifier rules remain stricter than the generic string ceilings wherever they apply and MUST NOT be weakened by these resource limits. Because CBAP-1 carries action bytes and by-value policy bytes as byte strings, each such byte string is limited to <tt>MAX_BSTR_BYTES</tt>.</t>
        <t>Every <tt>uri</tt> value in CBAP-1 MUST satisfy the generic URI syntax of <xref target="RFC3986"/> and the <tt>https</tt> URI scheme requirements in Section 4.2.2 of <xref target="RFC9110"/>, with these additional profile restrictions:</t>
        <ul spacing="normal">
          <li>
            <t>the scheme is the exact lowercase ASCII string <tt>https</tt>;</t>
          </li>
          <li>
            <t>an authority introduced by <tt>//</tt> is present and contains a non-empty host;</t>
          </li>
          <li>
            <t>user information is absent;</t>
          </li>
          <li>
            <t>if a port delimiter is present, the port contains only ASCII digits, begins with a digit in <tt>1..9</tt>, is the shortest decimal representation of its value, and has a numeric value in <tt>1..65535</tt>;</t>
          </li>
          <li>
            <t>every percent-encoded triplet is syntactically complete; and</t>
          </li>
          <li>
            <t>a fragment component is absent.</t>
          </li>
        </ul>
        <t>Conformance is determined by the complete component grammar, not by a prefix
test or a character allowlist. In particular:</t>
        <ul spacing="normal">
          <li>
            <t><tt>authority</tt>, <tt>host</tt>, <tt>IP-literal</tt>, <tt>IPv6address</tt>, <tt>IPvFuture</tt>,
<tt>path-abempty</tt>, <tt>segment</tt>, <tt>pchar</tt>, and <tt>query</tt> have the meanings and ABNF
defined by <xref target="RFC3986"/>;</t>
          </li>
          <li>
            <t>a bracketed host MUST contain exactly one syntactically valid <xref target="RFC3986"/>
              <tt>IPv6address</tt> or <tt>IPvFuture</tt> value;</t>
          </li>
          <li>
            <t><tt>[</tt> and <tt>]</tt> are permitted only as the delimiters of that <tt>IP-literal</tt> and
MUST be rejected in a registered name, path, or query;</t>
          </li>
          <li>
            <t>a registered name is validated as <tt>reg-name</tt>; accepting the characters of
a putative hostname without parsing its component boundaries is
insufficient; and</t>
          </li>
          <li>
            <t>IPv6 zone identifiers, including a percent-encoded zone suffix inside an
IP-literal, are not supported by CBAP-1 and MUST be rejected.</t>
          </li>
        </ul>
        <t><xref target="RFC9844"/> obsoletes <xref target="RFC6874"/> and does not define a replacement URI syntax for
zone identifiers. CBAP-1 deliberately excludes them because a locally scoped
zone identifier is not a stable signed identifier across verifiers.</t>
        <t>Path and query components are permitted only when their complete <xref target="RFC3986"/>
grammar matches. An explicit port MUST be validated in its received lexical
form before numeric conversion; a verifier MUST NOT strip leading zeros and
then validate the resulting number. CBAP-1 performs no URI normalization: the
exact ASCII bytes are the identifier and signature input. A different but
allegedly equivalent spelling is a different value. In particular,
<tt>https://forum.example/</tt> and <tt>https://forum.example:443/</tt> remain distinct
signed URI values even when a deployment routes both to the same HTTPS
service. A prefix test such as <tt>starts_with("https://")</tt>, a search for
forbidden delimiters, or a component-wide character allowlist is not URI
validation.</t>
        <t>The following examples are normative CBAP-1 URI conformance probes. Each
value is evaluated as written, without normalization or network resolution.</t>
        <table>
          <thead>
            <tr>
              <th align="left">URI</th>
              <th align="left">Required result</th>
              <th align="left">Boundary exercised</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>https://forum.example</tt></td>
              <td align="left">accept</td>
              <td align="left">empty path</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:1/</tt></td>
              <td align="left">accept</td>
              <td align="left">minimum explicit port</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:443/cases?open=1</tt></td>
              <td align="left">accept</td>
              <td align="left">shortest decimal port, path and query</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:65535/</tt></td>
              <td align="left">accept</td>
              <td align="left">maximum explicit port</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://[2001:db8::1]/cases</tt></td>
              <td align="left">accept</td>
              <td align="left">IPv6 address literal</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://[v1.a]/cases</tt></td>
              <td align="left">accept</td>
              <td align="left">IPvFuture</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example/%2Fcase</tt></td>
              <td align="left">accept</td>
              <td align="left">complete percent triplet in path</td>
            </tr>
            <tr>
              <td align="left">
                <tt>HTTPS://forum.example/</tt></td>
              <td align="left">reject</td>
              <td align="left">scheme is not exact lowercase <tt>https</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://</tt></td>
              <td align="left">reject</td>
              <td align="left">empty host</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://user@forum.example/</tt></td>
              <td align="left">reject</td>
              <td align="left">user information</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:/</tt></td>
              <td align="left">reject</td>
              <td align="left">empty explicit port</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:0/</tt></td>
              <td align="left">reject</td>
              <td align="left">explicit port zero</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:00/</tt></td>
              <td align="left">reject</td>
              <td align="left">explicit port zero and non-shortest form</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:0443/</tt></td>
              <td align="left">reject</td>
              <td align="left">leading zero / non-shortest form</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:00001/</tt></td>
              <td align="left">reject</td>
              <td align="left">leading zeros / non-shortest form</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example:65536/</tt></td>
              <td align="left">reject</td>
              <td align="left">port outside profile range</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example/%2/</tt></td>
              <td align="left">reject</td>
              <td align="left">incomplete percent triplet</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example/#part</tt></td>
              <td align="left">reject</td>
              <td align="left">fragment present</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://[:::]/</tt></td>
              <td align="left">reject</td>
              <td align="left">invalid IPv6 address literal</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://[v1.]/</tt></td>
              <td align="left">reject</td>
              <td align="left">invalid IPvFuture</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://[fe80::1%25eth0]/</tt></td>
              <td align="left">reject</td>
              <td align="left">zone identifier unsupported</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example/a[b]</tt></td>
              <td align="left">reject</td>
              <td align="left">brackets in path</td>
            </tr>
            <tr>
              <td align="left">
                <tt>https://forum.example/?a=[b]</tt></td>
              <td align="left">reject</td>
              <td align="left">brackets in query</td>
            </tr>
          </tbody>
        </table>
        <t>The following conformance probe distinguishes Section 4.2.1 ordering from length-first ordering. A conforming CBAP-1 encoder MUST encode the diagnostic map <tt>{100: -1, -1: 100}</tt> as hexadecimal <tt>a2186420201864</tt>. An encoder that places key <tt>-1</tt> before key <tt>100</tt> is not conformant even if a library describes its output as canonical.</t>
        <t>CBAP-1 fixes SHA-256 as specified by <xref target="RFC6234"/> as its only digest function. A digest is a 32-byte byte string; an algorithm identifier is not carried beside each digest. Algorithm substitution is therefore impossible inside the profile. Adding another hash function requires a new application-profile version.</t>
        <t>Let <tt>dCBOR(x)</tt> be the exact CBAP-1 deterministic encoding of data item <tt>x</tt>. Domain-separated hashes are computed as:</t>
        <sourcecode type="text"><![CDATA[
H(domain, value) = SHA-256(dCBOR([domain, value]))
]]></sourcecode>
        <t><tt>domain</tt> is the exact lowercase ASCII text string defined at each use. Digests of signed artifacts are SHA-256 over the complete tagged COSE_Sign1 byte sequence, including the tag, protected-header bytes, payload, and signature. Policy and action digests are SHA-256 over the exact supplied bytes. A verifier MUST NOT hash a decoded and reconstructed signed object in place of its received conforming bytes.</t>
      </section>
      <section anchor="mandatory-signature-envelope">
        <name>Mandatory signature envelope</name>
        <t>Every signed CBAP-1 object is an embedded-payload, tagged COSE_Sign1 object as defined by <xref target="RFC9052"/>:</t>
        <sourcecode type="text"><![CDATA[
18([protected, unprotected, payload, signature])
]]></sourcecode>
        <t>The protected header map MUST contain exactly:</t>
        <sourcecode type="text"><![CDATA[
{ 1: -19, 4: kid }
]]></sourcecode>
        <t>Header label <tt>1</tt> is <tt>alg</tt>; value <tt>-19</tt> is the fully specified Ed25519 algorithm registered by <xref target="RFC9864"/>. CBAP-1 MUST NOT use the deprecated polymorphic <tt>EdDSA</tt> value <tt>-8</tt>. Header label <tt>4</tt> is <tt>kid</tt>, encoded as a byte string of 1 through 64 bytes. The unprotected header map MUST be empty. The payload MUST be present as a byte string containing one closed CBAP-1 payload. Detached payloads, countersignatures, critical headers, and additional protected or unprotected headers are not supported by CBAP-1.</t>
        <t>The signature is computed over the <xref target="RFC9052"/> Sig_structure with context <tt>Signature1</tt>, the received protected-header bytes, an empty external AAD byte string, and the embedded payload bytes. Ed25519 is defined by <xref target="RFC8032"/>. CBAP-1 Ed25519 verification MUST apply Section 5.1.7 of <xref target="RFC8032"/> in full, including decoding <tt>R</tt> as a point and checking <tt>0 &lt;= S &lt; L</tt>, and MUST use the uncofactored equation <tt>[S]B = R + [k]A</tt>, where <tt>A</tt> is the decoded public-key point and the remaining notation is as in that section. The received <tt>signature</tt> byte string MUST be exactly 64 bytes; this length constraint belongs to the tagged COSE_Sign1 shape predicate and MUST be evaluated before trust resolution or signature verification. The public key is an Ed25519 COSE_Key as defined by <xref target="RFC9053"/>, with <tt>kty = 1</tt>, <tt>crv = 6</tt>, and a 32-byte <tt>x</tt> public-key value. In particular, as part of signature verification, that <tt>x</tt> value MUST decode successfully under Section 5.1.3 of <xref target="RFC8032"/>; a decoding failure is a signature-verification failure at the current signed-object boundary. CBAP-1 adds no separate small-order or weak-key rejection rule beyond RFC 8032 point decoding and the uncofactored verification equation above.</t>
        <t><tt>kid</tt> is a key-selection hint, not a trust assertion. The verifier's local trust set MUST resolve the exact protected <tt>kid</tt> bytes to exactly one authorized public key for the required role. Zero matching entries, multiple matching entries, or no entry authorized for the required role fails trust resolution at the current signed-object boundary as specified by the calling verification step. Within that same trust-resolution predicate, the verifier first matches entries by the exact protected <tt>kid</tt> and required role and requires exactly one matching entry; only then, on that uniquely resolved COSE_Key, if its <tt>alg</tt> member is present, it MUST be <tt>-19</tt>. The <tt>alg</tt> check MUST NOT filter entries before the exactly-one cardinality decision and MUST be completed before signature verification. Each payload also carries the signer's <tt>key-id</tt> as a text string. The protected <tt>kid</tt> MUST equal the UTF-8 encoding of that <tt>key-id</tt> byte-for-byte; no Unicode normalization or other transformation is applied. A protected <tt>kid</tt> that is not exactly such an encoding is invalid in CBAP-1.</t>
      </section>
      <section anchor="cbap-1-closed-data-model">
        <name>CBAP-1 closed data model</name>
        <t>CBAP-1 defines one closed end-to-end path comprising direct authorization binding, exact forum acceptance, issuer-only selection provenance, by-value policy verification, executor-attested pre-execution evidence, an execution-time filing clock, and <tt>effect_policy = none</tt>. Class manifests, companion bindings, notices, active execution effects, multiparty selection, and external selection are outside CBAP-1 and are unsupported by this profile.</t>
        <t>In CBAP-1, <tt>epoch</tt> is an unsigned integer counting seconds from <tt>1970-01-01T00:00Z</tt> UTC on the POSIX numeric timeline described for nonnegative epoch-based date/time values in Section 3.4.2 of <xref target="RFC8949"/>. CBAP-1 encodes this integer directly as the untagged CDDL <tt>uint</tt>; it does not use CBOR tag 1. Fractional and negative epoch values are therefore outside the profile. Leap seconds follow POSIX-time handling: CBAP-1 does not assign an inserted leap second an additional distinct integer value, and comparisons and deadline arithmetic use that same POSIX numeric timeline.</t>
        <t>The normative CDDL <xref target="RFC8610"/> is:</t>
        <sourcecode type="cddl"><![CDATA[
digest = bstr .size 32
id16 = bstr .size 16
epoch = uint
key-id = tstr
uri = tstr

policy-ref = [uri, digest]
validity = [not-before: epoch, not-after: epoch]
forum = [forum-id: uri, submission-endpoint: uri,
         forum-key-id: key-id]
filing-window = [basis: 1, duration-seconds: uint]
effect-policy = [mode: 0]
affected-party-access = [method: 3, discovery-uri: uri,
                         available-until: epoch]

cbap1-terms = {
  1: id16,                       ; authorization-id
  2: digest,                     ; abp-digest
  3: digest,                     ; authorization-trust-profile-digest
  4: key-id,                     ; authorization-issuer-key-id
  5: validity,                   ; authorization-validity
  6: digest,                     ; action-digest
  7: forum,
  8: policy-ref,                 ; standing-policy
  9: policy-ref,                 ; procedure
  10: filing-window,
  11: effect-policy,
  12: policy-ref,                ; selection-policy
  13: [1* affected-party-access],
  14: epoch,                     ; issued-at
  15: epoch,                     ; expires-at
  16: id16                       ; nonce
}

cbap1-cpo = {
  1: 1,                         ; profile version
  2: 1,                         ; object type: CPO
  3: cbap1-terms,
  4: [mode: 0, exact-acceptance-digest: digest],
  5: [],                        ; no selection statements: unilateral
  6: key-id                     ; issuer-key-id
}

cbap1-exact-acceptance = {
  1: 1,
  2: 2,                         ; exact forum acceptance
  3: digest,                    ; forum-terms-digest
  4: epoch,                     ; valid-from
  5: epoch,                     ; valid-until
  6: policy-ref,                ; submission-receipt-profile
  7: policy-ref,                ; withdrawal-policy
  8: epoch,                     ; signed-at
  9: key-id                     ; forum-key-id
}

cbap1-authorization = {
  1: 1,
  2: 3,                         ; CBAP-1 Authorization Artifact
  3: id16,                      ; authorization-id
  4: key-id,                    ; issuer-key-id
  5: tstr,                      ; agent-id
  6: digest,                    ; action-digest
  7: epoch,                     ; not-before
  8: epoch,                     ; not-after
  9: digest,                    ; cpo-digest
  10: id16                      ; nonce
}

cbap1-executor-verification = {
  1: 1,
  2: 4,                         ; executor verification record
  3: digest,                    ; authorization-digest
  4: id16,                      ; authorization-id
  5: digest,                    ; action-digest
  6: digest,                    ; cpo-digest
  7: 1,                         ; decision: execute
  8: epoch,                     ; verified-at
  9: id16,                      ; nonce
  10: key-id                    ; executor-key-id
}

cbap1-execution-record = {
  1: 1,
  2: 5,                         ; execution record
  3: digest,                    ; authorization-digest
  4: digest,                    ; executor-verification-digest
  5: id16,                      ; authorization-id
  6: digest,                    ; action-digest
  7: 1,                         ; disposition: executed
  8: epoch,                     ; executed-at
  9: id16,                      ; nonce
  10: key-id                    ; executor-key-id
}

cbap1-bundle = {
  1: 1,
  2: bstr,                      ; cpo-cose
  3: bstr,                      ; exact-acceptance-cose
  4: bstr,                      ; authorization-cose
  5: bstr,                      ; executor-verification-cose
  6: bstr,                      ; execution-record-cose
  7: bstr,                      ; action-bytes
  8: [+ [digest, bstr]]         ; policy-digest, policy-bytes
}
]]></sourcecode>
        <t>The following member-label registry is normative. The names identify protocol semantics, not merely implementation variables. An implementation that assigns a listed semantic value to another label is not CBAP-1 conformant even when its producer and verifier agree with each other.</t>
        <sourcecode type="text"><![CDATA[
cbap1-terms
   1 authorization-id
   2 abp-digest
   3 authorization-trust-profile-digest
   4 authorization-issuer-key-id
   5 authorization-validity
   6 action-digest
   7 forum
   8 standing-policy
   9 procedure
  10 filing-window
  11 effect-policy
  12 selection-policy
  13 affected-party-access
  14 issued-at
  15 expires-at
  16 nonce

cbap1-cpo
   1 profile-version
   2 object-type
   3 terms
   4 exact-acceptance-reference
   5 selection-statements
   6 issuer-key-id

cbap1-exact-acceptance
   1 profile-version
   2 object-type
   3 forum-terms-digest
   4 valid-from
   5 valid-until
   6 submission-receipt-profile
   7 withdrawal-policy
   8 signed-at
   9 forum-key-id

cbap1-authorization
   1 profile-version
   2 object-type
   3 authorization-id
   4 issuer-key-id
   5 agent-id
   6 action-digest
   7 not-before
   8 not-after
   9 cpo-digest
  10 nonce

cbap1-executor-verification
   1 profile-version
   2 object-type
   3 authorization-digest
   4 authorization-id
   5 action-digest
   6 cpo-digest
   7 decision
   8 verified-at
   9 nonce
  10 executor-key-id

cbap1-execution-record
   1 profile-version
   2 object-type
   3 authorization-digest
   4 executor-verification-digest
   5 authorization-id
   6 action-digest
   7 disposition
   8 executed-at
   9 nonce
  10 executor-key-id

cbap1-bundle
   1 profile-version
   2 cpo-cose
   3 exact-acceptance-cose
   4 authorization-cose
   5 executor-verification-cose
   6 execution-record-cose
   7 action-bytes
   8 policy-pairs
]]></sourcecode>
        <t>Each <tt>nonce</tt> in CBAP-1 is an object-local opaque <tt>id16</tt> member authenticated by the signature of its enclosing signed object. CBAP-1 defines no equality or inequality relation among CPO terms label <tt>16</tt>, Authorization Artifact label <tt>10</tt>, Executor Verification label <tt>9</tt>, and Execution Record label <tt>9</tt>. A verifier MUST NOT reject a bundle merely because any two of those nonce values are equal or different, and MUST NOT infer freshness, uniqueness, single use, replay resistance, or protocol ordering from their presence or value. Cross-object binding in CBAP-1 is established by the authorization identifier, action digest, CPO digest, Authorization Artifact digest, Executor Verification digest, and the required signer/key relations.</t>
        <t>In particular, executor-verification member <tt>5</tt> is always <tt>action-digest</tt> and member <tt>6</tt> is always <tt>cpo-digest</tt>. Execution-record member <tt>5</tt> is <tt>authorization-id</tt> and member <tt>6</tt> is <tt>action-digest</tt>. Reusing a semantic label number across different maps is not a CBAP-1 design rule; only the registry above assigns meaning.</t>
        <t>The integer values have the following fixed meanings in CBAP-1: filing-window basis <tt>1</tt> is <tt>execution_time</tt>; effect mode <tt>0</tt> is <tt>none</tt>; affected-party access method <tt>3</tt> is <tt>public_transparency</tt>; forum-acceptance mode <tt>0</tt> is <tt>exact</tt>; executor decision <tt>1</tt> is <tt>execute</tt>; and execution disposition <tt>1</tt> is <tt>executed</tt>. For every fixed CBAP-1 integer vocabulary, any value other than a listed fixed value is outside the CBAP-1 CDDL and fails at the containing object's closed-schema boundary; it is not an extension point. In particular, a CPO effect-mode integer other than <tt>0</tt> fails the B5 closed-schema predicate before <tt>declared_effect</tt> is completed, so <tt>declared_effect</tt> remains <tt>indeterminate</tt> under the closed transition table.</t>
        <t>The filing-window <tt>duration-seconds</tt> value MUST be in the inclusive range <tt>1..18446744073709551615</tt>. A zero-duration contestation window is not valid in CBAP-1 and fails at <tt>profile_binding_mismatch</tt> rather than being interpreted as an instantaneous window.</t>
        <t>Policy pairs in bundle member <tt>8</tt> MUST be sorted in ascending bytewise order of <tt>policy-digest</tt> and MUST NOT repeat a digest. This makes the by-value bundle unique rather than treating arbitrary array order as a new encoding of the same evidence set. After the five signed payloads have been validated, the set of <tt>policy-digest</tt> values in bundle member <tt>8</tt> MUST equal exactly the set referenced by CPO terms labels <tt>8</tt>, <tt>9</tt>, and <tt>12</tt> and Exact Forum Acceptance labels <tt>6</tt> and <tt>7</tt>. Missing or additional policy digests fail at <tt>profile_binding_mismatch</tt>; malformed, unsorted, duplicate, or internally digest-inconsistent policy pairs continue to fail at <tt>policy_set_invalid</tt>.</t>
        <t><tt>cbap1-authorization</tt> is the deliberately small Authorization Artifact format admitted by this profile. The expected CBAP-1 ABP identifier is fixed by this profile as defined below; other authorization formats and ABP behaviors are outside CBAP-1. It is not proposed as a universal agent-authorization format.</t>
      </section>
      <section anchor="cbap-1-digest-and-construction-rules">
        <name>CBAP-1 digest and construction rules</name>
        <t>CBAP-1 uses these exact derivations:</t>
        <sourcecode type="text"><![CDATA[
action_digest = SHA-256(action_bytes)
policy_digest = SHA-256(policy_bytes)
forum_terms = [terms[1], terms[2], terms[3], terms[4], terms[5],
               terms[6], terms[7], terms[8], terms[9], terms[10]]
forum_terms_digest = H("agent-contestation-forum-terms-v1",
                       forum_terms)
acceptance_digest = SHA-256(exact_acceptance_cose_bytes)
cpo_digest = SHA-256(cpo_cose_bytes)
authorization_digest = SHA-256(authorization_cose_bytes)
verification_record_digest = SHA-256(
    executor_verification_cose_bytes)
]]></sourcecode>
        <t>CBAP-1 permits <tt>action_bytes</tt> to be a zero-length byte string. In that case, <tt>action_digest</tt> is SHA-256 of the zero-length byte string.</t>
        <t>The construction order is fixed:</t>
        <ol spacing="normal" type="1"><li>
            <t>Fix the action bytes, policy bytes, trust inputs, identifiers, validity, forum, filing window, access method, times, and nonces.</t>
          </li>
          <li>
            <t>Compute the action and policy digests and construct <tt>cbap1-terms</tt>.</t>
          </li>
          <li>
            <t>Project <tt>forum_terms</tt>, compute its digest, and obtain the forum-signed exact acceptance.</t>
          </li>
          <li>
            <t>Hash the complete signed acceptance and place that digest in the CPO payload.</t>
          </li>
          <li>
            <t>Sign the CPO and hash the complete tagged COSE_Sign1 bytes.</t>
          </li>
          <li>
            <t>Place the CPO digest in the CBAP-1 Authorization Artifact and sign it.</t>
          </li>
          <li>
            <t>Hash the signed Authorization Artifact and construct the executor verification record. Place <tt>authorization-digest</tt> at label <tt>3</tt>, <tt>authorization-id</tt> at label <tt>4</tt>, <tt>action-digest</tt> at label <tt>5</tt>, and <tt>cpo-digest</tt> at label <tt>6</tt>.</t>
          </li>
          <li>
            <t>Sign that record, hash it, and construct the execution record. Place <tt>authorization-digest</tt> at label <tt>3</tt>, <tt>executor-verification-digest</tt> at label <tt>4</tt>, <tt>authorization-id</tt> at label <tt>5</tt>, and <tt>action-digest</tt> at label <tt>6</tt>.</t>
          </li>
          <li>
            <t>Sign the execution record and assemble the unsigned by-value bundle.</t>
          </li>
        </ol>
        <t>No step signs or hashes a placeholder for an object that is completed later. Reversing steps 3 through 8 changes the required digest dependency and MUST fail verification. A verifier MUST hash each signed artifact from its exact received conforming bytes rather than substitute a decoded-and-reconstructed representation. A reconstruction that differs by one or more bytes changes the relevant digest and MUST fail verification; a byte-identical reconstruction has the same digest.</t>
      </section>
      <section anchor="cbap-1-trust-and-verification-inputs">
        <name>CBAP-1 trust and verification inputs</name>
        <t>The bundle is evidence, not a trust store. A CBAP-1 verifier receives separately:</t>
        <ul spacing="normal">
          <li>
            <t>the expected Authorization Trust Profile identifier supplied by trusted local policy;</t>
          </li>
          <li>
            <t>a local trust set containing zero or more role-authorized Ed25519 public-key entries, each associated with exact <tt>kid</tt> bytes; a forum-role entry can additionally carry the forum-identifier authorization consumed by the separate forum-terms check;</t>
          </li>
          <li>
            <t>a verification-time input presented at the verifier boundary as an integer and validated before conversion to the CBAP-1 unsigned range.</t>
          </li>
        </ul>
        <t>The expected CBAP-1 ABP identifier is fixed by this profile as <tt>H("cbap1-authorization-binding-profile-v1", 1)</tt> and MUST be derived by the verifier rather than replaced by a caller-supplied alternative. The expected Authorization Trust Profile identifier is supplied by local policy and MUST equal terms member <tt>3</tt>; untrusted bytes carried in the bundle cannot replace it. Policy bytes in the bundle establish discoverability and digest equality only. They do not become trusted merely because the issuer supplied them.</t>
        <t>The <strong>CBAP-1 signed-object role table</strong> is closed:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Signed object</th>
              <th align="left">Required trust role</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CPO</td>
              <td align="left">
                <tt>issuer-role</tt></td>
            </tr>
            <tr>
              <td align="left">Exact Forum Acceptance</td>
              <td align="left">
                <tt>forum-role</tt></td>
            </tr>
            <tr>
              <td align="left">Authorization Artifact</td>
              <td align="left">
                <tt>issuer-role</tt></td>
            </tr>
            <tr>
              <td align="left">Executor Verification</td>
              <td align="left">
                <tt>executor-role</tt></td>
            </tr>
            <tr>
              <td align="left">Execution Record</td>
              <td align="left">
                <tt>executor-role</tt></td>
            </tr>
          </tbody>
        </table>
        <t>For each signed CBAP-1 object, trust resolution matches the role assigned in the CBAP-1 signed-object role table and the exact protected <tt>kid</tt> bytes. Zero matching entries or more than one matching entry fails at that signed-object boundary; exactly one matching entry supplies the public key used for signature verification. Additional entries under the same role with different <tt>kid</tt> values are allowed. CBAP-1 resolves the Executor Verification and Execution Record independently and MUST NOT require their protected <tt>kid</tt> values or resolved trust entries to be equal; different <tt>kid</tt> values are conforming when each object independently resolves to exactly one <tt>executor-role</tt> trust entry and all remaining predicates pass. Independent role authorization plus the required Execution Record binding to the exact signed Executor Verification record does not by itself establish that the two signer keys belong to the same legal, organizational, physical, or logical executor identity. An entry carrying the same <tt>kid</tt> under a different role does not satisfy the assigned role. For the Exact Forum Acceptance signer, authorization for the CPO terms <tt>forum-id</tt> is evaluated separately at the forum-terms boundary and MUST NOT be folded into signed-object trust resolution. In CBAP-1, absence of explicit <tt>forum-id</tt> authorization on the resolved <tt>forum-role</tt> trust entry means authorization for no forum identifier; omission MUST NOT be interpreted as wildcard authorization.</t>
        <t>The valid verification-time range is <tt>0..18446744073709551615</tt>. A negative integer, an integer above that range, or an external representation that is not an integer fails with <tt>verification_time_invalid</tt> before any bundle byte is parsed. A public adapter MAY use a textual or wider host representation to expose this boundary, but parse and range failures MUST be converted to the closed reason. They MUST NOT cause an unhandled exception, panic, process abort, clamping, wrapping, or substitution. An internal API whose type cannot represent an invalid value does not by itself satisfy the externally observable conformance boundary.</t>
        <t>After the complete successful CBAP-1 procedure through boundary 21 passes, the final structured result contains <tt>selection_provenance: unilateral</tt>, <tt>forum_acknowledgement: valid_exact</tt>, <tt>pre_execution_evidence: executor_attested</tt>, and <tt>declared_effect: none</tt>. During evaluation, each field completes only where Section 7.2 assigns its positive transition; this descriptive successful-path sentence neither delays nor advances any field completion. The execution record's authenticated <tt>executed-at</tt> value starts the filing window. This is an executor-signed clock claim authorized through the executor-role entries of the local trust set and local policy, not an external wall-clock proof. CBAP-1 uses that local trust set and local policy for signed-object trust resolution and filing-clock authority.</t>
      </section>
    </section>
    <section anchor="structured-result">
      <name>Structured result</name>
      <t>CBAP-1 returns one closed structured result. The result has exactly sixteen semantic fields plus <tt>reasons</tt>; implementations MUST NOT add profile-defined result fields or result values to this CBAP-1 result.</t>
      <t>The closed scalar vocabulary is:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Field</th>
            <th align="left">CBAP-1 values</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>binding</tt></td>
            <td align="left">
              <tt>valid</tt>, <tt>invalid</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>pre_execution_evidence</tt></td>
            <td align="left">
              <tt>executor_attested</tt>, <tt>invalid</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>discoverability</tt></td>
            <td align="left">
              <tt>complete</tt>, <tt>incomplete</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>forum_acknowledgement</tt></td>
            <td align="left">
              <tt>valid_exact</tt>, <tt>invalid_scope</tt>, <tt>invalid</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>forum_operational_status</tt></td>
            <td align="left">
              <tt>not_checked</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>selection_provenance</tt></td>
            <td align="left">
              <tt>unilateral</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>access_binding</tt></td>
            <td align="left">
              <tt>valid</tt>, <tt>invalid</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>notice_evidence</tt></td>
            <td align="left">
              <tt>not_claimed</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>retrievability</tt></td>
            <td align="left">
              <tt>not_checked</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>filing_window_status</tt></td>
            <td align="left">
              <tt>not_open</tt>, <tt>open</tt>, <tt>closed</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>policy_freshness</tt></td>
            <td align="left">
              <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>declared_effect</tt></td>
            <td align="left">
              <tt>none</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>effect_acceptance</tt></td>
            <td align="left">
              <tt>not_required</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>effect_trigger</tt></td>
            <td align="left">
              <tt>not_applicable</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>effect_ordering</tt></td>
            <td align="left">
              <tt>not_applicable</tt>, <tt>indeterminate</tt></td>
          </tr>
          <tr>
            <td align="left">
              <tt>effect_application</tt></td>
            <td align="left">
              <tt>not_applicable</tt>, <tt>indeterminate</tt></td>
          </tr>
        </tbody>
      </table>
      <t><tt>filing_window_status</tt> is derived by step 21 of the CBAP-1 verification procedure as <tt>not_open</tt>, <tt>open</tt>, or <tt>closed</tt>, and B21 completes the field with that derived value on its positive transition. Its <tt>indeterminate</tt> value is the initialized value preserved when verification stops before B21 completes the field.</t>
      <t><tt>reasons</tt> has a separate closed vocabulary. It is <tt>[]</tt> on the positive path. On a negative path it contains exactly one of the twenty-one reason codes defined by the B1–B21 failure-precedence table, and that code is the first failing boundary under the specified precedence. An implementation MAY retain additional diagnostics for operators, but MUST NOT return implementation-specific strings or a second reason code in <tt>reasons</tt>.</t>
      <t>Before evaluating B1, a verifier MUST initialize the result exactly as follows:</t>
      <sourcecode type="json"><![CDATA[
{
  "binding": "indeterminate",
  "pre_execution_evidence": "indeterminate",
  "discoverability": "indeterminate",
  "forum_acknowledgement": "indeterminate",
  "forum_operational_status": "not_checked",
  "selection_provenance": "indeterminate",
  "access_binding": "indeterminate",
  "notice_evidence": "indeterminate",
  "retrievability": "not_checked",
  "filing_window_status": "indeterminate",
  "policy_freshness": "indeterminate",
  "declared_effect": "indeterminate",
  "effect_acceptance": "indeterminate",
  "effect_trigger": "indeterminate",
  "effect_ordering": "indeterminate",
  "effect_application": "indeterminate",
  "reasons": []
}
]]></sourcecode>
      <t>The two <tt>not_checked</tt> initial values mean that CBAP-1 has not performed an operational reachability or retrievability check. Every other semantic field begins as <tt>indeterminate</tt> because no validated protocol input has yet established a more specific CBAP-1 value. The <tt>reasons</tt> array begins empty.</t>
      <t>For <tt>binding</tt>, <tt>discoverability</tt>, and <tt>declared_effect</tt>, <tt>indeterminate</tt> means that the verifier has not established enough validated input to select another value in that field's CBAP-1 vocabulary. It MUST NOT replace an already established <tt>binding: invalid</tt> or <tt>discoverability: incomplete</tt> result. More generally, each semantic field transitions from its initial value at most once and then retains that value for the remainder of verification.</t>
      <t>The result evolves monotonically under the closed B1–B21 boundaries:</t>
      <ul spacing="normal">
        <li>
          <t>For B1 through B4, a positive semantic-field completion occurs only where the closed transition table explicitly assigns one after the whole boundary passes. No other semantic field completes in those boundaries.</t>
        </li>
        <li>
          <t>For signed-object boundaries B5 through B9, no positive semantic-field completion assigned to a boundary occurs unless the complete signed-object validation pipeline passes. On failure, only the negative transition explicitly assigned to the first failed predicate may occur.</t>
        </li>
        <li>
          <t>For cross-object boundaries B10 through B21, a predicate that passes earlier in the current boundary may complete a semantic field before a later predicate in that boundary fails only where the closed transition table explicitly assigns that completion. There is no open-ended post-failure derivation.</t>
        </li>
        <li>
          <t>On a negative path, <tt>reasons</tt> MUST transition exactly once from <tt>[]</tt> to the one-element array containing the first failure-precedence reason code. On the positive path, <tt>reasons</tt> remains <tt>[]</tt> and transitions zero times.</t>
        </li>
        <li>
          <t>When a predicate fails, verification stops for result derivation at that predicate. Later predicates in the same boundary and all later boundaries do not derive additional result values.</t>
        </li>
      </ul>
      <t><tt>access_binding</tt> reports only the integrity and CBAP-1 constraint status of the declared affected-party access data. It is <tt>valid</tt> only when the B21 positive completion occurs after the required prior CBAP-1 checks and the access horizon passes. It is <tt>invalid</tt> only where the closed transition table assigns that value: CPO signature failure; authenticated CPO signer <tt>key-id</tt> mismatch against the authorization-issuer <tt>key-id</tt> declared in the CPO terms; failure of an affected-party <tt>discovery-uri</tt>; or failure of the affected-party access horizon. Otherwise it retains its current value, including initialized <tt>indeterminate</tt> on paths that stop before a listed completion. <tt>access_binding</tt> does not report delivery or current retrievability.</t>
      <t>CBAP-1 performs no policy-freshness evaluation. <tt>policy_freshness</tt> therefore remains <tt>indeterminate</tt> on every CBAP-1 path.</t>
      <t>One positive-path result, for a <tt>verification_time</tt> before <tt>executed-at</tt>, is:</t>
      <sourcecode type="json"><![CDATA[
{
  "binding": "valid",
  "pre_execution_evidence": "executor_attested",
  "discoverability": "complete",
  "forum_acknowledgement": "valid_exact",
  "forum_operational_status": "not_checked",
  "selection_provenance": "unilateral",
  "access_binding": "valid",
  "notice_evidence": "not_claimed",
  "retrievability": "not_checked",
  "filing_window_status": "not_open",
  "policy_freshness": "indeterminate",
  "declared_effect": "none",
  "effect_acceptance": "not_required",
  "effect_trigger": "not_applicable",
  "effect_ordering": "not_applicable",
  "effect_application": "not_applicable",
  "reasons": []
}
]]></sourcecode>
      <t>The positive-path <tt>filing_window_status</tt> value is derived by step 21 as <tt>not_open</tt> when <tt>verification_time &lt; executed-at</tt>, <tt>open</tt> when <tt>executed-at &lt;= verification_time &lt; filing_deadline</tt>, and <tt>closed</tt> when <tt>verification_time &gt;= filing_deadline</tt>.</t>
      <t>A conforming implementation MUST NOT collapse this structured result into a boolean such as <tt>contestable: true</tt> or into an independence claim without applying an explicitly identified local policy. In particular, <tt>forum_acknowledgement: valid_exact</tt> does not establish forum reachability or independence; <tt>access_binding: valid</tt> does not establish delivery or current retrievability; and <tt>pre_execution_evidence: executor_attested</tt> does not prove physical state or remedy.</t>
    </section>
    <section anchor="verification">
      <name>Verification</name>
      <section anchor="cbap-1-verification-procedure">
        <name>CBAP-1 verification procedure</name>
        <t>A CBAP-1 verifier performs the following closed procedure in order. Steps 1 through 21 correspond one-to-one with failure-precedence boundaries B1 through B21; step 22 returns the structured result and is not a failure boundary. Steps 1 through 9 establish the local-input, outer-item, policy-set, and signed-object boundaries in the same order as Section 7.2. Resource ceilings from Section 5.1 are predicates of the boundary currently decoding the item and are evaluated before allocation, iteration, closed-schema checks, or later predicates that require the decoded value. For each signed object in steps 5 through 9, the verifier completes that object's entire validation pipeline before examining the next signed object: CBAP-1 resource ceilings and Core Deterministic CBOR conformance under Section 5.1 of the complete tagged COSE_Sign1 item; tagged COSE_Sign1 shape, unprotected-header constraints, and the 64-byte received-signature length constraint; resource ceilings and Core Deterministic CBOR conformance of the CBOR encoded in the protected-header byte string and the protected-header constraints; resource ceilings and Core Deterministic CBOR conformance of the CBOR encoded in the payload byte string; closed payload schema, profile version, and object type; protected <tt>kid</tt> equality to the UTF-8 encoding of the payload signer <tt>key-id</tt>; unique role-authorized trust resolution, evaluating exact protected-<tt>kid</tt> and required-role matching and exactly-one cardinality before requiring the uniquely resolved COSE_Key <tt>alg</tt>, when present, to equal <tt>-19</tt>; and signature verification over the received protected and payload bytes with empty external AAD. For failure-precedence purposes, the closed payload schema includes every constraint expressed directly by the CBAP-1 CDDL, including fixed integer values, CDDL cardinality constraints, and fixed empty arrays; a fixed CDDL constraint that fails at steps 5 through 9 MUST NOT be re-evaluated at steps 13, 17, or 18. Within a closed map, member constraints are evaluated in ascending numeric-label order; within a list, items are evaluated from index zero upward. For steps 10 through 21, predicates are evaluated in the order stated in the corresponding step.</t>
        <ol spacing="normal" type="1"><li>
            <t>Validate the verification-time input as an integer in <tt>0..18446744073709551615</tt>. Return <tt>verification_time_invalid</tt> on a parse, type, sign, or range failure without parsing the bundle.</t>
          </li>
          <li>
            <t>Before parsing the bundle, require the complete received bundle to be no more than <tt>MAX_BUNDLE_BYTES</tt>. Then parse exactly one outer CBOR item and require complete input consumption, the CBAP-1 resource ceilings applicable at the outer-item boundary, and the Core Deterministic CBOR constraints that can be evaluated without applying the closed <tt>cbap1-bundle</tt> schema. At this outer-item boundary, reject every CBOR tag, including tag 18; the required tag 18 applies only to each signed COSE_Sign1 object carried inside a bundle <tt>bstr</tt>. Also reject duplicate map keys, indefinite-length items, non-shortest arguments, disallowed simple values, floats, invalid UTF-8, any declared length that cannot be consumed with checked cursor arithmetic, or any outer-boundary resource ceiling exceeded by a declared item. Re-encode that outer item under Section 5.1 and require byte-for-byte equality. Do not reject an otherwise deterministic outer item merely because its bundle version, members, or member types do not match <tt>cbap1-bundle</tt>; those checks belong to step 3.</t>
          </li>
          <li>
            <t>Require the outer item to be the closed <tt>cbap1-bundle</tt> with the supported profile version, all required members, no unknown members, and the required outer member types. For bundle member <tt>8</tt>, apply the complete CDDL grammar <tt>8: [+ [digest, bstr]]</tt> together with <tt>digest = bstr .size 32</tt> at this step: require a non-empty policy-set array; require each item to be exactly a two-element <tt>[digest, bstr]</tt> pair; require the digest to be a 32-byte byte string; and require the policy bytes to be a byte string. These CDDL-expressed member-8 constraints belong to this boundary and MUST NOT be re-evaluated at step 4. The <tt>MAX_POLICY_PAIRS</tt> upper bound, profile-defined ordering, uniqueness, and digest integrity are evaluated only at step 4.</t>
          </li>
          <li>
            <t>Validate the already CDDL-valid policy set. Require the array to contain no more than <tt>MAX_POLICY_PAIRS</tt> pairs, require the array to be in the profile-defined order, reject duplicate policy digests, recompute SHA-256 over each policy byte string, and require equality. At this step only the <tt>MAX_POLICY_PAIRS</tt> upper bound, order, uniqueness, and internal digest integrity are evaluated. Member-8 non-empty cardinality, exact pair shape, 32-byte digest type/size, and policy-byte <tt>bstr</tt> type were already established at step 3 and MUST NOT be re-evaluated here. Referenced-policy presence is evaluated at step 13 after all five signed payloads have passed their object-validation pipelines. The upper-bound predicate remains inside B4 <tt>policy_set_invalid</tt>; it creates no semantic-field transition, so B4 remains P <tt>--</tt> / N <tt>--</tt> as specified in Section 7.2.</t>
          </li>
          <li>
            <t>Apply the complete signed-object validation pipeline above to the CPO using its <tt>issuer-role</tt> assignment in the CBAP-1 signed-object role table, and no later signed object.</t>
          </li>
          <li>
            <t>Apply the complete signed-object validation pipeline above to the Exact Forum Acceptance using its <tt>forum-role</tt> assignment in the CBAP-1 signed-object role table, and no later signed object.</t>
          </li>
          <li>
            <t>Apply the complete signed-object validation pipeline above to the Authorization Artifact using its <tt>issuer-role</tt> assignment in the CBAP-1 signed-object role table, and no later signed object.</t>
          </li>
          <li>
            <t>Apply the complete signed-object validation pipeline above to the Executor Verification record using its <tt>executor-role</tt> assignment in the CBAP-1 signed-object role table, and no later signed object.</t>
          </li>
          <li>
            <t>Apply the complete signed-object validation pipeline above to the Execution Record using its <tt>executor-role</tt> assignment in the CBAP-1 signed-object role table.</t>
          </li>
          <li>
            <t>Hash the complete signed CPO and require equality with the Authorization Artifact's CPO digest.</t>
          </li>
          <li>
            <t>Hash the complete signed Exact Forum Acceptance and require equality with the CPO acceptance reference.</t>
          </li>
          <li>
            <t>Recompute <tt>action_digest</tt> from the bundle's action bytes. Then, in this order, require equality with CPO terms label <tt>6</tt>, Authorization Artifact label <tt>6</tt>, Executor Verification label <tt>5</tt>, and Execution Record label <tt>6</tt>.</t>
          </li>
          <li>
            <t>Evaluate these predicates in order. Require the CPO terms to use the expected CBAP-1 ABP identifier, then the expected Authorization Trust Profile identifier. Require the CPO signer <tt>key-id</tt> to equal the CPO terms authorization-issuer <tt>key-id</tt>. Require <tt>not-before &lt;= not-after</tt>. Require the filing-window duration to be in <tt>1..18446744073709551615</tt>. Require conforming HTTPS URIs, first evaluating the URI-bearing <tt>cbap1-terms</tt> members in ascending numeric-label order and nested list entries in ascending index order: forum-id <tt>7[0]</tt>, submission-endpoint <tt>7[1]</tt>, Standing Policy URI <tt>8[0]</tt>, procedure URI <tt>9[0]</tt>, selection-policy URI <tt>12[0]</tt>, and each affected-party <tt>discovery-uri</tt> at <tt>13[i][1]</tt> for increasing <tt>i</tt>; then evaluate Exact Forum Acceptance submission-receipt-profile URI <tt>6[0]</tt> and withdrawal-policy URI <tt>7[0]</tt>, in that order. Require the CPO terms forum <tt>key-id</tt> to encode as 1 through 64 UTF-8 bytes. Let <tt>referenced_policy_digests</tt> be the set of policy digests carried at CPO terms labels <tt>8</tt>, <tt>9</tt>, and <tt>12</tt> and Exact Forum Acceptance labels <tt>6</tt> and <tt>7</tt>. Require every digest in <tt>referenced_policy_digests</tt> to be present in bundle member <tt>8</tt>. Then require bundle member <tt>8</tt> to contain no policy digest outside <tt>referenced_policy_digests</tt>. Do not compare the Authorization Artifact projection or any other signed-artifact digest at this step.</t>
          </li>
          <li>
            <t>Require the Authorization Artifact's authorization identifier, issuer <tt>key-id</tt>, and validity projection to equal the corresponding CPO terms. Do not compare its action digest or CPO digest at this step.</t>
          </li>
          <li>
            <t>Project <tt>forum_terms</tt> exactly as Section 5.4 specifies. Require its digest in the already-validated and CPO-bound Exact Forum Acceptance to equal that projection. Require the Exact Forum Acceptance signer <tt>key-id</tt> to equal the CPO terms forum <tt>key-id</tt> exactly. Require the trust entry resolved for that signer at step 6 to carry explicit authorization for the exact CPO terms <tt>forum-id</tt>; an entry with no <tt>forum-id</tt> authorization fails this predicate.</t>
          </li>
          <li>
            <t>Hash the complete signed Authorization Artifact and require equality at Executor Verification label <tt>3</tt> and Execution Record label <tt>3</tt>.</t>
          </li>
          <li>
            <t>Require the already-validated Executor Verification record to carry the bound authorization identifier at label <tt>4</tt> and CPO digest at label <tt>6</tt>.</t>
          </li>
          <li>
            <t>Hash the complete signed Executor Verification record. Require the already-validated Execution Record to carry that digest at label <tt>4</tt> and the bound authorization identifier at label <tt>5</tt>.</t>
          </li>
          <li>
            <t>Require <tt>not-before &lt;= verified-at &lt;= executed-at &lt;= not-after</tt>.</t>
          </li>
          <li>
            <t>Compute <tt>filing_deadline = executed-at + duration-seconds</tt> with checked unsigned arithmetic.</t>
          </li>
          <li>
            <t>Require the Exact Forum Acceptance <tt>signed-at &lt;= not-before</tt>, <tt>valid-from &lt;= not-before</tt>, and <tt>valid-until &gt;= filing_deadline</tt>; require CPO <tt>issued-at &lt;= verified-at</tt> and <tt>expires-at &gt;= filing_deadline</tt>; and require at least one declared access method with <tt>available-until &gt;= filing_deadline</tt>. Treat the filing window as the half-open interval <tt>[executed-at, filing_deadline)</tt>. Derive <tt>filing_window_status</tt> as <tt>not_open</tt> when <tt>verification_time &lt; executed-at</tt>, <tt>open</tt> when <tt>executed-at &lt;= verification_time &lt; filing_deadline</tt>, and <tt>closed</tt> when <tt>verification_time &gt;= filing_deadline</tt>.</t>
          </li>
          <li>
            <t>Return every field in the CBAP-1 structured-result contract independently. The positive CBAP-1 path yields <tt>binding: valid</tt>, <tt>pre_execution_evidence: executor_attested</tt>, <tt>discoverability: complete</tt>, <tt>forum_acknowledgement: valid_exact</tt>, <tt>forum_operational_status: not_checked</tt>, <tt>selection_provenance: unilateral</tt>, <tt>access_binding: valid</tt>, <tt>notice_evidence: not_claimed</tt>, <tt>retrievability: not_checked</tt>, <tt>policy_freshness: indeterminate</tt>, <tt>declared_effect: none</tt>, <tt>effect_acceptance: not_required</tt>, <tt>effect_trigger: not_applicable</tt>, <tt>effect_ordering: not_applicable</tt>, <tt>effect_application: not_applicable</tt>, and <tt>reasons: []</tt>; <tt>filing_window_status</tt> is derived as <tt>not_open</tt>, <tt>open</tt>, or <tt>closed</tt> from the supplied verification time. It does not yield forum reachability, delivery, independence, policy fairness, or physical execution order.</t>
          </li>
        </ol>
        <t>A failure at steps 1 through 21 MUST produce the corresponding first reason code at the same precedence number in the CBAP-1 failure-precedence table. The verifier MUST NOT evaluate a later failure boundary for purposes of <tt>reasons</tt> before the current boundary has passed. When a boundary fails, the verifier MUST stop at the first failed predicate, MUST NOT evaluate any later predicate of that boundary or any later boundary, and MUST complete the CBAP-1 structured result only through the closed transition rules in that table while preserving every field already completed by an earlier boundary.</t>
      </section>
      <section anchor="cbap-1-failure-precedence-and-reason-codes">
        <name>CBAP-1 failure precedence and reason codes</name>
        <t>CBAP-1 closes the externally observable failure boundary. On the positive path, <tt>reasons</tt> MUST be the empty array. On a negative path, <tt>reasons</tt> MUST contain exactly one of the codes in the table below: the first failing boundary under the stated precedence. An implementation MAY retain more detailed diagnostics for operators, but it MUST NOT place implementation-specific strings in <tt>reasons</tt> or substitute a later, more specific failure for the first one.</t>
        <table>
          <thead>
            <tr>
              <th align="right">Precedence</th>
              <th align="left">Reason code</th>
              <th align="left">Boundary</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">1</td>
              <td align="left">
                <tt>verification_time_invalid</tt></td>
              <td align="left">The supplied verification time is not an unsigned integer representable in CBAP-1.</td>
            </tr>
            <tr>
              <td align="right">2</td>
              <td align="left">
                <tt>outer_encoding_invalid</tt></td>
              <td align="left">The outer item is truncated, has trailing bytes, violates Core Deterministic CBOR, or uses a forbidden CBOR construct.</td>
            </tr>
            <tr>
              <td align="right">3</td>
              <td align="left">
                <tt>bundle_schema_invalid</tt></td>
              <td align="left">The outer item is not the closed <tt>cbap1-bundle</tt>, has an unsupported profile version, contains a member of the wrong CDDL type, or violates member <tt>8</tt> CDDL non-empty cardinality, exact pair shape, 32-byte digest, or policy-byte <tt>bstr</tt> constraints.</td>
            </tr>
            <tr>
              <td align="right">4</td>
              <td align="left">
                <tt>policy_set_invalid</tt></td>
              <td align="left">The CDDL-valid policy array exceeds <tt>MAX_POLICY_PAIRS</tt>, is unsorted, contains a duplicate policy digest, or is internally digest-inconsistent.</td>
            </tr>
            <tr>
              <td align="right">5</td>
              <td align="left">
                <tt>cpo_invalid</tt></td>
              <td align="left">The CPO COSE envelope, payload schema including fixed CDDL constraints, object type, <tt>kid</tt>, role resolution, or signature is invalid.</td>
            </tr>
            <tr>
              <td align="right">6</td>
              <td align="left">
                <tt>forum_acceptance_invalid</tt></td>
              <td align="left">The Exact Forum Acceptance COSE envelope, payload schema including fixed CDDL constraints, object type, <tt>kid</tt>, role resolution, or signature is invalid.</td>
            </tr>
            <tr>
              <td align="right">7</td>
              <td align="left">
                <tt>authorization_invalid</tt></td>
              <td align="left">The Authorization Artifact COSE envelope, payload schema including fixed CDDL constraints, object type, <tt>kid</tt>, role resolution, or signature is invalid.</td>
            </tr>
            <tr>
              <td align="right">8</td>
              <td align="left">
                <tt>executor_verification_invalid</tt></td>
              <td align="left">The executor-verification COSE envelope, payload schema including fixed CDDL constraints, object type, <tt>kid</tt>, role resolution, or signature is invalid.</td>
            </tr>
            <tr>
              <td align="right">9</td>
              <td align="left">
                <tt>execution_record_invalid</tt></td>
              <td align="left">The execution-record COSE envelope, payload schema including fixed CDDL constraints, object type, <tt>kid</tt>, role resolution, or signature is invalid.</td>
            </tr>
            <tr>
              <td align="right">10</td>
              <td align="left">
                <tt>cpo_binding_mismatch</tt></td>
              <td align="left">The complete signed CPO digest is not the digest bound into the Authorization Artifact.</td>
            </tr>
            <tr>
              <td align="right">11</td>
              <td align="left">
                <tt>acceptance_binding_mismatch</tt></td>
              <td align="left">The complete signed acceptance digest is not the digest bound into the CPO.</td>
            </tr>
            <tr>
              <td align="right">12</td>
              <td align="left">
                <tt>action_digest_mismatch</tt></td>
              <td align="left">The action bytes do not hash to the one action digest required across the four signed payloads that carry it: CPO terms label <tt>6</tt>, Authorization Artifact label <tt>6</tt>, Executor Verification label <tt>5</tt>, and Execution Record label <tt>6</tt>.</td>
            </tr>
            <tr>
              <td align="right">13</td>
              <td align="left">
                <tt>profile_binding_mismatch</tt></td>
              <td align="left">The ABP, Authorization Trust Profile, CPO signer-to-terms issuer <tt>key-id</tt> equality, authorization-validity form, non-zero filing duration, HTTPS URI syntax for the required CPO and Exact Forum Acceptance policy-reference URIs, CPO terms forum <tt>key-id</tt> length, presence of every referenced policy digest, or absence of unreferenced policy digests does not match the supplied trust inputs and closed profile.</td>
            </tr>
            <tr>
              <td align="right">14</td>
              <td align="left">
                <tt>authorization_projection_mismatch</tt></td>
              <td align="left">The Authorization Artifact projection does not equal the authorization identifier, issuer, or validity required by the CPO terms. The action digest is evaluated only at precedence 12 and the signed CPO digest only at precedence 10.</td>
            </tr>
            <tr>
              <td align="right">15</td>
              <td align="left">
                <tt>forum_terms_mismatch</tt></td>
              <td align="left">The accepted forum-terms digest is not the exact projection defined in Section 5.4, the Exact Forum Acceptance signer <tt>key-id</tt> does not exactly equal the CPO terms forum <tt>key-id</tt>, or the resolved forum key is not authorized for the CPO terms <tt>forum-id</tt>.</td>
            </tr>
            <tr>
              <td align="right">16</td>
              <td align="left">
                <tt>authorization_digest_mismatch</tt></td>
              <td align="left">The complete signed Authorization Artifact digest is not the digest bound into both executor records.</td>
            </tr>
            <tr>
              <td align="right">17</td>
              <td align="left">
                <tt>executor_verification_mismatch</tt></td>
              <td align="left">Executor Verification label <tt>4</tt> does not carry the bound authorization identifier or label <tt>6</tt> does not carry the bound CPO digest.</td>
            </tr>
            <tr>
              <td align="right">18</td>
              <td align="left">
                <tt>execution_record_mismatch</tt></td>
              <td align="left">Execution Record label <tt>4</tt> does not bind the exact signed Executor Verification record or label <tt>5</tt> does not carry the bound authorization identifier.</td>
            </tr>
            <tr>
              <td align="right">19</td>
              <td align="left">
                <tt>executor_ordering_invalid</tt></td>
              <td align="left">The authenticated executor times do not satisfy <tt>not-before &lt;= verified-at &lt;= executed-at &lt;= not-after</tt>.</td>
            </tr>
            <tr>
              <td align="right">20</td>
              <td align="left">
                <tt>filing_deadline_overflow</tt></td>
              <td align="left">Adding the filing duration to <tt>executed-at</tt> exceeds the CBAP-1 unsigned-integer range.</td>
            </tr>
            <tr>
              <td align="right">21</td>
              <td align="left">
                <tt>filing_horizon_invalid</tt></td>
              <td align="left">Exact Forum Acceptance <tt>signed-at</tt> is after <tt>not-before</tt>, <tt>valid-from</tt> is after <tt>not-before</tt>, or <tt>valid-until</tt> is before the filing deadline; CPO <tt>issued-at</tt> is after executor <tt>verified-at</tt> or <tt>expires-at</tt> is before the filing deadline; or no affected-party access declaration remains valid through the filing deadline.</td>
            </tr>
          </tbody>
        </table>
        <t>The verifier evaluates local input 1 first, then the outer item, the policy set, and the five signed objects in table order. For precedences 5 through 9, the verifier applies the complete signed-object validation pipeline in Section 7.1 in its stated order. Cross-object checks then follow precedences 10 through 21, with predicates inside each step evaluated in the order stated in Section 7.1. Evaluation stops at the first failed boundary and, within that boundary, at the first failed predicate. Later predicates of that boundary and all later boundaries are not evaluated.</t>
        <t>The first-reason rule is a reproducibility rule, not permission to collapse the CBAP-1 structured result. On failure, the verifier applies only the structured-result transition assigned below to the first failed predicate, changes <tt>reasons</tt> from <tt>[]</tt> to the corresponding one-element array, preserves every previously completed field, and returns the result. A field without a listed transition preserves its current value. On the positive path, the listed positive completions occur at their stated boundaries. Positive completions at boundaries 5 through 9 occur only after the complete signed-object boundary passes; at boundaries 10 through 21, an earlier passed predicate may complete a field before a later predicate fails only where explicitly stated below.</t>
        <section anchor="cbap-1-structured-result-transitions">
          <name>CBAP-1 structured-result transitions</name>
          <t>The following transition rules are closed. <tt>P</tt> identifies positive completion when the boundary passes. <tt>N</tt> identifies the transition caused by the first failed predicate. <tt>--</tt> means no semantic-field transition.</t>
          <ul spacing="normal">
            <li>
              <t><strong>B1 <tt>verification_time_invalid</tt>:</strong> P <tt>--</tt>; N <tt>--</tt>.</t>
            </li>
            <li>
              <t><strong>B2 <tt>outer_encoding_invalid</tt>:</strong> P <tt>--</tt>; N <tt>--</tt>.</t>
            </li>
            <li>
              <t><strong>B3 <tt>bundle_schema_invalid</tt>:</strong> P <tt>notice_evidence = not_claimed</tt>; N <tt>--</tt>. This is the profile-determined completion for a valid closed <tt>cbap1-bundle</tt>, which carries no notice member.</t>
            </li>
            <li>
              <t><strong>B4 <tt>policy_set_invalid</tt>:</strong> P <tt>--</tt>; N <tt>--</tt>.</t>
            </li>
            <li>
              <t><strong>B5 <tt>cpo_invalid</tt>:</strong> P <tt>declared_effect = none</tt>, <tt>effect_acceptance = not_required</tt>, <tt>effect_trigger = not_applicable</tt>, <tt>effect_ordering = not_applicable</tt>, and <tt>effect_application = not_applicable</tt>. For N, signed-object predicates 1 through 7 have no semantic-field transition; signature failure sets <tt>binding = invalid</tt> and <tt>access_binding = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B6 <tt>forum_acceptance_invalid</tt>:</strong> P <tt>--</tt>; any first failed signed-object predicate sets <tt>forum_acknowledgement = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B7 <tt>authorization_invalid</tt>:</strong> P <tt>--</tt>; any first failed signed-object predicate sets <tt>binding = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B8 <tt>executor_verification_invalid</tt>:</strong> P <tt>--</tt>; any first failed signed-object predicate sets <tt>pre_execution_evidence = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B9 <tt>execution_record_invalid</tt>:</strong> P <tt>--</tt>; any first failed signed-object predicate sets <tt>pre_execution_evidence = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B10 <tt>cpo_binding_mismatch</tt>:</strong> P <tt>--</tt>; N sets <tt>binding = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B11 <tt>acceptance_binding_mismatch</tt>:</strong> P <tt>--</tt>; N sets <tt>forum_acknowledgement = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B12 <tt>action_digest_mismatch</tt>:</strong> P <tt>--</tt>. A mismatch at CPO terms label <tt>6</tt> or Authorization Artifact label <tt>6</tt> sets <tt>binding = invalid</tt>. A mismatch at Executor Verification label <tt>5</tt> or Execution Record label <tt>6</tt> sets <tt>pre_execution_evidence = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B13 <tt>profile_binding_mismatch</tt>:</strong> P <tt>discoverability = complete</tt>. Expected-ABP or expected-Authorization-Trust-Profile mismatch has no semantic-field transition. CPO signer <tt>key-id</tt> mismatch against the terms authorization-issuer <tt>key-id</tt> sets <tt>binding = invalid</tt> and <tt>access_binding = invalid</tt>. Failure of <tt>not-before &lt;= not-after</tt>, filing duration, any HTTPS URI other than an affected-party <tt>discovery-uri</tt>, or forum <tt>key-id</tt> length has no semantic-field transition. Failure of an affected-party <tt>discovery-uri</tt> sets <tt>access_binding = invalid</tt>. A missing referenced policy digest sets <tt>discoverability = incomplete</tt>. An unreferenced policy digest sets <tt>discoverability = complete</tt>.</t>
            </li>
            <li>
              <t><strong>B14 <tt>authorization_projection_mismatch</tt>:</strong> P <tt>selection_provenance = unilateral</tt>, <tt>binding = valid</tt>; N sets <tt>binding = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B15 <tt>forum_terms_mismatch</tt>:</strong> P <tt>--</tt>. Accepted-digest mismatch sets <tt>forum_acknowledgement = invalid_scope</tt>. Acceptance-signer <tt>key-id</tt> mismatch or resolved-signer authorization failure sets <tt>forum_acknowledgement = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B16 <tt>authorization_digest_mismatch</tt>:</strong> P <tt>--</tt>; N sets <tt>pre_execution_evidence = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B17 <tt>executor_verification_mismatch</tt>:</strong> P <tt>--</tt>; failure of either label <tt>4</tt> authorization-identifier binding or label <tt>6</tt> CPO-digest binding sets <tt>pre_execution_evidence = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B18 <tt>execution_record_mismatch</tt>:</strong> P <tt>--</tt>; failure of either label <tt>4</tt> exact Executor Verification binding or label <tt>5</tt> authorization-identifier binding sets <tt>pre_execution_evidence = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B19 <tt>executor_ordering_invalid</tt>:</strong> P <tt>pre_execution_evidence = executor_attested</tt>; N sets <tt>pre_execution_evidence = invalid</tt>.</t>
            </li>
            <li>
              <t><strong>B20 <tt>filing_deadline_overflow</tt>:</strong> P <tt>--</tt>; N <tt>--</tt>.</t>
            </li>
            <li>
              <t><strong>B21 <tt>filing_horizon_invalid</tt>:</strong> P <tt>forum_acknowledgement = valid_exact</tt>, <tt>access_binding = valid</tt>, and <tt>filing_window_status</tt> derived as specified in Section 7.1. Failure of Exact Forum Acceptance <tt>signed-at</tt>, <tt>valid-from</tt>, or <tt>valid-until</tt> sets <tt>forum_acknowledgement = invalid_scope</tt>. Failure of CPO <tt>issued-at</tt> or <tt>expires-at</tt> has no semantic-field transition. Failure of the affected-party access horizon sets <tt>access_binding = invalid</tt>.</t>
            </li>
          </ul>
          <t><tt>forum_operational_status</tt> remains <tt>not_checked</tt>, <tt>retrievability</tt> remains <tt>not_checked</tt>, and <tt>policy_freshness</tt> remains <tt>indeterminate</tt> on every CBAP-1 path.</t>
          <t>The following list is the complete set of CBAP-1 field-ownership clarifications for the closed failure classifications above:</t>
          <ul spacing="normal">
            <li>
              <t>B5 signed-object predicates 1 through 7 do not transition <tt>binding</tt>; only CPO signature failure does.</t>
            </li>
            <li>
              <t>B12 Executor Verification and Execution Record action-digest failures transition <tt>pre_execution_evidence</tt>, not <tt>binding</tt>.</t>
            </li>
            <li>
              <t>B13 expected-ABP and expected-Authorization-Trust-Profile mismatches leave <tt>binding</tt> unchanged.</t>
            </li>
            <li>
              <t>B16 transitions <tt>pre_execution_evidence</tt>, not <tt>binding</tt>.</t>
            </li>
            <li>
              <t>B17 and B18 identifier or digest mismatches transition <tt>pre_execution_evidence</tt>, not <tt>binding</tt>.</t>
            </li>
          </ul>
          <t>The closed transitions above are exhaustive for CBAP-1 failure classification. In particular, <tt>policy_set_invalid</tt> does not by itself prove <tt>binding: invalid</tt>, and reachability failure is outside this closed CBAP-1 byte-verification procedure.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section follows the guidance in <xref target="RFC7942"/> and is intended to be removed before publication as an RFC.</t>
      <t>The implementation evidence snapshot recorded here is current through 4 September 2026. It is non-normative and does not define or override CBAP-1 requirements.</t>
      <t>The development evidence includes a Python reference implementation, an oracle-blind, context-isolated Rust reconstruction, and a JavaScript cross-check. The cross-check re-encoded the external positive bundle fixture byte-for-byte and verified all five Ed25519 signatures. That fixture has SHA-256:</t>
      <t><tt>8a47e89abb2c77a9de27ffb59a5bc89a7226509236e35b0f11cf6819fd1b6646</tt></t>
      <t>The first frozen Rust reconstruction exposed a digest-label ambiguity and remains frozen at SHA-256:</t>
      <t><tt>956b88d2832e4265913cb73f93e69b960ef6f1d860f8acbc5b50ea453cbab2f0</tt></t>
      <t>After specification repair, the frozen A3 source-and-artifact package was recorded at SHA-256:</t>
      <t><tt>f2b9b0745ca8b751322f416ed62e73769b2396934b8beb811d5f71b4fc88b129</tt></t>
      <t>That reconstruction passed its 56-test baseline and matched the retained evaluator for the positive fixture, the closed failure-precedence corpus, and 28 URI cases. A later specification refresh implemented exact policy-set equality and the half-open filing interval, added nonce non-relation regression coverage, and passed 61 tests. Subsequent public-key-decoding, trust/profile-input, resource-limit, and URI-port hardening on the same Rust lineage extended the locked suite to 73/73 with zero failures.</t>
      <t>The executable evidence is limited to the exact CBAP-1 path specified by this document. It does not establish an independent human implementation, production deployment, interoperability certification, exhaustive parser safety, or a security audit.</t>
      <t>A stable public location and explicit software license for the implementation and evidence packages are to be designated as part of a verifiable release publication. Until then, this section records development evidence but does not claim public package availability.</t>
      <t>Implementation and test-package contact: Tiago Pinto <eref target="mailto:tiago@donttrustverify.pt">tiago@donttrustverify.pt</eref>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="issuer-controlled-forum">
        <name>Issuer-Controlled Forum</name>
        <t>A discoverable forum can still be biased or controlled by the issuer. On the successful path, CBAP-1 reports <tt>selection_provenance: unilateral</tt>. A valid forum signature therefore does not establish institutional independence.</t>
      </section>
      <section anchor="forum-substitution">
        <name>Forum Substitution</name>
        <t>The forum identifier, submission endpoint, key identifier, procedure, and bound policy references are protected by the CBAP-1 digest and signature bindings. A verifier <strong>MUST</strong> reject substitution after authorization.</t>
      </section>
      <section anchor="policy-equivocation">
        <name>Policy Equivocation</name>
        <t>Serving different CPOs or policy documents to different audiences can move equivocation into the contestation layer. Deployments claiming a consistent view <strong>SHOULD</strong> register CPOs or their digests in a transparency service and <strong>MUST</strong> define how readers detect split views.</t>
      </section>
      <section anchor="endpoint-availability-and-network-access">
        <name>Endpoint Availability and Network Access</name>
        <t>Cryptographic binding and Exact Forum Acceptance do not prove current endpoint availability. CBAP-1 performs no forum-operational-status or retrievability check; <tt>forum_operational_status</tt> and <tt>retrievability</tt> remain <tt>not_checked</tt>.</t>
        <t>CBAP-1 verification does not require dereferencing a signed URI. A deployment that chooses to dereference one <strong>SHOULD</strong> treat the target, each redirect, and each resolved address as untrusted network input. It <strong>SHOULD</strong> bound redirects, time, response size, and other resource use, and <strong>SHOULD</strong> reject loopback, private, link-local, metadata-service, or otherwise privileged destinations unless such access is explicitly intended and separately authorized.</t>
      </section>
      <section anchor="deadline-control-and-clock-bias">
        <name>Deadline Control and Clock Bias</name>
        <t>An issuer can declare a filing window that is too short to be useful. Verification authenticates the filing-window inputs and checks the required arithmetic; it does not establish fairness. Relying parties <strong>SHOULD</strong> apply an appropriate minimum-window policy and <strong>MUST NOT</strong> infer legitimacy from syntactic validity.</t>
        <t>The authenticated <tt>executed-at</tt> value is an executor-signed clock claim, not proof of external wall-clock accuracy. The ordering predicate constrains that claim relative to <tt>verified-at</tt> and the authorization interval, but it does not prevent executor-controlled clock bias. A deployment that requires protection against such bias <strong>SHOULD</strong> constrain clock authority and acceptable skew through its local trust inputs and policy.</t>
      </section>
      <section anchor="standing-and-privacy">
        <name>Standing and Privacy</name>
        <t>A Standing Policy can exclude a person materially affected by an action. CBAP-1 makes the policy identity and supplied bytes verifiable; it does not establish legal standing or policy legitimacy.</t>
        <t>Standing <strong>SHOULD</strong> be expressed by role or policy where possible. Personally identifying evidence <strong>SHOULD</strong> be disclosed only under an appropriate confidentiality mechanism.</t>
      </section>
      <section anchor="abuse-controls-and-credential-survivability">
        <name>Abuse Controls and Credential Survivability</name>
        <t>Anti-replay, rate limiting, authentication, and other abuse controls <strong>MUST NOT</strong> silently alter the bound Standing Policy or filing window.</t>
        <t>An action can disable the only credential or lookup path available to an Affected Party after execution. CBAP-1 binds the declared access information but does not prove that a real-world retrieval method survives the action. Deployments requiring survivable access need an operational method that remains usable independently of the contested action.</t>
      </section>
      <section anchor="replay-and-exact-acceptance-scope">
        <name>Replay and Exact-Acceptance Scope</name>
        <t>Exact Forum Acceptance is bound to the exact <tt>forum_terms_digest</tt>, forum signer, forum identifier authorization, and the other CBAP-1 cross-object digests. Evidence from different terms, keys, profile identifiers, policy references, or authorization bytes does not become valid because labels or URIs appear similar.</t>
        <t>CBAP-1 nonce members are object-local opaque values. Their presence or value does not establish freshness, uniqueness, single use, replay resistance, or protocol ordering.</t>
      </section>
      <section anchor="executor-claims-and-confidentiality">
        <name>Executor Claims and Confidentiality</name>
        <t>Signatures establish integrity and signer attribution, not physical execution order or organizational identity across different keys. <tt>pre_execution_evidence: executor_attested</tt> therefore establishes only the signed claims accepted under the configured executor-role trust inputs and the required digest and time bindings.</t>
        <t>CBAP-1 fixes <tt>action_digest = SHA-256(action_bytes)</tt> and carries <tt>action_bytes</tt> by value in the complete bundle. Before disclosure, a low-entropy action digest can permit offline guessing. Deployments <strong>SHOULD</strong> restrict access to the bundle and action bytes when confidentiality is required. A deployment <strong>MUST NOT</strong> replace CBAP-1's <tt>SHA-256(action_bytes)</tt> construction with a salted commitment and still claim CBAP-1 conformance.</t>
      </section>
      <section anchor="historical-verification-and-common-control">
        <name>Historical Verification and Common Control</name>
        <t>Historical verification depends on the signed bytes and the trust inputs accepted by the verifier for the relevant role. CBAP-1 does not define a separate key-rotation or continuity protocol.</t>
        <t>Distinct issuer, forum, and executor keys establish cryptographic separation, not organizational, legal, physical, or logical independence. Implementations <strong>MUST NOT</strong> infer institutional independence merely from the number of valid signatures or distinct key identifiers.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests no IANA action.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6874">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes how the zone identifier of an IPv6 scoped address, defined as in the IPv6 Scoped Address Architecture (RFC 4007), can be represented in a literal IPv6 address and in a Uniform Resource Identifier that includes such a literal address. It updates the URI Generic Syntax specification (RFC 3986) accordingly.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6874"/>
          <seriesInfo name="DOI" value="10.17487/RFC6874"/>
        </reference>
        <reference anchor="RFC7049">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7049"/>
          <seriesInfo name="DOI" value="10.17487/RFC7049"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC9844">
          <front>
            <title>Entering IPv6 Zone Identifiers in User Interfaces</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="August" year="2025"/>
            <abstract>
              <t>This document describes how the zone identifier of an IPv6 scoped address, defined in the IPv6 Scoped Address Architecture specification (RFC 4007), should be entered into a user interface. This document obsoletes RFC 6874 and updates RFCs 4007, 7622, and 8089.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9844"/>
          <seriesInfo name="DOI" value="10.17487/RFC9844"/>
        </reference>
      </references>
    </references>
    <?line 823?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author thanks Emek Can Doğru and Iman Schrock for their review of the architectural predecessor to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
zZciAQA=

-->

</rfc>
