<?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 tocindent="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dogru-cedulon-core-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Cedulon Core">Spend Receipts and Payment Rail Reconciliation for AI Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-dogru-cedulon-core-00"/>
    <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
      <organization>VERAX TEKNOLOJI LIMITED SIRKETI</organization>
      <address>
        <postal>
          <country>Turkey</country>
        </postal>
        <email>e.dogru@cedulon.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="17"/>
    <area>sec</area>
    <keyword>Cedulon</keyword>
    <keyword>agent</keyword>
    <keyword>receipt</keyword>
    <keyword>policy</keyword>
    <keyword>SCITT</keyword>
    <abstract>
      <?line 190?>

<t>This document addresses auditable payments for AI agents and builds
upon state-of-the-art HTTP 402, AP2 and credit card systems. We
specify a cryptographically secured payment reconciliation protocol
using a Trade Manifest (a signed offer before payment), a Policy
Decision Point with default deny, a Spend Receipt (a COSE/CWT claim
set issued after a gated payment), and rail-extract reconciliation.</t>
    </abstract>
  </front>
  <middle>
    <?line 199?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Artificial Intelligence (AI) agents involved in travel, stock market
transactions, etc. may need the capability of securely paying for
their transactions. Previously defined protocols such as HTTP 402
<xref target="X402"/> and Google's Agent Payments Protocol (AP2) <xref target="AP2"/> made it
possible: HTTP 402 protocols attach stablecoin settlement to ordinary
requests, and AP2 binds user intent to signed mandates. Card networks
and processors issue agent-scoped tokens.</t>
      <t>What is missing is an interoperable <strong>audit layer</strong>: a machine-checkable
answer to "was this spend allowed by policy, against which offer, and
what bytes were delivered?" The answers have limits, and this document
states them. "Allowed by policy" is the Receipt Issuer's signed
assertion; the audit does not independently re-verify the policy
decision (<xref target="policy-semantics"/>). What was delivered is machine-checkable
only where an attributable payee countersignature binds a delivery hash
(<xref target="countersign"/>). Without such a layer, a prompt-injected or looping
agent can drain a rail that has already accepted a valid signature, and
a counterparty can ship the wrong artifact.</t>
      <t>The name Cedulon is from cedule, the older legal word for a written
schedule or note. Cedulon does not clear funds, hold custody, or
operate a payment facilitator. An optional escrow actor is defined only as a third-party
role interface (<xref target="escrow-role"/>). Implementations of this specification
<bcp14>MUST NOT</bcp14> take custody of funds or operate escrow (<tt>MUST-T8-custody</tt>).</t>
      <t>Reconciling an internal ledger against an external statement is an old
accounting control <xref target="PACIOLI"/>, and signing the artifacts on both sides
is Grigg's triple-entry idea <xref target="GRIGG"/>. This document profiles that
control for parties that are software: a CBOR Object Signing and
Encryption (COSE) <xref target="RFC9052"/> receipt shape, an extract shape, and a
verification algorithm precise enough that two implementations reach
the same finding on the same evidence. The checkpoint chain that
extends it over time is in <xref target="CEDULON-CHECKPOINT"/>.</t>
      <t>A Cedulon audit is intended to be read within the architecture for
auditing AI agent delegation and interactions <xref target="KUEHLEWIND-AUDIT"/>,
which links user intent, delegation and authorization to an execution,
registers the resulting records with a Supply Chain Integrity,
Transparency, and Trust (SCITT) Transparency Service <xref target="RFC9943"/>, and
lists financial transactions by agents among its motivating cases. For
a spend, this document adds a result that architecture does not define:
completeness of signed receipts against an authenticated extract of the
rail, over a declared account, rail and time window. This document does
not define an integration profile for that architecture. Other related
drafts are noted in <xref target="adjacent"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses Concise Binary Object Representation (CBOR)
<xref target="RFC8949"/>, CBOR Web Token (CWT) <xref target="RFC8392"/> claim sets, and JavaScript
Object Notation (JSON) documents. In the tables, CBOR types are written
<tt>tstr</tt> (text string), <tt>bstr</tt> (byte string) and <tt>uint</tt> (unsigned
integer).</t>
      <t>The following terms are used:</t>
      <dl>
        <dt>Trade Manifest:</dt>
        <dd>
          <t>A signed statement produced <strong>before</strong> payment. It binds a description
of goods or service, price, currency, acceptance-criteria hash, cancel
condition, expiry, and an optional AP2 mandate reference.</t>
        </dd>
        <dt>Policy Decision Point (PDP):</dt>
        <dd>
          <t>The function that evaluates a structured spend request against stored
policy. The default is deny.</t>
        </dd>
        <dt>Rail:</dt>
        <dd>
          <t>The payment system that moves value and reports what it settled, such
as the settlement path behind an HTTP 402 exchange <xref target="X402"/>. A Rail
Extract names it by <tt>railId</tt>.</t>
        </dd>
        <dt>Payment Adapter:</dt>
        <dd>
          <t>The component that performs the payment on the rail. It calls the PDP
first and is the only path from the agent to the rail (<tt>MUST-T5-1</tt>).</t>
        </dd>
        <dt>Spend Receipt:</dt>
        <dd>
          <t>A signed statement produced <strong>after</strong> a gated payment attempt. It
binds payer, payee, amount, currency, policy hash, <tt>manifestHash</tt> or
an explicit <tt>noManifest</tt> flag, rail payment reference, <tt>timestampMs</tt>,
nonce, <tt>prevReceiptHash</tt>, and <tt>outcome</tt>.</t>
        </dd>
        <dt>Receipt Issuer:</dt>
        <dd>
          <t>The party that signs Spend Receipts.</t>
        </dd>
        <dt>Anchor:</dt>
        <dd>
          <t>An optional SCITT Transparency Service <xref target="RFC9943"/> that registers a
signed statement and returns a COSE receipt <xref target="RFC9942"/>.</t>
        </dd>
        <dt>Dispute Evidence Bundle:</dt>
        <dd>
          <t>A package of the Trade Manifest, the Spend Receipt, and a delivery
hash. It is evidence for a later human or legal process. It is not an
arbitral award and not an escrow release.</t>
        </dd>
        <dt>Decision Token:</dt>
        <dd>
          <t>A portable, single-use PDP allow encoded as COSE_Sign1. The claim
set binds <tt>requestHash</tt>, <tt>policyHash</tt>, <tt>expiryMs</tt>, <tt>nonce</tt>, and
<tt>singleUseId</tt>. See <xref target="decision-token"/>.</t>
        </dd>
        <dt>Rail Extract:</dt>
        <dd>
          <t>An authenticated list of settlement records for one account, one
rail, and one time window. See <xref target="rail-extract"/>.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>The party that runs the reconciliation of <xref target="reconciliation"/> over the
receipts, the Rail Extract, and the keys it holds.</t>
        </dd>
        <dt>Pinned key:</dt>
        <dd>
          <t>A public key the verifier obtained out of band, as opposed to a key an
object carries beside its signature. See <xref target="trust-roots"/>.</t>
        </dd>
        <dt>Working set:</dt>
        <dd>
          <t>The receipts and checkpoints the verification steps consume: those
that verify under a usable pinned issuer key (the attested set), or,
when no usable issuer key is pinned, every presented one. See
<xref target="verification"/>.</t>
        </dd>
        <dt>Presented-unattested:</dt>
        <dd>
          <t>The state of a receipt or checkpoint the verifier holds no pinned
issuer key for. Its signature is checked against the key the object
itself carries (<xref target="presentation"/>), which establishes internal
consistency only, so the object is neither attested nor rejected:
every presented object is weighed as one set and the completeness
guarantee is reported as conditional. It is a state of the report,
not a finding code. See <xref target="issuer-root"/>.</t>
        </dd>
      </dl>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The following diagram shows the payment path, the audit path, and the
optional transparency service:</t>
      <artwork><![CDATA[
  Principal --policy--> PDP
                         ^
                         | request / allow or deny
  Trade Manifest         |
  (optional) -----> Payment Adapter --payment--> Rail
                         |                         |
                         v                         v
                  Receipt Issuer              Rail Extract
                         |                         |
                         v                         |
                   Spend Receipt ---> Verifier <---+
                         |               |
                         v               v
             Anchor / SCITT (optional)  Report
]]></artwork>
      <t>The payer agent never talks to the rail except through an adapter that
calls the PDP first (<tt>MUST-T5-1</tt>).</t>
      <section anchor="policy-decision-point">
        <name>Policy Decision Point</name>
        <t>The PDP evaluates structured fields only (<tt>MUST-T1-1</tt>): amount,
currency, payee, tool identifier, nonce, optional manifest hash, and
evaluation time. It applies limit, velocity, and scope checks
(<tt>MUST-T2-1</tt>, <tt>MUST-T2-2</tt>). If the PDP is unreachable, uninitialized,
or throws, the result is deny (<tt>MUST-T2-3</tt>). Denied attempts do not
increment success counters (<tt>MUST-T2-4</tt>).</t>
        <t>An allow produces a Decision Token whose <tt>requestHash</tt> covers six
fields: amount, currency, payee, tool, nonce, and <tt>manifestHash</tt>
(<tt>MUST-T3-4</tt>, <tt>MUST-T6-1</tt>). The token is a COSE_Sign1 object
(<tt>MUST-T6-4</tt>), is single-use (<tt>MUST-T6-2</tt>), and <bcp14>MAY</bcp14> be carried to
the adapter that performs settlement.</t>
      </section>
      <section anchor="receipt-issuer">
        <name>Receipt Issuer</name>
        <t>After the adapter attempts settlement (success or a recorded deny that
still needs an audit trail for an allowed-then-aborted path), the
Receipt Issuer signs a Spend Receipt over the deterministic CBOR
encoding of its claims (<tt>MUST-T4-1</tt>). Verifiers reject bad signatures and byte mismatch
(<tt>MUST-T4-2</tt>).</t>
      </section>
      <section anchor="anchor-scitt">
        <name>Anchor / SCITT</name>
        <t>Parties <bcp14>MAY</bcp14> register the signed receipt (or a privacy-preserving hash
encoding) as a SCITT Signed Statement <xref target="RFC9943"/> and attach the COSE
receipt (<tt>MAY-T4-6</tt>). This document does not operate a Transparency
Service.</t>
      </section>
    </section>
    <section anchor="lifecycle">
      <name>Lifecycle</name>
      <ol spacing="normal" type="1"><li>
          <t><strong>Manifest.</strong> Optionally, the payee or a marketplace signs a Trade Manifest. A
spend without one is marked <tt>noManifest</tt> and still passes limit,
velocity and scope checks (<tt>MUST-T1-2</tt>); a deployment <bcp14>MAY</bcp14> refuse
such spend (<tt>MAY-T1-4</tt>).</t>
        </li>
        <li>
          <t><strong>Policy check.</strong> The adapter submits a structured request to the
PDP. Default is deny. An allow is a Decision Token
(<tt>MUST-T6-4</tt>).</t>
        </li>
        <li>
          <t><strong>Payment.</strong> On allow, the adapter performs the x402 (or other
rail) exchange using exactly the decision fields (<tt>MUST-T6-1</tt>).
The Decision Token is consumed (<tt>MUST-T6-2</tt>). A reused nonce is
denied (<tt>MUST-T3-1</tt>, <tt>MUST-T3-2</tt>). A tampered or expired token
is denied (<tt>MUST-T6-5</tt>).</t>
        </li>
        <li>
          <t><strong>Receipt.</strong> The Receipt Issuer signs a Spend Receipt. Rail
credentials <bcp14>MUST NOT</bcp14> appear in the receipt, logs, or tool
results (<tt>MUST-T5-2</tt>, <tt>MUST-T7-1</tt>).</t>
        </li>
        <li>
          <t><strong>Dispute Evidence Bundle.</strong> If delivery bytes do not match the
acceptance-criteria hash, an implementation <bcp14>MUST</bcp14> be able to emit
a bundle of manifest + receipt + delivery hash (<tt>MUST-T8-3</tt>).
The bundle <bcp14>MUST NOT</bcp14> be described as an arbitral award or escrow
release (<tt>MUST-T8-4</tt>).</t>
        </li>
      </ol>
      <t>Afterwards, a verifier reconciles the receipts against the rail's own
extract (<xref target="reconciliation"/>). Appendix C follows one 10.00 TRY spend
through these steps.</t>
    </section>
    <section anchor="trade-manifest">
      <name>Trade Manifest</name>
      <t>A Trade Manifest is a signed offer issued <strong>before</strong> value moves. It
<bcp14>MAY</bcp14> carry an AP2 mandate hash so that user intent and the offer stay
linked (<tt>SHOULD-T8-5</tt>).</t>
      <t>A Trade Manifest <bcp14>MUST</bcp14> bind all of the following (<tt>MUST-T8-1</tt>):</t>
      <ul spacing="normal">
        <li>
          <t>goods or service description</t>
        </li>
        <li>
          <t>price (integer minor units, encoded as a decimal string matching
<tt>0|[1-9][0-9]*</tt>)</t>
        </li>
        <li>
          <t>currency (ISO 4217 alphabetic or a documented token identifier)</t>
        </li>
        <li>
          <t>acceptance-criteria hash (SHA-256 <xref target="RFC6234"/> of the exact delivery
bytes, lowercase hexadecimal)</t>
        </li>
        <li>
          <t>cancel condition (opaque string agreed by the parties)</t>
        </li>
        <li>
          <t>expiry (POSIX milliseconds, <tt>expiresAtMs</tt>)</t>
        </li>
      </ul>
      <t>The hash is taken over the exact delivery bytes only. Hashing a
schema instance instead would need a marker in the manifest saying
so; this document defines no such marker, and until one is defined
that use is out of scope rather than an alternative a verifier is
expected to guess at. The acceptance-criteria hash therefore fits a
delivery whose exact bytes are known when the offer is signed, such as
a file; this document defines no such hash for a service, such as a
travel booking, whose delivery is not a byte string.</t>
      <t>It <bcp14>MAY</bcp14> include <tt>ap2MandateHash</tt>. The corresponding CBOR label is
always present; a missing mandate is encoded as CBOR null.</t>
      <t>It <bcp14>MAY</bcp14> name a <tt>payee</tt>. An offer that is specific to one counterparty
carries that party's payee identifier; when present, every receipt
that names this manifest has its <tt>payee</tt> compared against it as exact
octets under <tt>MUST-T8-9</tt>, on that requirement's two-branch severity.
An open offer legitimately omits the member, and no comparison is
made. Unlike <tt>ap2MandateHash</tt>, the label is encoded only when the
member is present, so the null convention above does not apply to it.</t>
      <t>The manifest is COSE_Sign1 <xref target="RFC9052"/> over a deterministic CBOR claim
map (<xref target="cose-profile"/>). <tt>manifestHash</tt> is the SHA-256 of the signed
COSE bytes (<tt>MUST-T8-7</tt>). A spend bound to a manifest <bcp14>MUST</bcp14> be denied
if the requested amount or currency differs from the manifest
(<tt>MUST-T8-2</tt>) or if the manifest is expired (<tt>MUST-T3-3</tt>).</t>
      <t>A spend that is not bound to a verified manifest <bcp14>MUST</bcp14> be marked
<tt>noManifest</tt> on the receipt and <bcp14>MUST</bcp14> still pass limit, velocity, and
scope checks (<tt>MUST-T1-2</tt>). An implementation <bcp14>MAY</bcp14> refuse all
<tt>noManifest</tt> spend (<tt>MAY-T1-4</tt>).</t>
    </section>
    <section anchor="spend-receipt">
      <name>Spend Receipt</name>
      <t>The Spend Receipt claim set is carried in COSE_Sign1 <xref target="RFC9052"/>
wrapping a CWT-compatible map <xref target="RFC8392"/>. New receipts <bcp14>MUST</bcp14> use the
COSE profile (<xref target="cose-profile"/>).</t>
      <t>Claims (<tt>MUST-T4-3</tt>, <tt>MUST-T4-4</tt>, <tt>MUST-T4-7</tt>):</t>
      <table>
        <thead>
          <tr>
            <th align="left">Claim</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">payer</td>
            <td align="left">Payer agent identifier</td>
          </tr>
          <tr>
            <td align="left">payee</td>
            <td align="left">Payee identifier</td>
          </tr>
          <tr>
            <td align="left">amount</td>
            <td align="left">Minor units as a decimal string <tt>0|[1-9][0-9]*</tt></td>
          </tr>
          <tr>
            <td align="left">currency</td>
            <td align="left">Currency identifier</td>
          </tr>
          <tr>
            <td align="left">policyHash</td>
            <td align="left">SHA-256 of the canonical policy document (lowercase hex)</td>
          </tr>
          <tr>
            <td align="left">manifestHash</td>
            <td align="left">SHA-256 of the signed manifest COSE bytes, or null when <tt>noManifest</tt> is true</td>
          </tr>
          <tr>
            <td align="left">noManifest</td>
            <td align="left">Boolean; <bcp14>MUST</bcp14> be true if and only if <tt>manifestHash</tt> is null</td>
          </tr>
          <tr>
            <td align="left">x402PaymentRef</td>
            <td align="left">Rail payment reference, or null</td>
          </tr>
          <tr>
            <td align="left">timestampMs</td>
            <td align="left">POSIX milliseconds</td>
          </tr>
          <tr>
            <td align="left">nonce</td>
            <td align="left">Unique spend nonce; at least 128 bits of randomness; unique in the issuer scope</td>
          </tr>
          <tr>
            <td align="left">prevReceiptHash</td>
            <td align="left">Previous receipt hash, or null for the first receipt (<tt>SHOULD-T4-5</tt>)</td>
          </tr>
          <tr>
            <td align="left">outcome</td>
            <td align="left">
              <tt>settled</tt> or <tt>aborted</tt></td>
          </tr>
        </tbody>
      </table>
      <t>A receipt with <tt>outcome</tt> = <tt>settled</tt> <bcp14>MUST</bcp14> have a non-null
<tt>x402PaymentRef</tt> (<tt>MUST-T4-7</tt>). An aborted receipt <bcp14>MUST NOT</bcp14> be added
into checkpoint totals.</t>
      <t>All twelve labels in <xref target="receipt-labels"/> are always present. An empty
optional value is encoded as CBOR null, never by omitting the label.</t>
      <t><tt>receiptHash</tt> is the SHA-256 of the receipt's signed COSE bytes,
encoded as lowercase hex.</t>
      <t>Verifiers <bcp14>MUST</bcp14> reject a receipt if the signature fails or if the
decoded claim map does not match the presented claims (<tt>MUST-T4-2</tt>).</t>
      <section anchor="countersign">
        <name>Optional payee countersignature</name>
        <t>A payee <bcp14>MAY</bcp14> attach a countersignature over the issuer's signed
Spend Receipt (<tt>MAY-T8-10</tt>). The profile uses a <strong>detached</strong>
COSE_Sign1 <xref target="RFC9052"/> whose payload is a CBOR map with private-use
labels:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Claim</th>
              <th align="left">CBOR type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-70401</td>
              <td align="left">receiptCose</td>
              <td align="left">bstr (exact issuer COSE_Sign1 bytes)</td>
            </tr>
            <tr>
              <td align="left">-70402</td>
              <td align="left">deliveredHash</td>
              <td align="left">bstr (optional; SHA-256 of the exact delivered bytes)</td>
            </tr>
          </tbody>
        </table>
        <t>The countersignature uses the header profile in <xref target="cose-profile"/>
and content type <tt>application/cedulon-countersign+cbor</tt>.</t>
        <t>This is a second Sign1 object, not RFC 9052 Countersignature0
(unprotected-header label 11). Countersignature0 would write into
the issuer object and change <tt>receiptHash</tt> after issue, breaking
the receipt chain. A detached Sign1 keeps the issuer bytes
stable, reuses <tt>kid</tt> and content-type, and is absent by simply
omitting the sibling object.</t>
        <t>Absence of a countersignature <bcp14>MUST NOT</bcp14> invalidate the issuer
receipt (<tt>MAY-T8-10</tt>). A countersignature travels beside the issuer
signature without being covered by it, so anyone holding an honest
receipt can append one of their own. Attribution is therefore the
gate: a countersignature that cannot be attributed to the pinned
payee key - the signature fails, <tt>kid</tt> or content type does not
match, label -70401 is not the issuer COSE bytes (<tt>MUST-T8-8</tt>), or
the signature is valid under some other key - <bcp14>MUST</bcp14> be rejected as
approval evidence. What is rejected is the countersignature, not
the receipt: the verdict on the untouched issuer receipt <bcp14>MUST NOT</bcp14>
change because an unattributable object was attached. An appendable
object the issuer signature does not cover must not be able to
manufacture a negative result. The identifiers <tt>countersign-bad</tt> (unverifiable) and
<tt>countersign-key-mismatch</tt> (verifiable under another key) name the
discarded object as warnings, and where the verifier pinned a payee
key and no attributable countersignature remains, the
<tt>countersign-missing</tt> warning still applies: a discarded forgery is
the absence of the payee's word, not a substitute for it.</t>
        <t>The optional <tt>deliveredHash</tt> claim binds delivery to the receipt
under the payee's key. A payee who countersigns <bcp14>MAY</bcp14> include the
SHA-256 of the exact bytes it delivered in the same signed payload
as the issuer receipt bytes. When an attributable countersignature
carries <tt>deliveredHash</tt> and the verifier also holds the Trade
Manifest, the two digests are compared as exact octets:
<tt>deliveredHash</tt> against <tt>acceptanceCriteriaHash</tt>. A mismatch is
<tt>delivery-mismatch</tt>, and it is a finding rather than a warning,
because both ends of the comparison are signed. A <tt>deliveredHash</tt>
carried by an unattributable countersignature is discarded with it.
A countersigner <bcp14>MUST</bcp14> refuse to sign a <tt>deliveredHash</tt> that is not 32
octets; a verifier that meets one anyway treats the countersignature
as carrying no <tt>deliveredHash</tt>, so the delivery question narrows as
it does when the claim is absent, and the signature verdict does not
move. A countersignature without the claim remains valid.</t>
        <t>A Dispute Evidence Bundle that includes a verified countersignature
has stronger evidence that the payee accepted those bytes; the
bundle is still not an award (<tt>MUST-T8-4</tt>).</t>
      </section>
    </section>
    <section anchor="cose-profile">
      <name>COSE Profile</name>
      <t>This profile uses deterministic CBOR <xref target="RFC8949"/> Section 4.2.1
(definite lengths, shortest integer form, map keys sorted in
<strong>bytewise lexicographic</strong> order of their encoded keys).
Implementations <bcp14>MUST</bcp14> encode only the types used by Cedulon claim maps:
null, bool, unsigned and negative integers, UTF-8 text, byte strings,
arrays, and maps (<tt>MUST-T4-1</tt>).</t>
      <t>A decoder <bcp14>MUST</bcp14> refuse a CBOR map that carries a duplicate encoded
key (<tt>MUST-T4-18</tt>).</t>
      <t>A decoder <bcp14>MUST</bcp14> also impose a bound on what it will attempt: on encoded
size, on nesting depth, and on the number of elements it will decode
from an audit input. It <bcp14>MUST</bcp14> refuse an input that exceeds a bound with
a named refusal rather than by exhausting memory or the stack, and it
<bcp14>SHOULD</bcp14> document the bounds it applies (<tt>MUST-T4-19</tt>). This document
fixes no numbers, because the right bounds depend on the deployment;
what it requires is that exceeding a bound is a named, reported
refusal rather than a crash.</t>
      <section anchor="receipt-labels">
        <name>Claim labels</name>
        <t>Registered CWT claims <xref target="RFC8392"/> are not required by this profile. Cedulon
uses CWT private-use integer labels less than -65536.</t>
        <t>Every claim the tables below annotate as <tt>hash</tt> carries a SHA-256
digest rendered as exactly 64 lowercase hexadecimal characters
(<tt>[0-9a-f]{64}</tt>). A signer <bcp14>MUST</bcp14> refuse to sign, and a validator <bcp14>MUST</bcp14>
reject, a value that does not match that grammar, naming the claim in
the refusal. A decoder that preserves unknown or foreign claims is a
separate layer and keeps them unchanged; the grammar binds what a
party signs and what a validator accepts, not what a decoder can
carry.</t>
        <t>Receipt labels (<tt>MUST-T4-3</tt>, <tt>MUST-T4-4</tt>, <tt>MUST-T4-7</tt>):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Claim</th>
              <th align="left">CBOR type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-70001</td>
              <td align="left">payer</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70002</td>
              <td align="left">payee</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70003</td>
              <td align="left">amount</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70004</td>
              <td align="left">currency</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70005</td>
              <td align="left">policyHash</td>
              <td align="left">tstr (hash)</td>
            </tr>
            <tr>
              <td align="left">-70006</td>
              <td align="left">manifestHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
            <tr>
              <td align="left">-70007</td>
              <td align="left">noManifest</td>
              <td align="left">bool</td>
            </tr>
            <tr>
              <td align="left">-70008</td>
              <td align="left">x402PaymentRef</td>
              <td align="left">tstr / null</td>
            </tr>
            <tr>
              <td align="left">-70009</td>
              <td align="left">timestampMs</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70010</td>
              <td align="left">nonce</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70011</td>
              <td align="left">prevReceiptHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
            <tr>
              <td align="left">-70012</td>
              <td align="left">outcome</td>
              <td align="left">tstr (<tt>settled</tt> / <tt>aborted</tt>)</td>
            </tr>
          </tbody>
        </table>
        <t>Checkpoint labels (<tt>MUST-T11-1</tt>):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Claim</th>
              <th align="left">CBOR type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-70101</td>
              <td align="left">epoch</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70102</td>
              <td align="left">startMs</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70103</td>
              <td align="left">endMs</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70104</td>
              <td align="left">receiptCount</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70105</td>
              <td align="left">chainHeadHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
            <tr>
              <td align="left">-70106</td>
              <td align="left">totals</td>
              <td align="left">map tstr -&gt; tstr / null</td>
            </tr>
            <tr>
              <td align="left">-70107</td>
              <td align="left">prevCheckpointHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
          </tbody>
        </table>
        <t>Manifest labels (<tt>MUST-T8-1</tt>):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Claim</th>
              <th align="left">CBOR type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-70201</td>
              <td align="left">description</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70202</td>
              <td align="left">amount</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70203</td>
              <td align="left">currency</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70204</td>
              <td align="left">acceptanceCriteriaHash</td>
              <td align="left">tstr (hash)</td>
            </tr>
            <tr>
              <td align="left">-70205</td>
              <td align="left">cancelCondition</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70206</td>
              <td align="left">expiresAtMs</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70207</td>
              <td align="left">ap2MandateHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
            <tr>
              <td align="left">-70208</td>
              <td align="left">payee</td>
              <td align="left">tstr (optional; encoded only when present)</td>
            </tr>
          </tbody>
        </table>
        <t>Decision Token labels (<tt>MUST-T6-4</tt>):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Claim</th>
              <th align="left">CBOR type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-70301</td>
              <td align="left">requestHash</td>
              <td align="left">tstr (hash)</td>
            </tr>
            <tr>
              <td align="left">-70302</td>
              <td align="left">policyHash</td>
              <td align="left">tstr (hash)</td>
            </tr>
            <tr>
              <td align="left">-70303</td>
              <td align="left">expiryMs</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70304</td>
              <td align="left">nonce</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70305</td>
              <td align="left">singleUseId</td>
              <td align="left">tstr</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="cosesign1-headers">
        <name>COSE_Sign1 headers</name>
        <t>The protected header <bcp14>MUST</bcp14> be a deterministic CBOR map containing
(<tt>MUST-T4-1</tt>, <tt>MUST-T4-8</tt>):</t>
        <ul spacing="normal">
          <li>
            <t><tt>1</tt> (alg) = <tt>-19</tt> (Ed25519, <xref target="RFC9864"/>; the generic EdDSA value
<tt>-8</tt> from <xref target="RFC9053"/> is deprecated for this profile)</t>
          </li>
          <li>
            <t><tt>3</tt> (content type) = a tstr that distinguishes the payload:
<tt>application/cedulon-receipt+cbor</tt>,
<tt>application/cedulon-checkpoint+cbor</tt>,
<tt>application/cedulon-manifest+cbor</tt>,
<tt>application/cedulon-decision+cbor</tt>,
<tt>application/cedulon-countersign+cbor</tt>, or
<tt>application/cedulon-inclusion+cbor</tt></t>
          </li>
          <li>
            <t><tt>4</tt> (kid) = bstr, mandatory. The profile computes <tt>kid</tt> as the
first eight bytes of SHA-256 over the issuer's SubjectPublicKeyInfo
DER, in the Ed25519 SubjectPublicKeyInfo encoding of <xref target="RFC8410"/>. A
verifier <bcp14>MUST</bcp14> obtain the public key from an authenticated
channel (preconfigured issuer set, directory, or transparency
statement) and <bcp14>MUST</bcp14> reject a message whose <tt>kid</tt> does not match
that key.</t>
          </li>
        </ul>
        <t>The unprotected header <bcp14>MUST</bcp14> be empty, and a decoder <bcp14>MUST</bcp14> refuse a
message whose unprotected header is not an empty map, by the name
<tt>cose-sign1-unprotected</tt>, rather than verify the signature and ignore
the header (<tt>MUST-T4-21</tt>): every digest in <xref target="hash-inputs"/> is
computed over octets that include the unprotected header, which the
signature does not cover. The payload <bcp14>MUST</bcp14> be
the CBOR encoding of the claim map. The signature is Ed25519
<xref target="RFC8032"/> over the COSE <tt>Sig_structure</tt>
          <tt>["Signature1", protected, h'', payload]</tt>.</t>
      </section>
      <section anchor="presentation">
        <name>How a signed object is presented</name>
        <t>The signed octets above are what this profile defines and what every
digest in <xref target="hash-inputs"/> is taken over. An object handed to a
verifier travels with more than that, and this section names what.</t>
        <t>A presented Spend Receipt, epoch checkpoint, Trade Manifest, or
Decision Token carries, beside the signed octets, its claim set or
body in decoded form and <strong>the signer's public key as a
SubjectPublicKeyInfo PEM</strong>; a countersigned receipt carries the
payee's key the same way, and an object presented in the JSON
encoding of <xref target="canonical-json"/> repeats its signature there as
base64. None of these is inside the signed octets, which is the
whole point of naming them here: the signature
covers the COSE message and nothing else, so every one of these
members is a surface anyone holding the object can rewrite. This is
the same shape the Rail Extract states in <xref target="rail-extract"/>, and it
is stated once here for the COSE objects rather than left to be
inferred from an implementation.</t>
        <t>A carried key is not an identity source and <bcp14>MUST NOT</bcp14> be used as one
(<tt>MUST-T4-11</tt>). Under a pin it has exactly one effect: an object
that verifies under the pinned key while carrying a different key is
reported as <tt>carried-key-mismatch</tt>, a warning, and stays attested
(<xref target="issuer-root"/>). With no pin held it is the only key present, so
any signature check that runs against it says the object is
internally consistent and says nothing about who signed it; two
issuers cannot be told apart in that state. A Trade Manifest with no
pinned key is not checked against its carried key at all (Appendix B,
<tt>unauthenticated-manifest</tt>).</t>
      </section>
    </section>
    <section anchor="canonical-json">
      <name>Canonical JSON encoding</name>
      <t>Not everything this document hashes or signs is CBOR. The policy
document, the six request fields bound by a Decision Token, and the
scoped body of a Rail Extract are JSON. Two implementations could
agree on every other requirement in this document and still produce
different bytes unless the encoding is named, which makes an
independent verifier impossible to write from the text. This section
names that encoding.</t>
      <t>Where this document says "the canonical encoding" of a JSON document,
it means the encoding defined by <xref target="RFC8785"/>, and the octets hashed or
signed are the UTF-8 octets of that encoding.</t>
      <t>Three notes on the boundary of that reference:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC8785"/> Section 3.1 takes I-JSON <xref target="RFC7493"/> as its input, and
an I-JSON object carries no duplicate member names. This document
makes that precondition a rule at every place a verifier receives a
JSON document as text - a rail extract body, a policy document, a
stored receipt file: a text in which any object, at any depth,
repeats a member name <bcp14>MUST</bcp14> be refused by the name
<tt>json-duplicate-key</tt>, before the text is parsed (<tt>MUST-T4-20</tt>). A
verifier handed an object rather than text, as a tool behind a
JSON-RPC boundary is, cannot apply the rule and <bcp14>MUST NOT</bcp14> report
that it did; whether the text was checked is then the transport's
to state.</t>
        </li>
        <li>
          <t><xref target="RFC8785"/> Section 3.2.2.2 requires a serializer to terminate on a
lone surrogate, and so does this document: a producer <bcp14>MUST</bcp14> refuse to
encode a document containing one, by name, and <bcp14>MUST NOT</bcp14> sign what it
could not encode. A verifier reading bytes it cannot canonicalize for
this reason reports the input as failing verification with the
refusal named beside the verdict; it does not crash. No field defined
by this document may contain a lone surrogate, so a conforming
document never reaches this rule.</t>
        </li>
        <li>
          <t><xref target="RFC8785"/> defines no encoding for an integer outside the IEEE 754
double range. No document defined here carries one: every amount and
cumulative limit is already a decimal string before it is encoded,
and every hash is lowercase hexadecimal. A document that would need
such an integer is outside this specification.</t>
        </li>
      </ul>
      <section anchor="hash-inputs">
        <name>Which octets are hashed</name>
        <t>Every hash-valued field in this document is SHA-256 <xref target="RFC6234"/> of the
input named below. All but two are rendered as lowercase hexadecimal, and a third
differs in another respect.
<tt>kid</tt> differs only in its rendering: the digest is computed over the
same stated input and then truncated to its first 8 bytes, carried as
a byte string rather than as hex (<xref target="cose-profile"/> states the same
rule where the header is defined). <tt>ap2MandateHash</tt> differs in whose
digest it is: AP2 defines the mandate and its octets, and this
document carries the result opaquely rather than restating a rule it
does not own. <tt>deliveredHash</tt> differs in its carrier: it is a claim in
a CBOR map and is carried as the raw 32 digest bytes (bstr), not as
hex; comparisons against <tt>acceptanceCriteriaHash</tt> are made over the
digest value.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Input to SHA-256</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>receiptHash</tt></td>
              <td align="left">the signed COSE_Sign1 octets of the receipt</td>
            </tr>
            <tr>
              <td align="left">
                <tt>manifestHash</tt></td>
              <td align="left">the signed COSE_Sign1 octets of the Trade Manifest</td>
            </tr>
            <tr>
              <td align="left">
                <tt>checkpointHash</tt></td>
              <td align="left">the signed COSE_Sign1 octets of the checkpoint</td>
            </tr>
            <tr>
              <td align="left">
                <tt>statementHash</tt></td>
              <td align="left">the signed COSE_Sign1 octets of the statement</td>
            </tr>
            <tr>
              <td align="left">
                <tt>acceptanceCriteriaHash</tt></td>
              <td align="left">the exact delivery bytes, as defined in <xref target="trade-manifest"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>deliveredHash</tt></td>
              <td align="left">the exact bytes the payee delivered, under the same input rule as <tt>acceptanceCriteriaHash</tt>, computed by the payee when it countersigns</td>
            </tr>
            <tr>
              <td align="left">
                <tt>policyHash</tt></td>
              <td align="left">the UTF-8 octets of the canonical policy document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>requestHash</tt></td>
              <td align="left">the UTF-8 octets of the canonical six-field request document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>kid</tt></td>
              <td align="left">the SubjectPublicKeyInfo DER; the digest is then truncated to its first 8 bytes</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ap2MandateHash</tt></td>
              <td align="left">the octets AP2 defines for its mandate; not profiled by this document</td>
            </tr>
          </tbody>
        </table>
        <t>Wherever this table, or any other sentence in this document, says "the
signed COSE_Sign1 octets", those are the octets of the <strong>untagged</strong>
four-element COSE_Sign1 array of <xref target="RFC9052"/>. This profile never wraps
a message in CBOR tag 18, and the vectors in Appendix A carry the
untagged form. A verifier that hashed a tagged copy would compute a
different digest for every object in this profile, so the choice is
stated here once rather than left to be inferred from the vectors.</t>
        <t>The six fields of the request document are the ones <tt>MUST-T6-1</tt> names:
amount, currency, payee, tool, nonce, and <tt>manifestHash</tt>.</t>
        <t>The request document is a JSON object carrying exactly
those six members and no others, every member always present. <tt>amount</tt>
is the decimal string of the request, in the amount syntax the receipt
claims table states, never a JSON number: <xref target="RFC8785"/> encodes the
number 1 and the string "1" differently, and an implementation free to
pick either would produce two digests for one request. <tt>currency</tt>,
<tt>payee</tt>, and <tt>nonce</tt> are the request's text strings. <tt>tool</tt> is the
request's text string, or JSON null where the deployment names none.
<tt>manifestHash</tt> is the lowercase hexadecimal string, or JSON null for a
spend bound to no manifest; an absent value is null, never an omitted
member. A document with a seventh member, a missing member, or another
type for one of these is not the request document this section
defines.</t>
        <t>The policy document is different on purpose, and the difference is
scope rather than an oversight. Its member set is the deployment's
own: this document defines how the bytes of whatever policy document a
PDP evaluates are encoded (<xref target="canonical-json"/>) and digested, not what
its members are. <tt>policyHash</tt> binds a spend to the exact bytes its PDP
evaluated; it is not a value two deployments are expected to compute
from a shared schema, and nothing in the verification algorithm
compares one deployment's <tt>policyHash</tt> to another's.</t>
      </section>
    </section>
    <section anchor="decision-token">
      <name>Decision Token</name>
      <t>A Decision Token is the portable encoding of a PDP allow. It is
COSE_Sign1 with the header profile in <xref target="cose-profile"/> and the
labels in <xref target="receipt-labels"/>. All five labels are always present
(<tt>MUST-T6-4</tt>).</t>
      <t><tt>requestHash</tt> <bcp14>MUST</bcp14> be the SHA-256 of the canonical encoding of the six
fields the PDP evaluated (<tt>MUST-T6-1</tt>), rendered as lowercase
hexadecimal; <xref target="canonical-json"/> defines that encoding and
<xref target="hash-inputs"/> states the octets.
<tt>policyHash</tt> <bcp14>MUST</bcp14> be the SHA-256 of the canonical
policy document the PDP evaluated. <tt>expiryMs</tt> is a Unix time in
milliseconds after which the token <bcp14>MUST</bcp14> be treated as expired
(<tt>SHOULD-T6-3</tt>): expired when the evaluation time is strictly greater
than <tt>expiryMs</tt>, not yet expired at exactly <tt>expiryMs</tt>, on the same
boundary discipline <tt>MUST-T3-3</tt> states for the manifest. <tt>nonce</tt> is the request nonce. <tt>singleUseId</tt> is
the identifier consumed on the first settlement attempt
(<tt>MUST-T6-2</tt>).</t>
      <t>A party that accepts a Decision Token <bcp14>MUST</bcp14> reject it if the
signature fails, if <tt>kid</tt> does not match a configured PDP key, if
the content type is not <tt>application/cedulon-decision+cbor</tt>, if
the decoded claim map does not match the presented claims, or if
<tt>expiryMs</tt> is in the past (<tt>MUST-T6-5</tt>).</t>
    </section>
    <section anchor="rail-extract">
      <name>Rail Extract Profile</name>
      <t>A verifier checks completeness against a <strong>rail extract</strong>, not against
the issuer's own receipts alone (<tt>MUST-T10-7</tt>).</t>
      <section anchor="record-schema">
        <name>Record schema</name>
        <t>The extract body is a JSON document. Each settlement record <bcp14>MUST</bcp14>
contain the following members, under these names:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Member</th>
              <th align="left">JSON type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ref</td>
              <td align="left">string (rail payment reference)</td>
            </tr>
            <tr>
              <td align="left">amount</td>
              <td align="left">string matching <tt>0|[1-9][0-9]*</tt></td>
            </tr>
            <tr>
              <td align="left">currency</td>
              <td align="left">string</td>
            </tr>
            <tr>
              <td align="left">timestampMs</td>
              <td align="left">number (POSIX milliseconds, an integer)</td>
            </tr>
          </tbody>
        </table>
        <t>These member names are normative. A rail <bcp14>MAY</bcp14> add members of its own
to a record; it <bcp14>MUST NOT</bcp14> rename the four above. The types above
are stated in JSON terms.</t>
        <t>A record <bcp14>MAY</bcp14> carry a <tt>beneficiary</tt> member (string). A rail that can
resolve a payment reference to the party credited declares it there;
when present, it is compared against the payee of the receipt that
names the same <tt>ref</tt>, and a difference is reported
(<tt>beneficiary-mismatch</tt>). Resolving a reference to a beneficiary is a
feature of the rail's own system: this profile does not assume it,
and measures it only when the rail declares it.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>An extract is scoped to one account identifier, one rail identifier,
and one half-open time window <tt>[windowStartMs, windowEndMs)</tt>. The
signed body is one JSON document with exactly this shape:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Member</th>
              <th align="left">JSON type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">accountId</td>
              <td align="left">string</td>
            </tr>
            <tr>
              <td align="left">railId</td>
              <td align="left">string</td>
            </tr>
            <tr>
              <td align="left">windowStartMs</td>
              <td align="left">number (POSIX milliseconds, an integer)</td>
            </tr>
            <tr>
              <td align="left">windowEndMs</td>
              <td align="left">number (POSIX milliseconds, an integer)</td>
            </tr>
            <tr>
              <td align="left">clockSkewMs</td>
              <td align="left">number (milliseconds, a non-negative integer; optional; see <xref target="reconciliation"/>)</td>
            </tr>
            <tr>
              <td align="left">settlements</td>
              <td align="left">array of settlement records (schema above)</td>
            </tr>
          </tbody>
        </table>
        <t>All six named members except <tt>clockSkewMs</tt> <bcp14>MUST</bcp14> be present; a body
missing one, or a record renaming a core member, <bcp14>MUST</bcp14> be refused by
name at both ends - by the signer before it signs and by the verifier
before it checks a signature - so a malformed extract is the same
refusal on both sides rather than a signature verdict. Additional
members beyond these are the rail's to add, as with records.</t>
        <t>The integer-valued members - <tt>windowStartMs</tt>, <tt>windowEndMs</tt>, each
record's <tt>timestampMs</tt>, and <tt>clockSkewMs</tt> - <bcp14>MUST</bcp14> be integers of
magnitude at most 2^53 - 1, the range a JSON number carries exactly,
and <tt>clockSkewMs</tt> <bcp14>MUST NOT</bcp14> be negative; a value outside those bounds,
or a non-integer, is refused by name in the same way as a missing
member. <tt>windowEndMs</tt> <bcp14>MUST</bcp14> be greater than <tt>windowStartMs</tt>: the window
is half-open, so one that does not end after it starts declares no
population, and a body carrying one is refused by name
(<tt>malformed-extract-window</tt>) in the same way, at both ends.</t>
        <t>The body is read as text before it is read as an object. A text in
which any object repeats a member name is refused as
<tt>json-duplicate-key</tt> at both ends, before parsing and before any
signature is checked (<tt>MUST-T4-20</tt>, <xref target="canonical-json"/>); a signer
that parsed first would sign one of the two values and an honest
verifier could check the other.</t>
        <t><tt>clockSkewMs</tt>, when present, declares the boundary allowance the
verifier applies at this window's edges during reconciliation
(<xref target="reconciliation"/>); when absent, the profile default of 300000
milliseconds (five minutes) applies.</t>
      </section>
      <section anchor="authentication">
        <name>Authentication</name>
        <t>The rail signs Ed25519 <xref target="RFC8032"/> over the canonical encoding of the
scoped body, which is a JSON document and therefore takes the encoding
of <xref target="canonical-json"/>: the signed octets are the UTF-8 octets of the
<xref target="RFC8785"/> encoding of the body above. The signature and the rail's
public key travel beside the body, the signature as base64 and the
key as a SubjectPublicKeyInfo PEM; neither is part of the signed
octets. A verifier <bcp14>MUST</bcp14>
obtain the extract from the rail or from a signature the rail
published (<tt>MUST-T10-7</tt>). A deployment that cannot do so is running
the reconciliation against evidence it did not obtain independently,
and <bcp14>MUST</bcp14> report the guarantee as conditional.</t>
        <t>A signature on an extract proves internal consistency, not origin: a
key generated by whoever produced the object verifies against itself.
The verifier therefore <bcp14>MUST</bcp14> obtain the rail's public key out of band
and <bcp14>MUST</bcp14> verify the extract signature against that key (<tt>MUST-T10-8</tt>).
A key the extract carries is not that key: it is neither the rail's
identity nor a fallback for one the verifier did not obtain. Where no
such key is held, the carried key is the only key present, so the
signature check that runs against it says the extract is internally
consistent and says nothing about who produced it, and the verifier
<bcp14>MUST</bcp14> treat the guarantee as conditional.</t>
        <t>Keys are compared as bytes. A verifier <bcp14>MUST</bcp14> compare the pinned key
and the key that signed the extract by their SubjectPublicKeyInfo
DER encoding, not by any text encoding of it, so that the same key
presented in a different envelope still compares equal
(<tt>MUST-T10-9</tt>). A pinned key the verifier cannot decode is a fault in
the verifier's own configuration, not evidence about the extract, and
<bcp14>MUST</bcp14> be reported as <tt>trust-key-unreadable</tt> rather than as a key
mismatch.</t>
        <t>What a verifier emits for an extract it cannot authenticate depends on
whether it stated an expectation. With no pinned key the verifier has
asserted nothing, so the condition is <tt>unauthenticated-extract</tt>
whatever the extract carries - a signature that verifies against the
carried key establishes internal consistency and not origin, and one
that fails or is refused is not a verdict about a key either. It is a
warning: completeness findings may still be computed, but the
guarantee is <strong>conditional</strong> on the extract being authentic. With a pinned key the verifier has
asserted what it requires, and an extract that fails to meet it is a
failure rather than a caveat; see the verification algorithm for which
finding applies.
See <xref target="security"/>.</t>
      </section>
      <section anchor="scope-agreement">
        <name>Scope agreement</name>
        <t>An extract declares a window and carries settlement records. The two
<bcp14>MUST</bcp14> agree: a verifier <bcp14>MUST</bcp14> report every settlement record whose
<tt>timestampMs</tt> falls outside <tt>[windowStartMs, windowEndMs)</tt> as
<tt>extract-scope-mismatch</tt>, identified by that record's <tt>ref</tt>
(<tt>MUST-T10-10</tt>). This check is about the extract's internal
consistency and <bcp14>MUST</bcp14> be performed whether or not a rail key is
pinned.</t>
        <t>A verifier that knows which account, rail, and window it is auditing
<bcp14>MUST</bcp14> also check the extract against that expectation and <bcp14>MUST</bcp14> fail
closed when the extract does not cover it (<tt>MUST-T10-11</tt>). An extract
for another account or rail, or one whose window does not span the
period under audit, cannot support a completeness claim about that
period.</t>
        <t>A verifier that has not stated the period under audit <bcp14>MUST</bcp14> emit <tt>unstated-audit-window</tt> and <bcp14>MUST</bcp14> treat the guarantee as
conditional (<tt>MUST-T10-15</tt>), whatever else verifies.</t>
        <t>Likewise, a verifier that has not stated the account or the rail under
audit <bcp14>MUST</bcp14> emit <tt>unstated-audit-scope</tt> and <bcp14>MUST</bcp14> treat the
guarantee as conditional (<tt>MUST-T10-18</tt>). Where no rail key is pinned
at all, all three axes are equally unstated and
<tt>unauthenticated-extract</tt> is the condition reported.</t>
        <t>A balanced audit under an unconditional guarantee is true of one
account, on one rail, over one window, so a report that carries it
<bcp14>MUST</bcp14> also carry that account, rail and window (<tt>MUST-T10-19</tt>). A
completeness claim about an account needs one such report per rail
that account can settle on; enumerating those rails is the
deployment's statement.</t>
      </section>
    </section>
    <section anchor="trust-roots">
      <name>Trust roots</name>
      <t><xref target="rail-extract"/> states the rule for one object: a signature proves
internal consistency, not origin, so the verifier obtains the rail key
out of band and checks the extract against it, and the key the extract
carries is neither the rail's identity nor a fallback for one the
verifier did not obtain (<tt>MUST-T10-8</tt>). The same discipline applies
to the issuer: a verifier obtains the public key from an
authenticated channel and rejects a <tt>kid</tt> that does not match that
key (<tt>MUST-T4-8</tt>). This section states the verification algorithm,
the separate root inputs, and the error semantics that name a missing
or mismatched pin, for every signed object in the profile.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Object</th>
            <th align="left">Key the verifier pins</th>
            <th align="left">Section</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Rail Extract</td>
            <td align="left">rail key</td>
            <td align="left">
              <xref target="rail-extract"/></td>
          </tr>
          <tr>
            <td align="left">Spend Receipt, epoch checkpoint</td>
            <td align="left">issuer key</td>
            <td align="left">
              <xref target="issuer-root"/></td>
          </tr>
          <tr>
            <td align="left">Payee countersignature</td>
            <td align="left">payee key</td>
            <td align="left">
              <xref target="payee-root"/></td>
          </tr>
          <tr>
            <td align="left">Decision Token</td>
            <td align="left">the deployment's own PDP signing key</td>
            <td align="left">
              <xref target="decision-root"/></td>
          </tr>
          <tr>
            <td align="left">Trade Manifest</td>
            <td align="left">publisher key</td>
            <td align="left">
              <xref target="manifest-root"/></td>
          </tr>
        </tbody>
      </table>
      <t>Without these roots, a verifier that checks a Spend Receipt against the
key the receipt carries accepts a receipt signed by any key at all, and
a forged receipt can make an unreceipted settlement look covered.</t>
      <section anchor="issuer-root">
        <name>The issuer root</name>
        <t>A verifier <bcp14>MUST</bcp14> obtain the issuer's public key out of band and <bcp14>MUST</bcp14>
verify Spend Receipt and epoch checkpoint signatures against that key.
A key the object carries is not that key: it establishes no signer
identity and is not a fallback for a pin the verifier does not hold
(<tt>MUST-T4-9</tt>, <tt>MUST-T4-11</tt>). Where no issuer key is held, a signature
checked against the key its own object carries establishes internal
consistency and nothing more, which is the state <xref target="presentation"/> and
the last row of the table below describe. A
verifier that holds no such key and is presented with any Spend
Receipt or epoch checkpoint <bcp14>MUST</bcp14> treat the completeness guarantee as
conditional and <bcp14>SHOULD</bcp14> report the condition; the identifier
<tt>unauthenticated-issuer</tt> is used for it in this document.</t>
        <t>An audit given no receipts and no checkpoints rests on the extract
alone and is not made conditional by this requirement.</t>
        <t>Reporting a mismatch is not sufficient on its own. A receipt that
does not answer to the pinned issuer key <bcp14>MUST NOT</bcp14> count as coverage
for the settlement it names, and the settlement <bcp14>MUST</bcp14> still be
reported as uncovered (<tt>MUST-T4-10</tt>).</t>
        <t>Keys are compared as bytes, by their SubjectPublicKeyInfo DER
encoding, on the same terms as <tt>MUST-T10-9</tt>. A pinned issuer key the
verifier cannot decode is a fault in its own configuration and <bcp14>MUST</bcp14>
be reported as <tt>trust-key-unreadable</tt> rather than as a mismatch
against the objects; where no pinned key can be decoded at all,
nothing is attested and the verifier <bcp14>MUST NOT</bcp14> fall back to accepting
the keys the objects carry (<tt>MUST-T4-11</tt>).</t>
        <t>Membership in the attested set follows one rule: the signature
verifies under a pinned issuer key. The <tt>kid</tt> header routes the check
to a candidate key; the key an object carries beside its signature is
not an identity source, because it travels outside the signed octets
and anyone can rewrite it. Two consequences are stated so that
implementations do not diverge on them. First, an honestly signed
object whose carried key was swapped stays attested: the swap is
reported (<tt>carried-key-mismatch</tt>, a warning) and <bcp14>MUST NOT</bcp14> move the
object out of the attested set or change the verdict, on the same
reasoning as <xref target="countersign"/> - a surface the signature does not cover
must not be able to manufacture a negative result. Second, an object
that claims the pin, by its carried key or its <tt>kid</tt>, but does not
verify under it is excluded from the attested set and <bcp14>MUST</bcp14> still be
walked and named - for a receipt, <tt>receipt-chain-break</tt> with a
signature-failed detail - never silently dropped; an object that
neither verifies under the pin nor claims it is
<tt>issuer-key-mismatch</tt>, excluded, and the settlement it names stays
uncovered.</t>
        <t>The rule, read out per cell (steps 6 and 8 are the verification
algorithm's):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claims the pin (carried key or kid)</th>
              <th align="left">Verifies under the pin</th>
              <th align="left">Result</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">yes</td>
              <td align="left">yes</td>
              <td align="left">attested; a carried key other than the verifying one is <tt>carried-key-mismatch</tt>, a warning, and does not move the receipt</td>
            </tr>
            <tr>
              <td align="left">yes</td>
              <td align="left">no</td>
              <td align="left">excluded from the attested set; still walked and named in step 6 (<tt>receipt-chain-break</tt>, signature-failed detail); its settlement stays uncovered in step 8. A checkpoint has no chain walk to be named in, so it is reported as <tt>issuer-key-mismatch</tt> on this row as well as the next, and the window it would have covered is reported uncovered</td>
            </tr>
            <tr>
              <td align="left">no</td>
              <td align="left">no</td>
              <td align="left">
                <tt>issuer-key-mismatch</tt>; excluded; its settlement stays uncovered in step 8 (<tt>MUST-T4-9</tt>, <tt>MUST-T4-10</tt>)</td>
            </tr>
            <tr>
              <td align="left">no pin held</td>
              <td align="left">no pin to verify under</td>
              <td align="left">no comparison against a key the verifier holds happens, and the keys the objects carry are not a fallback for one (<tt>MUST-T4-11</tt>); each signature is still checked against the key its own object carries (<xref target="presentation"/>), which establishes that the object is internally consistent and nothing about who signed it, so a broken signature is still named (<tt>receipt-chain-break</tt>, <tt>checkpoint-total-mismatch</tt>) while two different issuers cannot be told apart; receipts are presented-unattested, the verifier reports <tt>unauthenticated-issuer</tt>, and accusation-shaped findings take the two-branch severity of <tt>MUST-T8-9</tt></td>
            </tr>
          </tbody>
        </table>
        <t>A verifier <bcp14>MUST</bcp14> accept an issuer root that is a set of keys rather
than a single key (<tt>MUST-T4-12</tt>), so that a key rotation mid-window
does not force it off the pin. The same acceptance
applies to a publisher pin, a witness pin, and a rail pin: a
verifier <bcp14>MUST</bcp14> accept each of those roots as a set of keys, so a
rotation inside the window does not force it off the pin.</t>
      </section>
      <section anchor="payee-root">
        <name>The payee root</name>
        <t>The optional countersignature in <xref target="countersign"/> travels beside the
issuer signature without being covered by it. Anyone holding an
honest receipt can append a countersignature of their own, so a
verifier that checks it against the key carried next to it learns
only that some key signed something.</t>
        <t>A countersignature <bcp14>MUST NOT</bcp14> be treated as evidence that the payee
approved the payment unless it verifies against a payee key the
verifier obtained out of band (<tt>MUST-T4-13</tt>). Without such a key the
verifier <bcp14>SHOULD</bcp14> report the condition and <bcp14>MUST</bcp14> treat the guarantee as
conditional.</t>
        <t>Where a verifier has pinned a key for a payee, a
settled receipt naming that payee and carrying no <strong>attributable</strong>
countersignature <bcp14>MUST</bcp14> be reported (<tt>MUST-T4-14</tt>): a countersignature
that failed to verify, or verified under some other key, is discarded
under <xref target="countersign"/> and leaves the expectation open exactly as a
missing one does. The discarded object itself is a warning, never a failure of the
receipt it rode beside; <xref target="countersign"/> states the invariant.</t>
      </section>
      <section anchor="decision-root">
        <name>The decision root</name>
        <t>A Decision Token is issued by the policy decision point and consumed
by the same deployment. A consumer <bcp14>MUST</bcp14> verify a Decision Token against its own
issuing key and <bcp14>MUST NOT</bcp14> accept one it cannot check that way
(<tt>MUST-T6-6</tt>).</t>
      </section>
      <section anchor="manifest-root">
        <name>The manifest root</name>
        <t>A verifier that is presented with a Trade Manifest <bcp14>MUST</bcp14> obtain the
publisher's public key out of band and <bcp14>MUST</bcp14> verify the manifest
signature against that key, not against a key the manifest carries
(<tt>MUST-T4-15</tt>). A verifier without such a key that is presented with
a Trade Manifest <bcp14>MUST</bcp14> report the completeness guarantee as
conditional and <bcp14>SHOULD</bcp14> report the condition; the identifier
<tt>unauthenticated-manifest</tt> is used for it in this document.
An audit presented with no Trade Manifest is not made conditional by
this requirement.</t>
        <t>A pinned manifest key the verifier cannot decode is a fault in its
own configuration and <bcp14>MUST</bcp14> be reported as <tt>trust-key-unreadable</tt>
rather than as a mismatch, on the same terms as <tt>MUST-T4-11</tt>. A
manifest that does not verify against a readable pin <bcp14>MUST</bcp14> be
reported as <tt>manifest-key-mismatch</tt> and <bcp14>MUST</bcp14> fail the audit.</t>
        <t>A verifier presented with a Trade Manifest <bcp14>MUST</bcp14> compare
the manifest hash to the <tt>manifestHash</tt> of the receipts presented to
the audit and <bcp14>MUST</bcp14> report a manifest that no presented receipt
references (<tt>MUST-T4-17</tt>); the identifier <tt>manifest-covers-no-receipt</tt>
is used for it in this document, and the completeness guarantee
is conditional. The comparison runs against those presented receipts,
including aborted ones, and is made before any extract window is
applied and before any issuer key is applied; a hash on an aborted
receipt, on a receipt outside the extract window, or on a receipt no
pinned key attests still counts as a reference. This requirement asks
whether any receipt names the terms, not whether a settlement in the
window was made under them, and not whether the receipt that names them
is attributable, so a forged receipt can silence this warning; the
report it leaves behind is still conditional and still carries the
finding that the receipt answers to no pinned key. This requirement does
not reach the audit presented with no Trade Manifest, which remains a
deployment choice under <tt>MUST-T1-2</tt>.</t>
        <t>Naming a manifest is not obeying one. A verifier presented with
a Trade Manifest <bcp14>MUST</bcp14> compare the amount, the currency and the
settlement time of every receipt that names it against the
manifest's amount, currency and expiry, and <bcp14>MUST</bcp14> report a receipt that
departs from them (<tt>MUST-T8-9</tt>); the identifier
<tt>manifest-terms-mismatch</tt> is used for it in this document.
Every receipt that names the manifest is measured, aborted ones
included. The time
compared is the receipt's <tt>timestampMs</tt>, against the boundary
<tt>MUST-T3-3</tt> states: strictly after <tt>expiresAtMs</tt> departs, exactly at
it does not. Amount and currency are compared on the exact-octet
terms of <tt>MUST-T8-2</tt>.</t>
        <t>Where a usable issuer key is pinned, the comparison is made over the
receipts that verify under it and the audit fails. Where none is
pinned, the departure is still reported and the audit does not fail on
it alone. An issuer key is usable when the pinned issuer root holds at
least one key the verifier can decode. A pinned root none of whose
keys decode is already <tt>trust-key-unreadable</tt> and attests nothing, so
the comparison takes the unpinned branch while that finding stands;
the audit has failed on the configuration fault, and the departure is
still reported without becoming a charge no readable key backs. Only
receipts that name the manifest are measured against it. Under a
usable issuer pin, a departure is a finding rather than a condition on
the guarantee.</t>
        <t>A policy decision point presented with a Trade Manifest it cannot
attribute <bcp14>MUST</bcp14> refuse the payment rather than settle and record the
doubt (<tt>MUST-T4-16</tt>): a settled payment carrying the hash of terms
nobody authorised cannot be withdrawn by reporting it afterwards.</t>
      </section>
      <section anchor="what-the-roots-do-not-cover">
        <name>What the roots do not cover</name>
        <t>A verifier that supplies none of these roots is not making an error,
and this document does not require it to. It is making a weaker
statement, and the guarantee it reports must say so. With no issuer
key nothing distinguishes one submitted receipt from another, so
conditions computed across the submitted set - two receipts claiming
one settlement reference, for instance - cannot be attributed to
anyone and are reported as conditions of the submission rather than
as failures of a party; the finding stands, only its attribution
changes.</t>
      </section>
    </section>
    <section anchor="reconciliation">
      <name>Reconciliation</name>
      <t>Completeness is the property that, given an authenticated rail
extract, every settlement in the extract has a matching settled Spend
Receipt, every settled receipt has a matching settlement, receipt and
checkpoint hash chains verify, and checkpoint totals equal the sum of
<strong>settled</strong> receipts in the checkpoint window. If a spend occurred
without a receipt, the missing receipt is itself the evidence
(<tt>MUST-T10-2</tt>).</t>
      <t>The property is stated over a population, and the extract is what
declares it: one account, on one rail, over one window
(<xref target="rail-extract"/>). "Every settlement" means every settlement that
extract carried. A settlement path no presented extract covers is not
reconciled and not found missing - it is outside the population - so
the report names the account, rail and window it was computed over
(<tt>MUST-T10-19</tt>), and a verifier that stated none of them says so
instead (<tt>MUST-T10-18</tt>).</t>
      <t>A checkpoint published with its totals withheld (<xref target="CEDULON-CHECKPOINT"/>, Checkpoint claims) cannot
contribute the last of those to the property. It is not a violation of
completeness and it is not a demonstration of it either: the
comparison was not made, and a result that rests on a comparison
nobody made is conditional (<tt>MUST-T11-12</tt>).</t>
      <section anchor="verification">
        <name>Verification algorithm</name>
        <t>A verifier <bcp14>MUST</bcp14> perform all of these steps and <bcp14>MUST</bcp14> report every
finding they produce (<tt>MUST-T10-1</tt>). They are numbered
for reference, not to require an evaluation order: no step
short-circuits another, and an implementation may evaluate them in any
order that produces the same set of findings.</t>
        <t>Two data dependencies limit that freedom, because "any order" read
naively would break them. An order that runs a step before the step it
consumes does not produce the same set of findings and is not
permitted.</t>
        <t>The first is the index of refs: step 7 builds it, and steps 8 and 9
reconcile it.</t>
        <t>The second is the issuer pin. The step that resolves it decides the
<strong>working set</strong>: the attested set - the receipts and checkpoints that
verify under a usable pinned issuer key - or, when no usable key is
pinned, the whole presented set, whose members are
presented-unattested. Every later step that walks receipts consumes
the working set: the indexing and reconciliation in steps 7 through 9
and the <tt>MUST-T8-9</tt> comparison. The chain walk in step 6 consumes the
working set plus one addition named in <xref target="issuer-root"/>: a receipt that
claims the pin and fails to verify under it is walked so the break can
be named, and is attested nowhere. A receipt that neither claims the
pin nor verifies under it is reported once (issuer-key-mismatch) and
then excluded, which is what keeps the settlement it names visible as
uncovered (<tt>MUST-T4-10</tt>); an
implementation that let it back into any of those steps would let a
forged receipt cover a settlement, satisfy a checkpoint count, or
invent a terms charge. Two checks deliberately stay on the presented
set whatever any key says, and <bcp14>MUST NOT</bcp14> acquire the dependency:
<tt>MUST-T4-17</tt>, which asks whether a manifest was named at all, and the
per-receipt defect checks that ask what a receipt says about itself.</t>
        <t>Checkpoint and witness verification consumes that working set
and is specified in <xref target="CEDULON-CHECKPOINT"/> (Verification algorithm),
which an implementation of this audit also implements: a receipt that
falls in no presented checkpoint window, including every receipt when
no checkpoint is presented, fails that document's window-coverage
check.</t>
        <t>When a step names an identifier in backticks, that identifier
<bcp14>SHOULD</bcp14> be used for the condition in diagnostic output. The
normative requirement is the behaviour: report the condition,
identified by the <tt>ref</tt> or other handle given in the step. The
identifiers are not an interoperability surface.</t>
        <ol spacing="normal" type="1"><li>
            <t>Establish the subject of the audit. When an extract is supplied,
the settlement records it carries are the ones reconciled; a
settlement list from any other source <bcp14>MUST NOT</bcp14> be substituted for
them (<tt>MUST-T10-12</tt>). If the caller supplies both and they differ,
the verifier <bcp14>MUST</bcp14> report that the caller-supplied list disagrees
with the extract, and <bcp14>MUST</bcp14> still reconcile the extract. The
identifier <tt>extract-settlement-mismatch</tt> <bcp14>SHOULD</bcp14> be used for this
condition in diagnostic output.</t>
          </li>
          <li>
            <t>Verify the extract signature against the out-of-band rail key
(<tt>MUST-T10-8</tt>, <tt>MUST-T10-9</tt>). If no key is pinned, the check that
runs is against the key the extract carries, which establishes
internal consistency and not origin; the verifier <bcp14>MUST</bcp14> still
compute it, <bcp14>MUST NOT</bcp14> read it as a statement about who produced the
extract, and <bcp14>MUST</bcp14> treat the completeness guarantee as conditional
(<tt>MUST-T10-7</tt>). The identifier <tt>unauthenticated-extract</tt> <bcp14>SHOULD</bcp14>
be used for this condition in diagnostic output, whatever the
extract carries. If a key is
pinned and cannot be decoded, the verifier <bcp14>MUST</bcp14> report that the
pinned key is unreadable. The identifier <tt>trust-key-unreadable</tt>
              <bcp14>SHOULD</bcp14> be used for this condition. If a key is pinned and the
signature does not verify against it, or verifies against a
different key, the verifier <bcp14>MUST</bcp14> report that the extract is not
signed by the pinned key. The identifier <tt>extract-key-mismatch</tt>
              <bcp14>SHOULD</bcp14> be used for this condition. The rows of an extract the pin
refused are not reconciled against the receipts, and no settlement
finding is read out of that document (<tt>MUST-T10-20</tt>); the
identifier <tt>settlement-comparison-skipped</tt> <bcp14>SHOULD</bcp14> be used to say
that the comparison did not run. A finding that puts the
extract itself in doubt <bcp14>MUST</bcp14> prevent an unconditional guarantee.</t>
          </li>
          <li>
            <t>Check scope. The verifier <bcp14>MUST</bcp14> report each settlement record
whose <tt>timestampMs</tt> falls outside the declared window, identified
by that record's <tt>ref</tt> (<tt>MUST-T10-10</tt>). When the verifier states
an expected account, rail, or window, it <bcp14>MUST</bcp14> report an extract
that does not cover it (<tt>MUST-T10-11</tt>). The identifier
<tt>extract-scope-mismatch</tt> <bcp14>SHOULD</bcp14> be used for both conditions. If
the verifier stated no period, it <bcp14>MUST</bcp14> treat the guarantee as
conditional (<tt>MUST-T10-15</tt>). The identifier
<tt>unstated-audit-window</tt> <bcp14>SHOULD</bcp14> be used for this condition. If it
stated no account or no rail, it <bcp14>MUST</bcp14> treat the guarantee as
conditional for the same reason (<tt>MUST-T10-18</tt>); the identifier
<tt>unstated-audit-scope</tt> <bcp14>SHOULD</bcp14> be used. Whatever the verdict, the
report <bcp14>MUST</bcp14> name the account, rail and window the extract declared,
in every structure it returns for the audit (<tt>MUST-T10-19</tt>).</t>
          </li>
          <li>
            <t>Resolve each Spend Receipt against the issuer root
(<xref target="issuer-root"/>) in one pass. Decode the COSE_Sign1; a content
type that is not the receipt type, a decoder bound, or a decoded
claim map that does not match the presented claims is a named
refusal, not a signature verdict (<tt>MUST-T4-2</tt>, <tt>MUST-T4-8</tt>). Then
ask one question: does the signature verify under a pinned issuer
key. <tt>kid</tt> routes the check to a candidate key and carries no
authority of its own; the carried key is not consulted for
membership at all. The resolution table in <xref target="issuer-root"/> reads
the answer out per cell. Every cell there is a named condition
plus a membership decision; no cell is a silent removal.
Where a countersignature is present,
<xref target="payee-root"/> governs what it establishes (<tt>MUST-T4-13</tt>,
<tt>MUST-T4-14</tt>). Where a Trade Manifest is presented, <xref target="manifest-root"/>
governs it (<tt>MUST-T4-15</tt>): with no publisher key pinned the verifier
reports <tt>unauthenticated-manifest</tt> and the guarantee is conditional;
with a pin that cannot be read, <tt>trust-key-unreadable</tt>; with a pin
the manifest does not answer to, <tt>manifest-key-mismatch</tt>; and with
a manifest that no presented receipt references,
<tt>manifest-covers-no-receipt</tt> (<tt>MUST-T4-17</tt>). A receipt that names
the manifest but departs from its amount, currency, expiry or,
where the manifest names one, payee is
reported as <tt>manifest-terms-mismatch</tt>; with a usable issuer key
pinned the comparison runs over the attested receipts and the
departure fails the audit, and with no usable issuer key it is a
warning over the presented receipts and does not by itself fail
the audit (<tt>MUST-T8-9</tt>). An audit
presented with no Trade Manifest is not made conditional by this
step.</t>
          </li>
          <li>
            <t>Scope the receipts. Membership follows the ref binding first: a
receipt whose <tt>ref</tt> appears on the extract is reconciled against
this extract even when its own <tt>timestampMs</tt> falls outside the
declared window - the rail has signed that the settlement belongs
to the window, and the receipt follows its settlement. The
<tt>timestampMs</tt> sieve applies only to receipts the extract does not
name: such a receipt outside the window is not a completeness
failure against this extract (<tt>MUST-T10-16</tt>); auditing a longer
period requires extracts that cover it. At the window's edges the
declared allowance applies (<xref target="rail-extract"/>): an unmatched
settled receipt within <tt>clockSkewMs</tt> of <tt>windowEndMs</tt>, and an
unmatched settlement record within <tt>clockSkewMs</tt> of
<tt>windowStartMs</tt>, are reported as <tt>boundary-deferred</tt>, a warning,
rather than as step 8's completeness findings - two honest clocks
can disagree by less than the allowance, and both verifiers of an
honest edge payment would otherwise reach the same false
accusation (<tt>MUST-T10-17</tt>). Where the following window's extract
is presented and verifies, a deferred receipt whose <tt>ref</tt> appears
on it is resolved and not reported, and one whose <tt>ref</tt> does not
appear hardens into the step 8 finding; a deferred settlement
record near the opening edge resolves through this step's ref
binding, since the prior window's receipt that names its <tt>ref</tt> is
reconciled here regardless of timestamp. The following window's
extract closes or hardens closing-edge deferrals only; an
opening-edge record stays deferred until a receipt in the
presented bag names its <tt>ref</tt>, whether or not a following extract
is presented. In a single-window audit
a deferred record keeps the guarantee conditional. Receipts remain
subject to every other check regardless of window.</t>
          </li>
          <li>
            <t>Walk the receipts of the working set, together with any receipt that
claims the pin and failed to verify under it (<xref target="issuer-root"/>), in
issuer order. Issuer order is the
order induced by the <tt>prevReceiptHash</tt> chain: the verifier
rebuilds the chain from the links, and the order in which
receipts were presented carries no weight. <tt>timestampMs</tt> is
issuer-asserted and is not an ordering source. The first
<tt>prevReceiptHash</tt> <bcp14>MUST</bcp14> be null. Each later <tt>prevReceiptHash</tt> <bcp14>MUST</bcp14>
equal <tt>receiptHash</tt> of the previous receipt. A miss, and a
receipt the links cannot place, <bcp14>MUST</bcp14> be reported as a break in
the receipt chain. The identifier <tt>receipt-chain-break</tt> <bcp14>SHOULD</bcp14> be
used for this condition.
An issuer stream that does not chain its receipts (<tt>SHOULD-T4-5</tt>) is
therefore reported as a break from its second receipt on: the <bcp14>SHOULD</bcp14>
states what an issuer owes, and this step states what a verifier does
with a stream that did not.</t>
          </li>
          <li>
            <t>Index the settled receipts of the working set and the extract records by <tt>ref</tt>. A <tt>ref</tt>
that appears more than once on either side <bcp14>MUST</bcp14> be reported as a
repeated reference (<tt>MUST-T10-6</tt>). The identifier <tt>duplicate-ref</tt>
              <bcp14>SHOULD</bcp14> be used for this condition.</t>
          </li>
          <li>
            <t>For each <tt>ref</tt> that appears exactly once on each side, require a
one-to-one match on <tt>ref</tt> AND <tt>amount</tt> AND <tt>currency</tt>
(<tt>MUST-T10-1</tt>), compared as exact octets on the terms of
<tt>MUST-T8-2</tt>; step 9's aggregation is the only place this algorithm
reads an amount as a number. Amount or currency mismatch <bcp14>MUST</bcp14> be reported as
a settlement that does not match its receipt, identified by that
<tt>ref</tt>. The identifier <tt>settlement-mismatch</tt> <bcp14>SHOULD</bcp14> be used for
this condition. A settlement with no receipt <bcp14>MUST</bcp14> be reported as
lacking a receipt, identified by its <tt>ref</tt> (<tt>MUST-T10-2</tt>). The
identifier <tt>settlement-without-receipt</tt> <bcp14>SHOULD</bcp14> be used for this
condition. A settled receipt with no extract row <bcp14>MUST</bcp14> be reported
as a completeness failure (<tt>MUST-T10-3</tt>). The identifier
<tt>receipt-without-settlement</tt> <bcp14>SHOULD</bcp14> be used for this condition.
A settled receipt with a null rail ref <bcp14>MUST</bcp14> be reported as
settled without a rail reference; this check asks what a receipt
says about itself and runs over the presented receipts, attested
or not. The identifier
<tt>settled-without-ref</tt> <bcp14>SHOULD</bcp14> be used for this condition.
Where a settlement record declares a <tt>beneficiary</tt>
(<xref target="rail-extract"/>), it <bcp14>MUST</bcp14> be compared against the matched
receipt's <tt>payee</tt> as exact octets; a difference is
<tt>beneficiary-mismatch</tt> and fails the audit. Where neither the
manifest names a <tt>payee</tt> nor any settlement record declares a
<tt>beneficiary</tt>, the report <bcp14>MUST</bcp14> carry <tt>counterparty-unbound</tt>, a
scope record: ref, amount and currency closed against the payer's
account extract, and the counterparty's identity was not bound.
It is a statement of what the evidence did not cover, not a
doubt about what it did, so it does not move the verdict and does
not by itself make the guarantee conditional.</t>
          </li>
          <li>
            <t>A <tt>ref</tt> already reported as repeating <bcp14>MUST</bcp14> still be reconciled
by amount rather than dropped from the comparison
(<tt>MUST-T10-13</tt>). For each currency under that <tt>ref</tt>, compare the
total settled against the total receipted. A settled total that
exceeds the receipted total <bcp14>MUST</bcp14> be reported as a settlement
lacking a receipt, and the finding <bcp14>MUST</bcp14> state the unaccounted
amount. The identifier <tt>settlement-without-receipt</tt> <bcp14>SHOULD</bcp14> be
used for this condition. A settled total that is less than the
receipted total <bcp14>MUST</bcp14> be reported as a settlement that does not
match its receipt, identified by that <tt>ref</tt>. The identifier
<tt>settlement-mismatch</tt> <bcp14>SHOULD</bcp14> be used for this condition. An
amount on that repeating <tt>ref</tt> that cannot be parsed as an
integer <bcp14>MUST</bcp14> be reported without abandoning the audit; the
identifier <tt>malformed-amount</tt> <bcp14>SHOULD</bcp14> be used for this condition.
A verifier <bcp14>MUST</bcp14> still report findings for the remaining records.</t>
          </li>
          <li>
            <t>Aborted receipts are not matched to extract rows and are not
added to totals.</t>
          </li>
          <li>
            <t>If any finding remains that is not a warning (a warning is a
condition that only makes the completeness guarantee
conditional), the audit <bcp14>MUST</bcp14> fail (<tt>MUST-T10-4</tt>).</t>
          </li>
        </ol>
      </section>
      <section anchor="finding-codes">
        <name>Finding codes</name>
        <t>The identifiers are listed in Appendix B. They are for
diagnostic output. They are not an
interoperability surface. A finding object that can be carried on
the wire is outside the scope of this document and may be defined
later. Two implementations interoperate when they accept the same
inputs and fail or warn on the same conditions, not when they
print the same strings.</t>
        <t>A condition that makes the audit fail is a finding. A condition
that only makes the completeness guarantee conditional is a
warning. Warnings <bcp14>MUST</bcp14> still appear in operator-facing output
(<tt>MUST-T10-14</tt>).</t>
        <t>A finding that puts the extract itself in doubt (<tt>extract-key-mismatch</tt>,
<tt>trust-key-unreadable</tt>, <tt>extract-scope-mismatch</tt>, or
<tt>extract-settlement-mismatch</tt>) <bcp14>MUST</bcp14> also prevent an unconditional
guarantee, not merely fail the audit. A finding that puts a presented
Trade Manifest in doubt (<tt>manifest-key-mismatch</tt>, or
<tt>trust-key-unreadable</tt> on the manifest pin) does the same.</t>
        <t>An unconditional guarantee therefore requires all of: an extract, a
pinned rail key the extract's signature verifies against, a stated
period the extract covers, an issuer root for whatever receipts and
checkpoints are presented, a manifest root for whatever Trade Manifest
is presented, no finding that puts the extract in
doubt, and no warning that withholds part of the comparison. A
checkpoint whose totals were signed as withheld
(<tt>checkpoint-totals-redacted</tt>) removes a comparison the guarantee
rests on, and a presented checkpoint a supplied witness does not
hold (<tt>checkpoint-not-anchored</tt>) leaves part of the chain
unwitnessed. Either one makes the result conditional. Anything less
than the whole list is conditional, and the report <bcp14>MUST</bcp14> say so.</t>
        <t>An implementation <bcp14>MUST</bcp14> make the guarantee and any warnings visible in
whatever human-readable audit report it produces under this document,
not only in a returned structure (<tt>MUST-T10-14</tt>). A report that says the books balance while withholding
that the balance is conditional invites the reader to take a
conditional result for an unconditional one.</t>
        <t>Checkpoints <bcp14>SHOULD</bcp14> be registered with a Transparency Service
(<tt>SHOULD-T11-5</tt>). A test deployment <bcp14>MAY</bcp14> use an in-process
append-only log as the witness (<tt>MAY-T11-6</tt>). Cedulon still <bcp14>MUST
NOT</bcp14> take custody.</t>
        <t>The guarantee named above is about completeness against the extract,
which is the subject of T10. It is not a claim that no checkpoint was
suppressed. Suppression is the subject of T11, and a report <bcp14>MUST NOT</bcp14>
be read as settling it when no witness was consulted: with no
witness receipts, the presented chain is self-consistent by
construction and says nothing about what it left out (<tt>MUST-T11-9</tt>).
A verifier that consulted a witness and found every presented
checkpoint recorded, with nothing recorded that was not presented,
has discharged T11 for the period those receipts cover, and for no
longer.</t>
      </section>
    </section>
    <section anchor="policy-semantics">
      <name>Policy Semantics</name>
      <t>Policy is default deny. The engine understands three families of
rule:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Limit:</strong> maximum amount per payment; maximum cumulative amount
per window (<tt>MUST-T2-2</tt>).</t>
        </li>
        <li>
          <t><strong>Velocity:</strong> maximum number of allowed payments per window
(<tt>MUST-T2-1</tt>).</t>
        </li>
        <li>
          <t><strong>Scope:</strong> optional allow-lists for payee, currency, and tool
name.</t>
        </li>
      </ul>
      <t>Fail-closed: missing engine, crash, or exception yields deny
(<tt>MUST-T2-3</tt>). Implementations <bcp14>SHOULD</bcp14> emit stable reason codes
(<tt>SHOULD-T2-5</tt>). Decision tokens <bcp14>SHOULD</bcp14> expire after a short
time-to-live (TTL) (<tt>SHOULD-T6-3</tt>).</t>
      <t>The agent-facing spend interface <bcp14>MUST</bcp14> invoke the PDP and <bcp14>MUST NOT</bcp14>
expose a parallel ungated rail call to the model (<tt>MUST-T5-1</tt>).</t>
      <t>One boundary is stated here rather than left to be inferred. In the
retrospective audit, "allowed by policy" is the Receipt Issuer's
signed assertion: the spend passed the issuer's gate under the
<tt>policyHash</tt> the receipt names. The Decision Token is consumed at the
gate, and the verification algorithm never sees it; the audit does
not independently re-verify the PDP's allow. The completeness side of
the audit has an independent leg - the rail extract - and the policy
side deliberately does not: that is a trust boundary of this profile,
not an oversight. A deployment that wants the policy answer to be
independently verifiable needs a receipt-to-token binding, which this
document does not define; adding it would change what a receipt
carries.</t>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>A public transparency encoding <bcp14>MUST</bcp14> support omitting or hashing
payer and payee identifiers and <bcp14>MUST</bcp14> support amount redaction or
bucket encoding (<tt>MUST-T9-1</tt>). Implementations <bcp14>MUST NOT</bcp14> write
government-ID numbers, the Primary Account Number (PAN) of a payment
instrument, or street address
into a public statement (<tt>MUST-T9-2</tt>). Default public anchors
<bcp14>SHOULD</bcp14> publish <tt>policyHash</tt>, <tt>manifestHash</tt>, <tt>receiptHash</tt>, and
<tt>timestampMs</tt> rather than full claims (<tt>SHOULD-T9-3</tt>). A private
auditor <bcp14>MAY</bcp14> receive an unredacted receipt out of band
(<tt>MAY-T9-4</tt>).</t>
      <t>The paragraph above counts receipt fields. A checkpoint publishes
something a receipt does not: a per-currency total for a whole
window, which discloses trading volume even when every individual
receipt is redacted (<tt>MUST-T9-5</tt>).</t>
      <t>The rule is the one <xref target="CEDULON-CHECKPOINT"/> defines and
<xref target="reconciliation"/> applies: <tt>totals</tt> <bcp14>MAY</bcp14> be
withheld by signing it as null (<tt>MUST-T11-12</tt>), and only that form
counts as a redaction (<tt>MUST-T11-13</tt>). The structural claims are not
redactable, because a verifier that cannot read the window or the
chain head cannot check anything at all, and a checkpoint that hid
them would be indistinguishable from a broken one.</t>
      <t>When totals are withheld, a verifier that cannot recompute them says
so, and the completeness guarantee for that window is conditional. A deployment that wants an unconditional result
publishes the totals; a deployment that wants the volume private
accepts a conditional one. What a deployment <bcp14>MUST NOT</bcp14> do is obtain
the unconditional result while withholding the evidence for it.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This section is authoritative for the protocol requirements in this
document. The threat narratives in <xref target="CEDULON-THREATS"/> are informative
and do not override it.</t>
      <t>Requirement identifiers take the form KEYWORD-Tn-k, where KEYWORD
is <bcp14>MUST</bcp14>, <bcp14>SHOULD</bcp14>, or <bcp14>MAY</bcp14>, n is the threat number in this section,
and k is a sequence number within that threat. <bcp14>MUST</bcp14>-T8-custody is
the custody prohibition under T8. The tables below define the
requirement text those citations refer to.</t>
      <section anchor="t1-prompt-injection-leads-to-unauthorized-spend">
        <name>T1: Prompt injection leads to unauthorized spend</name>
        <t>An attacker plants instructions in tool output, a web page, or a retrieved
document. The agent then calls a spend tool outside the principal's intent.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T1-1</td>
              <td align="left">The PDP <bcp14>MUST</bcp14> decide from structured request fields and stored policy, not from model-generated prose.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T1-2</td>
              <td align="left">A spend that is not bound to a verified Trade Manifest <bcp14>MUST</bcp14> be marked <tt>noManifest</tt> on the Spend Receipt and <bcp14>MUST</bcp14> still be subject to limit, velocity, and scope policy.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T1-3</td>
              <td align="left">Hosts <bcp14>SHOULD</bcp14> require a human confirmation channel for first-use payees.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T1-4</td>
              <td align="left">An implementation <bcp14>MAY</bcp14> refuse all <tt>noManifest</tt> spend.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t2-runaway-agent-loop-spend">
        <name>T2: Runaway agent (loop spend)</name>
        <t>A stuck tool loop or recursive planner issues many payments.
Velocity and cumulative-limit counters live in the PDP, fail-closed.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T2-1</td>
              <td align="left">Policy <bcp14>MUST</bcp14> express a maximum payment count per configured time window (velocity).</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T2-2</td>
              <td align="left">Policy <bcp14>MUST</bcp14> express a maximum amount per payment and a maximum cumulative amount per window.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T2-3</td>
              <td align="left">If the PDP is unreachable, uninitialized, or throws during evaluation, the spend <bcp14>MUST</bcp14> be denied (fail-closed, default deny).</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T2-4</td>
              <td align="left">A denied attempt <bcp14>MUST NOT</bcp14> increment the allowed-spend counters as if it had succeeded.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T2-5</td>
              <td align="left">Implementations <bcp14>SHOULD</bcp14> emit a stable reason code for velocity and limit denials.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t3-replay-of-payment-authority">
        <name>T3: Replay of payment authority</name>
        <t>An observer replays a signed payment payload, mandate, or Cedulon decision token.
Every gated spend carries a unique nonce; manifests expire; tokens are single-use.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T3-1</td>
              <td align="left">Every spend attempt that the PDP allows <bcp14>MUST</bcp14> include a nonce that the implementation has not accepted before.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T3-2</td>
              <td align="left">A second attempt that reuses a nonce <bcp14>MUST</bcp14> be denied.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T3-3</td>
              <td align="left">A Trade Manifest <bcp14>MUST</bcp14> carry an expiry; a spend against an expired manifest <bcp14>MUST</bcp14> be denied. The manifest is expired when the settlement time is strictly greater than <tt>expiresAtMs</tt>; a settlement at exactly <tt>expiresAtMs</tt> is within the manifest.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T3-4</td>
              <td align="left">A PDP allow decision <bcp14>MUST</bcp14> be bound to the SHA-256 of the canonical encoding of the request fields it evaluated, as stated in <xref target="hash-inputs"/>, and <bcp14>MUST</bcp14> be single-use.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T3-5</td>
              <td align="left">Nonce stores <bcp14>SHOULD</bcp14> persist across process restart when the deployment is not a test fixture.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t4-receipt-forgery-or-repudiation">
        <name>T4: Receipt forgery or repudiation</name>
        <t>A party alters a receipt, invents a receipt, or denies a real spend.
Receipts are signed; verification covers the signed bytes; a hash chain links them.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-1</td>
              <td align="left">A Spend Receipt <bcp14>MUST</bcp14> be signed by the Receipt Issuer over the deterministic CBOR encoding of its claims, as profiled in <xref target="cose-profile"/>. The phrase "canonical encoding" is reserved for JSON documents (<xref target="canonical-json"/>).</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-2</td>
              <td align="left">Verifiers <bcp14>MUST</bcp14> reject a receipt whose signature does not validate or whose canonical bytes do not match the signed payload.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-3</td>
              <td align="left">A Spend Receipt <bcp14>MUST</bcp14> include <tt>payer</tt>, <tt>payee</tt>, <tt>amount</tt>, <tt>currency</tt>, <tt>policyHash</tt>, <tt>timestampMs</tt>, and <tt>nonce</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-4</td>
              <td align="left">A Spend Receipt <bcp14>MUST</bcp14> include <tt>manifestHash</tt> or an explicit <tt>noManifest</tt> flag, never an ambiguous empty hash. Empty optional values are CBOR null; labels are never absent.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T4-5</td>
              <td align="left">Receipts <bcp14>SHOULD</bcp14> form a hash chain (<tt>prevReceiptHash</tt>) so omission is detectable within one issuer stream.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T4-6</td>
              <td align="left">Parties <bcp14>MAY</bcp14> register the signed receipt as a SCITT statement to obtain a COSE receipt.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-7</td>
              <td align="left">A Spend Receipt <bcp14>MUST</bcp14> include <tt>outcome</tt> (<tt>settled</tt> or <tt>aborted</tt>). A settled receipt <bcp14>MUST</bcp14> have a non-null rail ref. Aborted receipts <bcp14>MUST NOT</bcp14> enter checkpoint totals.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-8</td>
              <td align="left">COSE_Sign1 protected headers <bcp14>MUST</bcp14> use alg -19 (Ed25519), a mandatory <tt>kid</tt>, and a payload-specific content type. Verifiers <bcp14>MUST</bcp14> reject a <tt>kid</tt> that does not match the configured issuer key.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-9</td>
              <td align="left">A verifier <bcp14>MUST</bcp14> obtain the issuer public key out of band and <bcp14>MUST</bcp14> verify Spend Receipt and epoch checkpoint signatures against that key. A key carried by the object <bcp14>MUST NOT</bcp14> be treated as the signer's identity and <bcp14>MUST NOT</bcp14> be used as a fallback where no key was obtained (<tt>MUST-T4-11</tt>). A verifier without such a key that is presented with any Spend Receipt or epoch checkpoint <bcp14>MUST</bcp14> report the completeness guarantee as conditional. An audit presented with neither rests on the extract alone and is not made conditional by this requirement.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-10</td>
              <td align="left">A receipt that does not verify against the pinned issuer key <bcp14>MUST NOT</bcp14> count as coverage for the settlement it names, and that settlement <bcp14>MUST</bcp14> still be reported as uncovered. Reporting the mismatch is not sufficient on its own.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-11</td>
              <td align="left">Pinned issuer keys <bcp14>MUST</bcp14> be compared by SubjectPublicKeyInfo DER encoding. A pinned key that cannot be decoded <bcp14>MUST</bcp14> be reported as a verifier configuration fault rather than as a mismatch, and where no pinned key decodes, the verifier <bcp14>MUST NOT</bcp14> fall back to the keys the objects carry.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-12</td>
              <td align="left">A verifier <bcp14>MUST</bcp14> accept an issuer, publisher, witness, or rail root comprising more than one key, so that a key rotation inside the audited window does not require it to abandon pinning.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-13</td>
              <td align="left">A payee countersignature <bcp14>MUST NOT</bcp14> be treated as evidence of payee approval unless it verifies against a payee key the verifier obtained out of band.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-14</td>
              <td align="left">Where a verifier has pinned a key for a payee, a settled receipt naming that payee and carrying no attributable countersignature <bcp14>MUST</bcp14> be reported.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-15</td>
              <td align="left">A verifier that is presented with a Trade Manifest <bcp14>MUST</bcp14> obtain the publisher public key out of band and <bcp14>MUST</bcp14> verify the manifest signature against that key, not against a key the manifest carries. A pin that cannot be read <bcp14>MUST</bcp14> be reported as <tt>trust-key-unreadable</tt>; a readable pin the manifest does not answer to <bcp14>MUST</bcp14> be reported as <tt>manifest-key-mismatch</tt> and <bcp14>MUST</bcp14> fail the audit. A verifier without such a key that is presented with a Trade Manifest <bcp14>MUST</bcp14> report the completeness guarantee as conditional. An audit presented with no Trade Manifest is not made conditional by this requirement.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-16</td>
              <td align="left">A policy decision point presented with a Trade Manifest it cannot verify against a key supplied out of band <bcp14>MUST</bcp14> refuse the payment.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-17</td>
              <td align="left">A verifier presented with a Trade Manifest <bcp14>MUST</bcp14> compare the manifest hash against the <tt>manifestHash</tt> of the receipts presented to the audit, including aborted ones, before any extract window is applied and before any issuer key is applied, and <bcp14>MUST</bcp14> report a presented manifest that no presented receipt references. An audit presented with no Trade Manifest is not made conditional by this requirement.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-18</td>
              <td align="left">A decoder <bcp14>MUST</bcp14> refuse a CBOR map that carries a duplicate encoded key.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-19</td>
              <td align="left">A decoder <bcp14>MUST</bcp14> impose a bound on encoded size, nesting depth, and the number of elements it will decode from an audit input, and <bcp14>MUST</bcp14> refuse an input that exceeds a bound with a named refusal rather than by exhausting memory or the stack. It <bcp14>SHOULD</bcp14> document the bounds it applies. This document fixes no numbers.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-20</td>
              <td align="left">A verifier that receives a JSON document as text <bcp14>MUST</bcp14> refuse a text in which any object repeats a member name, by name (<tt>json-duplicate-key</tt>), before parsing it. A verifier handed an object rather than text cannot apply this rule and <bcp14>MUST NOT</bcp14> report that it did.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T4-21</td>
              <td align="left">A decoder <bcp14>MUST</bcp14> refuse a COSE_Sign1 message whose unprotected header is not an empty map, by name (<tt>cose-sign1-unprotected</tt>), rather than verifying the signature and ignoring the header.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t5-policy-bypass-via-direct-rail-access">
        <name>T5: Policy bypass via direct rail access</name>
        <t>The agent or an attacker calls the rail without the PDP.
The only payment function is the adapter that calls the PDP first.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T5-1</td>
              <td align="left">The agent-facing spend interface <bcp14>MUST</bcp14> invoke the PDP and <bcp14>MUST NOT</bcp14> expose a parallel ungated rail call to the model.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T5-2</td>
              <td align="left">Rail credentials, wallet handles, and facilitator tokens <bcp14>MUST NOT</bcp14> be placed in tool results or prompts.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T5-3</td>
              <td align="left">Hosts <bcp14>SHOULD</bcp14> run the PDP and signing keys in a process the model runtime cannot write.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T5-4</td>
              <td align="left">A deployment <bcp14>MAY</bcp14> use OS or hardware isolation between the model and the PDP.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t6-time-of-check-to-time-of-use-toctou-between-policy-check-and-payment">
        <name>T6: Time-of-check to time-of-use (TOCTOU) between policy check and payment</name>
        <t>An allow is computed; the request is then swapped before the rail sees it.
Settlement pays only the exact fields hashed into the single-use decision.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T6-1</td>
              <td align="left">Payment settlement <bcp14>MUST</bcp14> use the same six <tt>requestHash</tt> fields the PDP evaluated: amount, currency, payee, tool, nonce, and <tt>manifestHash</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T6-2</td>
              <td align="left">An allow decision <bcp14>MUST</bcp14> be consumed on the first settlement attempt, success or fail-closed abort, and <bcp14>MUST NOT</bcp14> authorize a later different request.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T6-3</td>
              <td align="left">Implementations <bcp14>SHOULD</bcp14> treat a decision older than a short TTL as expired.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T6-4</td>
              <td align="left">An allow Decision Token <bcp14>MUST</bcp14> be COSE_Sign1 with CWT private-use labels -70301..-70305 (<tt>requestHash</tt>, <tt>policyHash</tt>, <tt>expiryMs</tt>, <tt>nonce</tt>, <tt>singleUseId</tt>) and content type <tt>application/cedulon-decision+cbor</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T6-5</td>
              <td align="left">A party that accepts a Decision Token <bcp14>MUST</bcp14> reject a failed signature, a <tt>kid</tt> or content-type mismatch, a claim-map mismatch, or an expired <tt>expiryMs</tt>. The token is expired when the evaluation time is strictly greater than <tt>expiryMs</tt>; at exactly <tt>expiryMs</tt> it is not.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T6-6</td>
              <td align="left">A consumer of a Decision Token <bcp14>MUST</bcp14> verify it against its own issuing key and <bcp14>MUST NOT</bcp14> accept a token it cannot check that way.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T6-7</td>
              <td align="left">A party that records a settlement under a Decision Token <bcp14>MUST</bcp14> refuse it when that settlement's <tt>timestampMs</tt> is strictly greater than the token's <tt>expiryMs</tt>. At exactly <tt>expiryMs</tt> the settlement remains inside the token's authority; the boundary is the one <tt>MUST-T6-5</tt> states.</td>
            </tr>
          </tbody>
        </table>
        <t>A later verifier cannot make this comparison. Decision Tokens are not
among the inputs <xref target="verification"/> enumerates: the extract, the
receipts, the manifests, the checkpoints, and the witness receipts.
The rule is written on the party that can apply it. Verification does
not repeat it.</t>
        <t><tt>MUST-T6-7</tt> does not let a later verifier detect a settlement that
predates its decision. That would require carrying the decision's
issuance time on the token and binding the receipt to it, which this
document does not define. <tt>MUST-T6-4</tt> names the same five labels.</t>
      </section>
      <section anchor="t7-signing-key-leakage">
        <name>T7: Signing-key leakage</name>
        <t>Keys leak from disk, logs, or a prompt. Forged manifests or receipts follow.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T7-1</td>
              <td align="left">Secret key material <bcp14>MUST NOT</bcp14> appear in receipts, checkpoints, manifests, decision tokens, logs, or example output.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T7-2</td>
              <td align="left">Example and test keys <bcp14>MUST</bcp14> be generated at runtime or stored as clearly fake fixtures, never as production secrets.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T7-3</td>
              <td align="left">Production deployments <bcp14>SHOULD</bcp14> use a hardware security module (HSM) or operating-system key store and <bcp14>SHOULD</bcp14> rotate keys.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T7-4</td>
              <td align="left">Implementations <bcp14>MAY</bcp14> encrypt keys at rest.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T7-5</td>
              <td align="left">An implementation that stores a signing key in the clear <bcp14>MUST</bcp14> report the protection it actually obtained, measured from the stored object rather than derived from the platform.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T7-6</td>
              <td align="left">A writable directory anywhere on the path to a stored signing key makes the file permission moot, and a symbolic link on that path hands the destination to whoever placed it. An implementation <bcp14>MUST</bcp14> refuse both rather than report the key as protected.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t8-counterparty-price-gouging-or-defective-delivery">
        <name>T8: Counterparty price gouging or defective delivery</name>
        <t>The payee ships a different artifact, or the price exceeds the signed offer.
The Trade Manifest binds price and an acceptance-criteria hash before payment.
Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-1</td>
              <td align="left">A Trade Manifest <bcp14>MUST</bcp14> bind goods or service description, price, currency, acceptance-criteria hash, cancel condition, and expiry.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-2</td>
              <td align="left">A spend bound to a manifest <bcp14>MUST</bcp14> be denied if the requested amount or currency differs from the manifest. Amount and currency are compared as the exact octets of their text strings: no case folding, no Unicode normalisation, no numeric reinterpretation.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-3</td>
              <td align="left">If delivery bytes do not hash to the acceptance-criteria hash, the implementation <bcp14>MUST</bcp14> be able to produce a Dispute Evidence Bundle containing the manifest, the spend receipt, and the delivery hash.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-4</td>
              <td align="left">The Dispute Evidence Bundle <bcp14>MUST NOT</bcp14> be described as an arbitral award or escrow release.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-7</td>
              <td align="left">
                <tt>manifestHash</tt> <bcp14>MUST</bcp14> be the SHA-256 of the signed Trade Manifest COSE bytes and <bcp14>MUST NOT</bcp14> include the issuer public key encoding.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T8-5</td>
              <td align="left">Manifests <bcp14>SHOULD</bcp14> reference an AP2 mandate hash when one exists.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T8-6</td>
              <td align="left">Parties <bcp14>MAY</bcp14> add an optional escrow actor as a third-party role interface; an implementation of this specification <bcp14>MUST NOT</bcp14> take custody (<tt>MUST-T8-custody</tt>).</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-custody</td>
              <td align="left">Implementations of this specification <bcp14>MUST NOT</bcp14> take custody of funds or operate escrow.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-8</td>
              <td align="left">If a payee countersignature is present, a verifier <bcp14>MUST</bcp14> reject it when the signature fails, when <tt>kid</tt> or content type does not match the configured payee key, or when the <tt>receiptCose</tt> value (label -70401) is not the issuer COSE_Sign1 bytes.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T8-9</td>
              <td align="left">A verifier presented with a Trade Manifest <bcp14>MUST</bcp14> compare the amount, currency and settlement time of every receipt that names it, aborted ones included, against the manifest amount, currency and expiry - amount and currency on the exact-octet terms of <tt>MUST-T8-2</tt>, time on the boundary of <tt>MUST-T3-3</tt>, and, where the manifest names a <tt>payee</tt>, the receipt payee on the same exact-octet terms - and <bcp14>MUST</bcp14> report a receipt that departs from them. Where a usable issuer key is pinned (a pinned issuer root at least one of whose keys the verifier can decode), the comparison is made over the receipts that verify under it and a departure <bcp14>MUST</bcp14> fail the audit. Where no usable issuer key is pinned, the departure <bcp14>MUST</bcp14> still be reported and <bcp14>MUST NOT</bcp14> by itself fail the audit. Receipts that do not name the manifest are not measured against it. A Trade Manifest that a stated publisher pin refuses is not terms for this purpose: where the verifier reports <tt>manifest-key-mismatch</tt>, it <bcp14>MUST NOT</bcp14> read a charge out of that document's body, neither this comparison nor the acceptance-hash comparison of <xref target="countersign"/>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T8-10</td>
              <td align="left">A payee <bcp14>MAY</bcp14> attach a detached COSE_Sign1 countersignature over the issuer receipt bytes. Absence <bcp14>MUST NOT</bcp14> invalidate the issuer receipt.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T8-11</td>
              <td align="left">An attributable countersignature <bcp14>MAY</bcp14> carry <tt>deliveredHash</tt>. When present and the verifier holds the Trade Manifest, the verifier <bcp14>MUST</bcp14> compare it against <tt>acceptanceCriteriaHash</tt> as exact octets and <bcp14>MUST</bcp14> report a mismatch as a failing finding (<tt>delivery-mismatch</tt>). A <tt>deliveredHash</tt> on an unattributable countersignature <bcp14>MUST</bcp14> be discarded with it.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="escrow-role">
        <name>Optional escrow role</name>
        <t>Parties <bcp14>MAY</bcp14> name an escrow actor in a Trade Manifest as a
third-party role that holds funds under rules outside this protocol
(<tt>MAY-T8-6</tt>). Implementations of this specification <bcp14>MUST NOT</bcp14> take
custody or operate escrow (<tt>MUST-T8-custody</tt>).</t>
      </section>
      <section anchor="t9-personally-identifiable-information-pii-leakage-into-the-transparency-log">
        <name>T9: Personally identifiable information (PII) leakage into the transparency log</name>
        <t>A public receipt or transparency statement carries names, addresses, or full
amounts that should stay private. Log-facing encodings offer redaction.
See also <xref target="privacy"/>. Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T9-1</td>
              <td align="left">A transparency encoding <bcp14>MUST</bcp14> support omitting or hashing payer/payee identifiers and <bcp14>MUST</bcp14> support amount redaction or range/bucket encoding.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T9-2</td>
              <td align="left">Implementations <bcp14>MUST NOT</bcp14> write raw government-ID, payment-instrument PAN, or street address fields into a public transparency statement.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T9-3</td>
              <td align="left">Default public anchors <bcp14>SHOULD</bcp14> publish <tt>policyHash</tt>, <tt>manifestHash</tt>, <tt>receiptHash</tt>, and timestamp rather than full claim sets.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MAY</bcp14>-T9-4</td>
              <td align="left">A private auditor <bcp14>MAY</bcp14> receive an unredacted receipt out of band.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T9-5</td>
              <td align="left">A checkpoint discloses a per-currency window total, which the receipt-field rules above do not cover. Withholding it is governed by <bcp14>MUST</bcp14>-T11-12 and <bcp14>MUST</bcp14>-T11-13: null in the signed payload, and no other form of redaction honoured.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t10-secret-spend-via-rail-bypass">
        <name>T10: Secret spend via rail bypass</name>
        <t>An operator, leaked credential, or a second binary can settle on the rail
and omit the Receipt Issuer. Completeness reconciles the extract to the receipts.
See <xref target="reconciliation"/>. Narrative: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-1</td>
              <td align="left">A verifier <bcp14>MUST</bcp14> match each extract settlement to a settled receipt on <tt>ref</tt> AND <tt>amount</tt> AND <tt>currency</tt>. An audit presented with no extract, no receipts and no checkpoints reports no completeness finding. It is not thereby unconditional, and the warnings for the roots it was not given still apply.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-2</td>
              <td align="left">A settlement with no matching receipt <bcp14>MUST</bcp14> be reported as a completeness failure identified by that settlement <tt>ref</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-3</td>
              <td align="left">A settled Spend Receipt whose <tt>x402PaymentRef</tt> is not on the extract <bcp14>MUST</bcp14> be reported as a completeness failure.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-4</td>
              <td align="left">An audit that has any fail-severity completeness finding <bcp14>MUST</bcp14> fail.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>SHOULD</bcp14>-T10-5</td>
              <td align="left">Hosts <bcp14>SHOULD</bcp14> still apply T5 (no ungated rail in the model process). Completeness does not replace prevention.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-6</td>
              <td align="left">A <tt>ref</tt> that appears more than once among settled receipts or among extract rows <bcp14>MUST</bcp14> be reported as <tt>duplicate-ref</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-7</td>
              <td align="left">A verifier <bcp14>MUST</bcp14> obtain the extract from the rail or from a rail signature. With no pinned rail key the extract <bcp14>MUST</bcp14> be reported as <tt>unauthenticated-extract</tt>, whatever it carries, and the completeness guarantee is conditional. With a pinned key, see <bcp14>MUST</bcp14>-T10-8: the extract <bcp14>MUST</bcp14> fail closed rather than warn.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-8</td>
              <td align="left">A verifier <bcp14>MUST</bcp14> obtain the rail public key out of band and <bcp14>MUST</bcp14> verify the extract signature against that key. A key the extract carries <bcp14>MUST NOT</bcp14> be treated as the rail's identity and <bcp14>MUST NOT</bcp14> stand in for a key the verifier did not obtain. Without such a key the guarantee is conditional and the condition is reported as <tt>unauthenticated-extract</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-9</td>
              <td align="left">Keys <bcp14>MUST</bcp14> be compared by SubjectPublicKeyInfo DER encoding rather than by any text encoding. A pinned key that cannot be decoded <bcp14>MUST</bcp14> be reported as <tt>trust-key-unreadable</tt>, not as a key mismatch.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-10</td>
              <td align="left">Every settlement record whose <tt>timestampMs</tt> falls outside the extract's declared window <bcp14>MUST</bcp14> be reported as <tt>extract-scope-mismatch</tt>, identified by that record's <tt>ref</tt>. This check <bcp14>MUST</bcp14> run whether or not a key is pinned.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-11</td>
              <td align="left">When the verifier states an expected account, rail, or window, an extract that does not cover it <bcp14>MUST</bcp14> fail closed as <tt>extract-scope-mismatch</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-12</td>
              <td align="left">When an extract is supplied, the records it carries are the subject of reconciliation. A settlement list from another source <bcp14>MUST NOT</bcp14> be substituted; a disagreeing list <bcp14>MUST</bcp14> be reported as <tt>extract-settlement-mismatch</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-13</td>
              <td align="left">A <tt>ref</tt> reported as <tt>duplicate-ref</tt> <bcp14>MUST</bcp14> still be reconciled by aggregate amount per currency, and a shortfall <bcp14>MUST</bcp14> state the unaccounted amount. An unparseable amount <bcp14>MUST</bcp14> be reported as <tt>malformed-amount</tt> without aborting the audit.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-14</td>
              <td align="left">An implementation <bcp14>MUST</bcp14> surface the guarantee and any warnings in any human-readable audit report it produces, not only in a returned structure.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-15</td>
              <td align="left">A verifier that supplies a rail pin but has not stated the period under audit <bcp14>MUST</bcp14> emit <tt>unstated-audit-window</tt> and <bcp14>MUST</bcp14> treat the guarantee as conditional; with no rail pin at all the condition reported is <tt>unauthenticated-extract</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-16</td>
              <td align="left">When an extract is supplied, a receipt whose <tt>ref</tt> appears on it is reconciled against it regardless of its own <tt>timestampMs</tt>; the window sieve applies only to receipts the extract does not name, and such a receipt outside the window <bcp14>MUST NOT</bcp14> be reported as a completeness failure against that extract.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-17</td>
              <td align="left">An unmatched settled receipt within the declared <tt>clockSkewMs</tt> of <tt>windowEndMs</tt>, and an unmatched settlement record within it of <tt>windowStartMs</tt>, <bcp14>MUST</bcp14> be reported as <tt>boundary-deferred</tt>, a warning, rather than as a completeness failure. A closing-edge deferral resolves against the following window's extract and hardens into the completeness finding when that extract is presented and does not name the <tt>ref</tt>; an opening-edge deferral resolves only against a receipt in the presented bag that names its <tt>ref</tt>, and a following extract does not harden it. Absent a declared <tt>clockSkewMs</tt>, the profile default of 300000 milliseconds applies.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-18</td>
              <td align="left">A verifier that supplies a rail pin but has not stated the account or the rail under audit <bcp14>MUST</bcp14> emit <tt>unstated-audit-scope</tt> and <bcp14>MUST</bcp14> treat the guarantee as conditional; with no rail pin at all the condition reported is <tt>unauthenticated-extract</tt>.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-19</td>
              <td align="left">A report <bcp14>MUST</bcp14> name the account, rail and window the extract declared, in the printed report, in the finding object it returns, and in every other structure the implementation returns for that audit, a tool result or an export included. Where no extract was presented there is no declared population, and the structure names none.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T10-20</td>
              <td align="left">Where a stated rail pin refuses the presented extract and the verifier reports <tt>extract-key-mismatch</tt>, the verifier <bcp14>MUST NOT</bcp14> read a settlement finding out of that document's body: not a mismatch against a receipt, not money reported as unaccounted for, and not a receipt left unmatched by rows the refused document omits. The verifier <bcp14>MUST</bcp14> report <tt>settlement-comparison-skipped</tt> in the same result. A pinned key the verifier cannot decode is <tt>trust-key-unreadable</tt> and is not a refusal of the document, so it does not reach this requirement.</td>
            </tr>
          </tbody>
        </table>
        <t>In <bcp14>MUST</bcp14>-T10-4, a completeness finding that makes the audit fail is
distinct from a warning that only makes the guarantee conditional.
The verification algorithm states that distinction by behaviour
(<xref target="reconciliation"/>).</t>
      </section>
      <section anchor="t11-checkpoint-suppression-or-rollback">
        <name>T11: Checkpoint suppression or rollback</name>
        <t>Checkpoint suppression and rollback, and the witness that detects
them, are addressed in <xref target="CEDULON-CHECKPOINT"/>. The two requirements
below are defined here because the core label set and the
reconciliation depend on them.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T11-1</td>
              <td align="left">An epoch checkpoint <bcp14>MUST</bcp14> be COSE-signed and <bcp14>MUST</bcp14> bind epoch number, time window, receipt count, chain-head hash, per-currency totals, and the previous checkpoint hash.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T11-12</td>
              <td align="left">Withheld checkpoint totals <bcp14>MUST</bcp14> be encoded as null in the signed payload. A verifier <bcp14>MUST</bcp14> report that the totals comparison was skipped and <bcp14>MUST</bcp14> treat the guarantee as conditional; <tt>receiptCount</tt> and <tt>chainHeadHash</tt> <bcp14>MUST</bcp14> still be checked.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="t12-settlement-without-a-recorded-receipt">
        <name>T12: Settlement without a recorded receipt</name>
        <t>The threats above are about a counterparty, a rail or an attacker.
This one is about the issuer's own implementation, and it produces
exactly the condition the rest of this document exists to make
detectable. Ordering, recovery and observability: <xref target="CEDULON-THREATS"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T12-1</td>
              <td align="left">An issuer <bcp14>MUST NOT</bcp14> complete a settlement whose receipt it cannot record durably. The ability to record <bcp14>MUST</bcp14> be established before value moves, not after.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T12-2</td>
              <td align="left">Where a settlement has been made and its record cannot be completed, the issuer <bcp14>MUST</bcp14> undo the settlement in every place it still controls: in memory, on the rail ledger it controls, and in any later write it has not yet issued. A refused payment <bcp14>MUST NOT</bcp14> consume the nonce or the payment allowance it never used.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T12-3</td>
              <td align="left">Two issuers <bcp14>MUST NOT</bcp14> share one durable state. An implementation that permits it <bcp14>MUST</bcp14> fail loudly rather than let one writer overwrite the other's receipt, and the failure <bcp14>MUST</bcp14> name what an operator can act on.</td>
            </tr>
            <tr>
              <td align="left">
                <bcp14>MUST</bcp14>-T12-4</td>
              <td align="left">Where a settlement has entered a rail the issuer does not control, and the local record cannot be completed, the outcome is indeterminate. The issuer <bcp14>MUST NOT</bcp14> treat the payment as reversed, and <bcp14>MUST NOT</bcp14> return the authority to spend, unless it holds authenticated evidence that the rail did not complete the settlement or that a reversing entry completed.</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document requests the registration of four media types in the
"Media Types" registry <xref target="RFC6838"/>, in the standards tree, each
carrying the <tt>+cbor</tt> structured syntax suffix that <xref target="RFC8949"/>
registers. Each names one of the COSE_Sign1 objects this document
defines and is carried as the COSE <tt>content type</tt> header parameter
(label 3) of that object (<xref target="cose-profile"/>). The value is a normative
check inside a protected header (<tt>MUST-T4-8</tt>, <tt>MUST-T6-5</tt>), which is
why the names cannot stay unregistered while that check stands.
Registration in the standards tree requires IETF approval; until
then, an implementation outside a closed deployment should treat
these names as placeholders that a registration may change. The
provisional registration procedure of <xref target="RFC6838"/> Section 5.2.1 is
available to an Internet-Draft, and a provisional entry, if one is
made, is superseded by the registration this section requests.</t>
      <t>The claim labels this document assigns inside the CBOR claim sets,
<tt>-70001</tt> through <tt>-70402</tt> (<xref target="receipt-labels"/>, <xref target="countersign"/>), lie
in the Private Use range of the "CBOR Web Token (CWT) Claims"
registry <xref target="RFC8392"/>, integer values less than -65536, and this
document requests no assignment for them. A later Standards Track
revision that moves them into the assigned range will request new
labels then, without reinterpreting these.</t>
      <t>No other IANA action is requested.</t>
      <t>The four templates follow. The checkpoint and inclusion types are in <xref target="CEDULON-CHECKPOINT"/>. Fields that are the same for every one
are stated once, in the first, and the others say so.</t>
      <section anchor="iana-receipt">
        <name>application/cedulon-receipt+cbor</name>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>cedulon-receipt+cbor</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary. A COSE_Sign1 structure <xref target="RFC9052"/> in deterministic CBOR
<xref target="RFC8949"/>, untagged, as profiled in <xref target="spend-receipt"/> and
<xref target="cose-profile"/>.</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>See <xref target="security"/> of this document. The object is signed; its
evidentiary weight depends on the verifier holding the issuer key
out of band (<xref target="issuer-root"/>), never on a key the object carries.</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>The claim set is a CBOR map with the labels and types stated in
<xref target="receipt-labels"/>, encoded per <xref target="RFC8949"/> Section 4.2.1. A
decoder refuses a duplicate key (<tt>MUST-T4-18</tt>), an input beyond its
stated bounds (<tt>MUST-T4-19</tt>), and a non-empty unprotected header
(<tt>MUST-T4-21</tt>) by name rather than accepting it.</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>This document, <xref target="spend-receipt"/>.</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Agent payment adapters, policy decision points, auditors, and
dispute-evidence tooling that produce or verify Cedulon Spend
Receipts.</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Additional information:</dt>
          <dd>
            <t>Deprecated alias names for this type: N/A. Magic number(s): N/A.
File extension(s): N/A. Macintosh file type code(s): N/A.</t>
          </dd>
          <dt>Person and email address to contact for further information:</dt>
          <dd>
            <t>Emek Can Dogru, e.dogru@cedulon.com</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>Emek Can Dogru</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-manifest">
        <name>application/cedulon-manifest+cbor</name>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>cedulon-manifest+cbor</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary. A COSE_Sign1 structure in deterministic CBOR, untagged, as
profiled in <xref target="trade-manifest"/> and <xref target="cose-profile"/>.</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>See <xref target="security"/> of this document. A manifest is an offer signed
before payment; it binds terms, not delivery, and is verified only
against a publisher key held out of band (<xref target="manifest-root"/>).</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>As for application/cedulon-receipt+cbor; the labels are those of
the manifest table in <xref target="receipt-labels"/>, and the <tt>payee</tt> label is
encoded only when present.</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>This document, <xref target="trade-manifest"/>.</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Payees and marketplaces that publish signed offers to paying
agents, and verifiers reconciling receipts against those offers.</t>
          </dd>
          <dt>Required parameters, optional parameters, fragment identifier considerations, additional information, contact, intended usage, restrictions on usage, author, change controller:</dt>
          <dd>
            <t>As for application/cedulon-receipt+cbor.</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-decision">
        <name>application/cedulon-decision+cbor</name>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>cedulon-decision+cbor</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary. A COSE_Sign1 structure in deterministic CBOR, untagged, as
profiled in <xref target="decision-token"/> and <xref target="cose-profile"/>.</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>See <xref target="security"/> of this document. A Decision Token is consumed at
the gate by the party that issued it (<xref target="decision-root"/>); it is not
an input to the retrospective audit (<xref target="verification"/>), and a
verifier that treated it as one would be claiming a check the audit
does not make.</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>As for application/cedulon-receipt+cbor; the labels are those of
the Decision Token table in <xref target="receipt-labels"/>, all five always
present.</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>This document, <xref target="decision-token"/>.</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Policy decision points and the payment adapters that consume their
allow decisions.</t>
          </dd>
          <dt>Required parameters, optional parameters, fragment identifier considerations, additional information, contact, intended usage, restrictions on usage, author, change controller:</dt>
          <dd>
            <t>As for application/cedulon-receipt+cbor.</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-countersign">
        <name>application/cedulon-countersign+cbor</name>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>cedulon-countersign+cbor</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary. A detached COSE_Sign1 structure in deterministic CBOR,
untagged, as profiled in <xref target="countersign"/>, whose payload carries the
exact issuer receipt octets it countersigns.</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>See <xref target="security"/> of this document. A countersignature that does
not verify under a payee key held out of band carries no
evidentiary weight and cannot move the verdict on the receipt it
travels beside (<xref target="countersign"/>, <xref target="payee-root"/>).</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>As for application/cedulon-receipt+cbor; the optional
<tt>deliveredHash</tt> claim is a 32-octet byte string and is read as
absent when it is not.</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>This document, <xref target="countersign"/>.</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Payees that acknowledge a receipt and, optionally, bind the bytes
they delivered.</t>
          </dd>
          <dt>Required parameters, optional parameters, fragment identifier considerations, additional information, contact, intended usage, restrictions on usage, author, change controller:</dt>
          <dd>
            <t>As for application/cedulon-receipt+cbor.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="impl-status">
      <name>Implementation Status</name>
      <t>This section is to be removed before publishing as an RFC.</t>
      <t>RFC 7942 <xref target="RFC7942"/> note. Detailed status is kept in the companion
repository, where it can be corrected without a revision of this
document.</t>
      <dl>
        <dt>Implementation:</dt>
        <dd>
          <t>A companion implementation with a runnable verification suite at
<eref target="https://github.com/dogrucanemek-alt/cedulon">https://github.com/dogrucanemek-alt/cedulon</eref>. The code is a profile
of this document, not a second specification. This -00 is not an
IETF working-group item.</t>
        </dd>
        <dt>Maturity:</dt>
        <dd>
          <t>Research code by a single implementer. Three readers have run the
code on their own machines against a pinned commit and reported
figures matching the author's: two from a clean clone of the whole
suite, one re-running the published reproduction. That is
byte-stability across environments and not an independent
implementation; the same code agreeing with itself on three machines
rules out a local accident and nothing more. One reader reports an
independent implementation of the Signed Statement identity, kept
deliberately separate from this codebase; no independent
implementation of the reconciliation algorithm is known to the
author. One reader rebuilt the regenerated receipt vector of
Appendix A from this text alone, in an independent toolchain, and
obtained the published 307 octets byte for byte, SHA-256
<tt>0f1fe8859faf25de906b08142674f1270656d8ea7bfc00853c2fc6e9d3f5a10b</tt>;
that reader had read parts of the public repository and says so, so
it is not a clean-room result.</t>
        </dd>
        <dt>Coverage:</dt>
        <dd>
          <t>The receipt, checkpoint, extract, reconciliation and verification
algorithm are implemented, including the transparency witness input,
the withheld and not-anchored conditions, and signed totals
redaction. Every requirement added in the posted series <xref target="CEDULON-DT"/> is covered by a
red-then-green case written before the text, with one exception: the
reversal branch of <tt>MUST-T12-4</tt> is specified and not executed,
because this tree carries no authenticated external-rail path.
<tt>MUST-T6-7</tt>, the one requirement this document adds beyond that
series, is likewise specified and not executed: no case in the suite
compares a settlement's <tt>timestampMs</tt> to a Decision Token's
<tt>expiryMs</tt>. The escrow role, reversal, refund and partial settlement
are not implemented. The witness used in the suite is the in-process log
that <tt>MAY-T11-6</tt> permits, a Merkle tree that issues inclusion
proofs; tier 2 of <xref target="CEDULON-CHECKPOINT"/> (The transparency witness) is exercised against it red-then-green,
and the implementation has not been run against a deployed
Transparency Service.</t>
        </dd>
        <dt/>
        <dd>
          <t>Continuous integration runs the pre-release suite - the post-release
registry checks are a separate job, deliberately excluded, so "the
suite" names exactly what was measured - on three hosted runners,
each as a non-root user: Linux, macOS and Windows. At the commit
this revision describes, all three assert every case, 577 of 577,
with none skipped. A local Windows run without symbolic-link
privilege skips four POSIX-mode cases with a stated reason rather
than passing silently.</t>
        </dd>
        <dt>Licensing:</dt>
        <dd>
          <t>Apache-2.0.</t>
        </dd>
        <dt>Contact:</dt>
        <dd>
          <t>The author of this document.</t>
        </dd>
        <dt>Experience:</dt>
        <dd>
          <t>The posted series <xref target="CEDULON-DT"/> was driven by what readers found
rather than by a plan. T12 came from none of them: it was found while writing an adversarial
task, in the ordering the implementation itself used.</t>
        </dd>
      </dl>
      <t>The manifest root (<tt>MUST-T4-15</tt>) and the gate's refusal to settle
against a manifest it cannot attribute (<tt>MUST-T4-16</tt>)
were published as 0.4.0 rather than as a patch: the gate had been
answering 200 to an
unattributable manifest and writing that manifest's hash into the
receipt, and refusing it is a change in behaviour that a version number
ought to announce.</t>
      <t>Note on distribution: everything the posted series <xref target="CEDULON-DT"/> added is in the
published packages at version 0.9.0, and the workspace publishes
0.13.1 as this revision is written. A reader can check a claim against
an installed package rather than against a working tree.</t>
    </section>
    <section anchor="evolution">
      <name>Evolution and Future Work (Informative)</name>
      <t>This document is an individual Internet-Draft. If the work is taken
up, the intended track is a Standards Track profile of COSE <xref target="RFC9052"/>
and CWT <xref target="RFC8392"/> for agent-spend receipts. Two extensions are
sketched and not specified here: re-attestation of receipts when a
signature algorithm is retired <xref target="REATTEST"/>, and reconciliation
evaluated as settlements arrive rather than per epoch <xref target="STREAMING"/>.
The same completeness check could apply to other consumed resources,
such as compute or data; this document does not specify those
profiles.</t>
    </section>
    <section anchor="adjacent">
      <name>Informative Notes on Adjacent Protocols</name>
      <t>x402 <xref target="X402"/> uses HTTP 402 <xref target="RFC9110"/> to negotiate stablecoin
payment. AP2 <xref target="AP2"/> uses signed mandates as verifiable credentials.
Cedulon does not replace either protocol. Profiles built on HTTP Message Signatures
<xref target="RFC9421"/> authenticate bots; they are not a spend receipt.
The drafts below are complementary, and none of them defines
rail-extract completeness. draft-bates-atp <xref target="BATES-ATP"/> covers
tamper-evident causal lineage as a signed directed acyclic graph.
draft-vauban-x402-stark-receipts <xref target="VAUBAN"/> specifies x402
receipt-format variants that a Cedulon Spend Receipt <bcp14>MAY</bcp14> carry as a
rail proof. draft-schrock-ep-outcome-binding <xref target="SCHROCK"/> compares
authorized action bytes to independently observed effects.
draft-marques-asqav-compliance-receipts <xref target="MARQUES"/> profiles
access-control action receipts (the broader Acta family includes
<xref target="ACTA"/>). draft-hopley-x402-compliance-receipt <xref target="HOPLEY"/> records an
admission-time compliance decision.
draft-abak-agent-control-delivery-evidence <xref target="ABAK"/> states evidence
requirements for a governance control - stop, suspend, revoke -
travelling toward the component expected to constrain a runtime, and
keeps emission, receiver-side observation, enforcement outcome and
observed control effect as separate results. Its object moves the
other way from this one: Cedulon reconciles a spend that already
happened against what the rail reported, and evidences neither the
delivery of a control instruction nor its enforcement. A denied spend
leaves no portable artifact here at all - a Decision Token encodes an
allow (<xref target="decision-token"/>) - so what a Cedulon audit says about a
refusal it says through the settlement that did not appear on the
extract, which is an effect observation over a declared population and
not an acknowledgement from an enforcement point. Its bounded-population
rule and this document's <tt>MUST-T10-18</tt> and <tt>MUST-T10-19</tt> are the same
kind of bound on two different objects.</t>
      <t>draft-kuehlewind-audit-architecture <xref target="KUEHLEWIND-AUDIT"/>, the
architecture a Cedulon audit is intended to be read within, is
described in <xref target="intro"/>; it also covers propagation of audit context
across domains and optional attestation under the Remote ATtestation
procedureS (RATS) architecture. draft-birkholz-verifiable-agent-conversations
<xref target="BIRKHOLZ-VAC"/> defines a COSE-signed record of an agent's
conversation - session metadata, messages, tool invocations,
reasoning traces - for the same Transparency Services. A Spend
Receipt is the kind of artifact such a record would name for a
payment step; neither document profiles the other, and the
conversation record does not define rail-extract completeness.</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="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="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC7493">
          <front>
            <title>The I-JSON Message Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2015"/>
            <abstract>
              <t>I-JSON (short for "Internet JSON") is a restricted profile of JSON designed to maximize interoperability and increase confidence that software can process it successfully with predictable results.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7493"/>
          <seriesInfo name="DOI" value="10.17487/RFC7493"/>
        </reference>
        <reference anchor="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="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8410">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="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="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>
        <reference anchor="RFC9942">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Receipts</title>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>CBOR Object Signing and Encryption (COSE) Receipts prove properties of a Verifiable Data Structure (VDS) to a verifier. VDSs and associated Proof Types enable security properties, such as minimal disclosure, transparency, and non-equivocation. Transparency helps maintain trust over time and has been applied to certificates, end-to-end encrypted messaging systems, and supply chain security. This specification enables concise transparency-oriented systems by building on Concise Binary Object Representation (CBOR) and COSE. The extensibility of the approach is demonstrated by providing CBOR encodings for Merkle inclusion and consistency proofs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9942"/>
          <seriesInfo name="DOI" value="10.17487/RFC9942"/>
        </reference>
        <reference anchor="RFC9943">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <reference anchor="CEDULON-CHECKPOINT" target="https://github.com/dogrucanemek-alt/cedulon/blob/master/spec/draft-dogru-cedulon-checkpoint-00.md">
          <front>
            <title>Cedulon Checkpoints: Epoch Witnesses and Transparency</title>
            <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="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="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="CEDULON-DT" target="https://datatracker.ietf.org/doc/draft-dogru-cedulon/">
          <front>
            <title>Cedulon: An Audit Layer for Agent-to-Agent Commerce</title>
            <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="CEDULON-THREATS" target="https://github.com/dogrucanemek-alt/cedulon/blob/master/spec/draft-dogru-cedulon-threats-00.md">
          <front>
            <title>Cedulon Threat Narratives</title>
            <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="KUEHLEWIND-AUDIT" target="https://datatracker.ietf.org/doc/draft-kuehlewind-audit-architecture/">
          <front>
            <title>An Architecture for Auditing AI Agent Delegation and Interactions</title>
            <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind">
              <organization/>
            </author>
            <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
              <organization/>
            </author>
            <date year="2026" month="May"/>
          </front>
        </reference>
        <reference anchor="BIRKHOLZ-VAC" target="https://datatracker.ietf.org/doc/draft-birkholz-verifiable-agent-conversations/">
          <front>
            <title>Verifiable Agent Conversation Records</title>
            <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
              <organization/>
            </author>
            <author initials="T." surname="Heldt" fullname="T. Heldt">
              <organization/>
            </author>
            <author initials="O." surname="Steele" fullname="Orie Steele">
              <organization/>
            </author>
            <date year="2026" month="August"/>
          </front>
        </reference>
        <reference anchor="BATES-ATP" target="https://datatracker.ietf.org/doc/html/draft-bates-atp">
          <front>
            <title>Agent Transaction Protocol (ATP)</title>
            <author initials="D." surname="Bates" fullname="David Asher Bates">
              <organization/>
            </author>
            <date year="2026" month="May"/>
          </front>
        </reference>
        <reference anchor="X402" target="https://www.x402.org/">
          <front>
            <title>x402: An Open Standard for Internet-Native Payments</title>
            <author>
              <organization>x402 Foundation</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="AP2" target="https://ap2-protocol.org/ap2/specification/">
          <front>
            <title>Agent Payments Protocol (AP2)</title>
            <author>
              <organization>Google Agentic Commerce</organization>
            </author>
            <date year="2025" month="September"/>
          </front>
        </reference>
        <reference anchor="GRIGG" target="https://iang.org/papers/triple_entry.html">
          <front>
            <title>Triple Entry Accounting</title>
            <author initials="I." surname="Grigg" fullname="Ian Grigg">
              <organization/>
            </author>
            <date year="2005"/>
          </front>
        </reference>
        <reference anchor="PACIOLI">
          <front>
            <title>Summa de arithmetica, geometria, proportioni et proportionalita</title>
            <author initials="L." surname="Pacioli" fullname="Luca Pacioli">
              <organization/>
            </author>
            <date year="1494"/>
          </front>
        </reference>
        <reference anchor="VAUBAN" target="https://datatracker.ietf.org/doc/draft-vauban-x402-stark-receipts/">
          <front>
            <title>x402 STARK Receipt Format Extension</title>
            <author>
              <organization>Vauban Research</organization>
            </author>
            <date year="2026" month="May"/>
          </front>
        </reference>
        <reference anchor="SCHROCK" target="https://datatracker.ietf.org/doc/draft-schrock-ep-outcome-binding/">
          <front>
            <title>Outcome Binding for Authorized Actions and Independently Observed Effects</title>
            <author initials="I." surname="Schrock" fullname="Iman Schrock">
              <organization/>
            </author>
            <date year="2026" month="July"/>
          </front>
        </reference>
        <reference anchor="MARQUES" target="https://datatracker.ietf.org/doc/draft-marques-asqav-compliance-receipts/">
          <front>
            <title>Compliance Profile of Signed Action Receipts for AI Agents</title>
            <author initials="J. A." surname="Gomes Marques" fullname="Joao Andre Gomes Marques">
              <organization/>
            </author>
            <date year="2026" month="July"/>
          </front>
        </reference>
        <reference anchor="ACTA" target="https://datatracker.ietf.org/doc/draft-farley-acta-signed-receipts/">
          <front>
            <title>Signed Decision Receipts for Machine-to-Machine Access Control</title>
            <author initials="T." surname="Farley" fullname="Tom Farley">
              <organization/>
            </author>
            <date year="2026" month="June"/>
          </front>
        </reference>
        <reference anchor="HOPLEY" target="https://datatracker.ietf.org/doc/draft-hopley-x402-compliance-receipt/">
          <front>
            <title>Categorical Compliance Screening Receipt Format for Agentic-Payment Flows</title>
            <author initials="C." surname="Hopley" fullname="Christopher Hopley">
              <organization/>
            </author>
            <date year="2026" month="May"/>
          </front>
        </reference>
        <reference anchor="ABAK" target="https://datatracker.ietf.org/doc/draft-abak-agent-control-delivery-evidence/">
          <front>
            <title>Evidence Requirements for Agent Control Delivery and Outcome Reconciliation</title>
            <author initials="A. T." surname="Abak" fullname="Ali Toygar Abak">
              <organization/>
            </author>
            <date year="2026" month="August"/>
          </front>
        </reference>
        <reference anchor="CPB" target="https://datatracker.ietf.org/doc/draft-mih-sokolov-scitt-payload-binding/">
          <front>
            <title>Canonical Payload Binding: A Signed Statement Construction Profile</title>
            <author initials="S." surname="Mih" fullname="Steven Mih">
              <organization/>
            </author>
            <author initials="A." surname="Sokolov" fullname="Anton Sokolov">
              <organization/>
            </author>
            <date year="2026" month="August"/>
          </front>
        </reference>
        <reference anchor="REATTEST" target="https://github.com/dogrucanemek-alt/cedulon/blob/e681e24d1b29912d8c190259c2ea9f4f9538c29d/spec/draft-dogru-cedulon-reattestation-00.md">
          <front>
            <title>Cedulon Re-Attestation: Carrying Spend Evidence Across Algorithm Retirement</title>
            <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
              <organization/>
            </author>
            <date year="2026" month="August"/>
          </front>
        </reference>
        <reference anchor="STREAMING" target="https://github.com/dogrucanemek-alt/cedulon/blob/e681e24d1b29912d8c190259c2ea9f4f9538c29d/spec/draft-dogru-cedulon-streaming-00.md">
          <front>
            <title>Cedulon Streaming Reconciliation: Continuous Completeness for Agent Spend</title>
            <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
              <organization/>
            </author>
            <date year="2026" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 2147?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Vernon Wharff showed that the object carrying the checkpoint guarantee
was neither profiled for registration nor read during verification,
and asked whether a recorded checkpoint absent from the chain deserves
its own identifier. Iman Schrock confirmed that finding independently
and drew its boundary.</t>
      <t>Iman Schrock and Pablo Etcheverry ran the implementation against a
pinned commit and reported defects that shaped this document. Iman
Schrock found the extract-binding defects and proposed their repair,
asked whether the profile should accept a pinned witness key, and
corrected this document's description of what its continuous
integration measures. He is also the author of <xref target="SCHROCK"/>, cited here
as adjacent work, and the reader whose independent implementation of
the Signed Statement identity is noted in <xref target="impl-status"/>; he asked for
it to be kept separate from any cross-implementation claim about
Cedulon, and that separation is his and is recorded here as he stated
it. Pablo Etcheverry found that a repeated reference hid the
unaccounted amount, ran the suite on a platform its author had not,
and found that nothing compared a settlement's clock to the clock of
the decision that authorized it.</t>
      <t>Nicholas Templeman ran the suite from a clean clone, corrected two
claims written about that run, and classified his own run as a
repetition of the author's checks rather than an independent
implementation. Walter Hawkins did not run it; he pressed for the run
to be stated precisely enough to be repeatable.</t>
      <t>Tiago Pinto ran the Appendix A vectors in an independent toolchain
before reading the text, confirmed the signatures, the SPKI-derived
<tt>kid</tt>, and deterministic re-encoding byte for byte, and listed the
places where an independent implementation could not be built from
the text. The witness tiers, the key-resolution rule, the extract
shape, issuer order, the boundary allowance, and the countersignature
and delivery bindings follow that list, and <xref target="presentation"/> answers a
later point of his. He consented to that run being recorded as the
first run of these vectors outside the companion codebase and not as
an independent implementation.</t>
      <t>Steven Mih and Anton Sokolov published the canonicalization vectors of
<xref target="CPB"/>; running them through this profile's <xref target="RFC8785"/> encoder put
the I-JSON precondition on the page as a rule.</t>
      <t>None of them reviewed this text, and any error in it is the author's.</t>
      <t>Field survey notes and the informative threat-model narrative in the
companion repository helped shape the requirement identifiers used
here. Those identifiers are defined in <xref target="security"/> and, for T11, in
<xref target="CEDULON-CHECKPOINT"/>.</t>
    </section>
    <section numbered="false" anchor="vectors">
      <name>Appendix A. Test Vectors</name>
      <t>These vectors use RFC 8032 Ed25519 secret scalar #1 (fixture only;
never a production key). Hex is lowercase.</t>
      <t>The vectors below <bcp14>MUST</bcp14> stand as the locked tests of this document:
an implementation matches them or it does not, and where an
implementation and a vector disagree, one of the two is wrong and this
document does not say in advance which.</t>
      <t>Receipt COSE_Sign1:</t>
      <t>Claims: payer=<tt>payer-1</tt>, payee=<tt>payee-1</tt>, amount=<tt>1</tt>,
currency=<tt>USD</tt>, policyHash=
<tt>fca4142da8ad241d24928227893894f4b5365efb746a4529fe9df0119d10da2c</tt>
(the SHA-256 of the UTF-8 octets of the ASCII string
<tt>cedulon/appendix-policy</tt>, standing in for a canonical policy
document; the field's input rule is in <xref target="hash-inputs"/>),
manifestHash=null,
noManifest=true, x402PaymentRef=null, timestampMs=1700000000000,
nonce=<tt>n100000000000000</tt>, prevReceiptHash=null, outcome=<tt>aborted</tt>.</t>
      <t>COSE_Sign1 hex (whitespace ignored):</t>
      <artwork><![CDATA[
845830a301320378206170706c69636174696f6e2f636564756c6f6e2d
726563656970742b63626f72044806e3fd8fda29bb60a058bbac3a0001
11706770617965722d313a000111716770617965652d313a0001117261
313a00011173635553443a000111747840666361343134326461386164
323431643234393238323237383933383934663462353336356566623734
366134353239666539646630313139643130646132633a00011175f63a
00011176f53a00011177f63a000111781b0000018bcfe568003a000111
79706e3130303030303030303030303030303a0001117af63a0001117b
6761626f7274656458400a24269b7521d409ebe462db297c3aa25b23d6
c697aa4a864b1b3a3edb5b30537b34b048a797073eaee41af371effb68
ecbb47b80e62d7e775e8cae5b066c30c
]]></artwork>
      <t>Manifest COSE_Sign1:</t>
      <t>Body: description=<tt>fixture-goods</tt>, amount=<tt>1</tt>, currency=<tt>USD</tt>,
acceptanceCriteriaHash=
<tt>e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855</tt>
(the SHA-256 of an empty delivery; the field is a digest of the exact
delivery bytes, so the vector carries a well-formed one),
cancelCondition=<tt>none</tt>,
expiresAtMs=1700000000000, ap2MandateHash=null.</t>
      <t>COSE_Sign1 hex (whitespace ignored):</t>
      <artwork><![CDATA[
845831a301320378216170706c69636174696f6e2f636564756c6f6e2d
6d616e69666573742b63626f72044806e3fd8fda29bb60a05889a73a00
0112386d666978747572652d676f6f64733a0001123961313a0001123a
635553443a0001123b7840653362306334343239386663316331343961
666266346338393936666239323432376165343165343634396239333
463613439353939316237383532623835353a0001123c646e6f6e653a
0001123d1b0000018bcfe568003a0001123ef65840599b5b1cc7bfd3fe
8b8e65cdd876652aeca13660e6bdccc93afe12188a295b20fdfe8e6e48
ae447dc74ccb0f13383f0f43f0f67f288d61a6395e95e2038e320d
]]></artwork>
    </section>
    <section numbered="false" anchor="finding-code-table">
      <name>Appendix B. Finding Codes</name>
      <table>
        <thead>
          <tr>
            <th align="left">Code</th>
            <th align="left">Effect</th>
            <th align="left">Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">settlement-without-receipt</td>
            <td align="left">audit fails</td>
            <td align="left">Extract row has no matching settled receipt, or a repeating <tt>ref</tt> settled more than it receipted</td>
          </tr>
          <tr>
            <td align="left">receipt-without-settlement</td>
            <td align="left">audit fails</td>
            <td align="left">Settled receipt ref is not on the extract</td>
          </tr>
          <tr>
            <td align="left">settlement-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">Same <tt>ref</tt>, different amount or currency, including a repeating <tt>ref</tt> that settled less than it receipted</td>
          </tr>
          <tr>
            <td align="left">duplicate-ref</td>
            <td align="left">audit fails</td>
            <td align="left">Ref appears more than once on one side</td>
          </tr>
          <tr>
            <td align="left">settled-without-ref</td>
            <td align="left">audit fails</td>
            <td align="left">
              <tt>outcome</tt> is settled and <tt>x402PaymentRef</tt> is null</td>
          </tr>
          <tr>
            <td align="left">receipt-chain-break</td>
            <td align="left">audit fails</td>
            <td align="left">Signature or <tt>prevReceiptHash</tt> failed, or the links cannot place a receipt (issuer order, step 6)</td>
          </tr>
          <tr>
            <td align="left">unauthenticated-extract</td>
            <td align="left">guarantee conditional</td>
            <td align="left">No verifier-supplied rail key, whatever the extract carries: a signature that verifies establishes internal consistency and not that the named rail produced the extract, and one that fails or is refused is not a key verdict either. The same code is reported when a rail key is pinned and no extract was presented at all, because there is nothing to check the pin against. A presented extract that does not verify under a pinned key is <tt>extract-key-mismatch</tt> instead</td>
          </tr>
          <tr>
            <td align="left">extract-key-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">Extract is signed by a key other than the pinned rail key, or does not verify against it</td>
          </tr>
          <tr>
            <td align="left">settlement-comparison-skipped</td>
            <td align="left">guarantee conditional</td>
            <td align="left">The pinned rail key refused the presented extract, so its rows were not reconciled against the receipts (<tt>MUST-T10-20</tt>). The code says what did not run; the refusal itself is reported as <tt>extract-key-mismatch</tt></td>
          </tr>
          <tr>
            <td align="left">trust-key-unreadable</td>
            <td align="left">audit fails</td>
            <td align="left">A pinned key - rail, issuer, or manifest publisher - could not be decoded; the verifier's configuration is at fault, and nothing falls back to the keys the objects carry</td>
          </tr>
          <tr>
            <td align="left">issuer-key-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">An object is signed by a key other than the pinned issuer key, or does not verify under it at all, so it is not coverage for anything it names. A checkpoint reaches this code by either route: unlike a receipt, which is named in the chain walk as <tt>receipt-chain-break</tt> when it claims the pin and fails, a checkpoint that claims the pin and fails is reported here and leaves its window uncovered</td>
          </tr>
          <tr>
            <td align="left">countersign-key-mismatch</td>
            <td align="left">conditional</td>
            <td align="left">A countersignature verifies under a key other than the one pinned for that payee; unattributable, discarded as approval evidence, and the receipt it rode beside is unaffected (<xref target="countersign"/>)</td>
          </tr>
          <tr>
            <td align="left">countersign-missing</td>
            <td align="left">conditional</td>
            <td align="left">A payee key is pinned and a settled receipt for that payee carries no attributable countersignature; a discarded garbage or foreign-key object leaves this open</td>
          </tr>
          <tr>
            <td align="left">unauthenticated-issuer</td>
            <td align="left">conditional</td>
            <td align="left">No verifier-supplied issuer key and at least one receipt or checkpoint presented; their signatures are checked against the keys the objects carry (<xref target="presentation"/>), which establishes that each object is internally consistent and not that the named issuer produced it</td>
          </tr>
          <tr>
            <td align="left">unauthenticated-countersigner</td>
            <td align="left">conditional</td>
            <td align="left">No verifier-supplied payee key; a countersignature is present but proves no approval</td>
          </tr>
          <tr>
            <td align="left">unauthenticated-manifest</td>
            <td align="left">conditional</td>
            <td align="left">No verifier-supplied manifest key and a Trade Manifest was presented; its signature is not checked at all, because the check that exists under a pin (<tt>manifest-key-mismatch</tt>) has no key to run against and the key the manifest carries is not a fallback for one. An audit presented with no Trade Manifest is not this condition</td>
          </tr>
          <tr>
            <td align="left">manifest-key-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">A presented Trade Manifest is signed by a key other than the pinned publisher key, or does not verify against it</td>
          </tr>
          <tr>
            <td align="left">manifest-covers-no-receipt</td>
            <td align="left">conditional</td>
            <td align="left">A presented Trade Manifest is referenced by no presented receipt, including aborted ones and those outside the extract window; the manifest states terms no presented receipt names. It is reported on what was presented, not on whether the manifest was attributed, so it appears beside <tt>manifest-key-mismatch</tt> as well</td>
          </tr>
          <tr>
            <td align="left">manifest-terms-mismatch</td>
            <td align="left">audit fails under a usable issuer pin; warning without one</td>
            <td align="left">A receipt names this Trade Manifest but departs from it in amount, currency, settlement time, or, where the manifest states one, payee. A manifest refused by a stated publisher pin is not compared at all; a gate applying <tt>MUST-T8-2</tt> and <tt>MUST-T3-3</tt> would have refused the payment. The two severities are the two branches of <tt>MUST-T8-9</tt></td>
          </tr>
          <tr>
            <td align="left">extract-scope-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">A record falls outside the declared window, or the extract does not cover the expected account, rail, or window</td>
          </tr>
          <tr>
            <td align="left">extract-settlement-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">A caller-supplied settlement list disagrees with the extract on <tt>ref</tt>, amount, currency or timestamp, which are the fields compared; the extract is authoritative. A beneficiary that differs is not part of this comparison and is reached by <tt>beneficiary-mismatch</tt>, against the receipt payee</td>
          </tr>
          <tr>
            <td align="left">malformed-amount</td>
            <td align="left">audit fails</td>
            <td align="left">An amount on a <tt>ref</tt> already reported as repeating that could not be parsed as an integer</td>
          </tr>
          <tr>
            <td align="left">unstated-audit-window</td>
            <td align="left">guarantee conditional</td>
            <td align="left">A supplied rail pin states no period, so the extract defined its own. Where no rail key is pinned at all the period is equally unstated, and <tt>unauthenticated-extract</tt> is the condition reported</td>
          </tr>
          <tr>
            <td align="left">unstated-audit-scope</td>
            <td align="left">guarantee conditional</td>
            <td align="left">A supplied rail pin states no account or no rail, so the extract defined the settlement path it reported on. The same "no pin at all" case is <tt>unauthenticated-extract</tt></td>
          </tr>
          <tr>
            <td align="left">countersign-bad</td>
            <td align="left">conditional</td>
            <td align="left">Present payee countersignature failed verify (signature, content type, or payload binding); unattributable, discarded as approval evidence. One verifiable under another key is <tt>countersign-key-mismatch</tt></td>
          </tr>
          <tr>
            <td align="left">carried-key-mismatch</td>
            <td align="left">conditional</td>
            <td align="left">An object verifies under a pinned issuer key but the key carried beside its signature is a different one; the unsigned surface was rewritten, the object stays attested (<xref target="issuer-root"/>)</td>
          </tr>
          <tr>
            <td align="left">boundary-deferred</td>
            <td align="left">conditional</td>
            <td align="left">An unmatched item sits within the declared <tt>clockSkewMs</tt> of the window edge; deferred to the adjacent window rather than reported as a completeness failure (step 5)</td>
          </tr>
          <tr>
            <td align="left">beneficiary-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">A settlement record declares a <tt>beneficiary</tt> and the matched receipt's <tt>payee</tt> differs</td>
          </tr>
          <tr>
            <td align="left">counterparty-unbound</td>
            <td align="left">scope record; verdict and guarantee unchanged</td>
            <td align="left">Neither the manifest names a <tt>payee</tt> nor any settlement record declares a <tt>beneficiary</tt>: ref, amount and currency closed against the payer's account extract, and the counterparty's identity was not bound</td>
          </tr>
          <tr>
            <td align="left">delivery-mismatch</td>
            <td align="left">audit fails</td>
            <td align="left">An attributable countersignature carries <tt>deliveredHash</tt> and it differs from the acceptance-criteria hash of a Trade Manifest the audit did not refuse; both ends are signed (<tt>MAY-T8-11</tt>). Where a stated publisher pin refuses the manifest, its acceptance hash founds nothing and this comparison is not made (<tt>MUST-T8-9</tt>)</td>
          </tr>
          <tr>
            <td align="left">malformed-policy-hash (and its family: malformed-request-hash, malformed-acceptance-criteria-hash, malformed-manifest-hash, malformed-receipt-hash, malformed-prev-receipt-hash, malformed-chain-head-hash, malformed-prev-checkpoint-hash, malformed-ap-two-mandate-hash)</td>
            <td align="left">audit fails</td>
            <td align="left">A hash-shaped claim does not match the 64-lowercase-hex grammar of <xref target="receipt-labels"/>; the claim is named in the code</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section numbered="false" anchor="example">
      <name>Appendix C. Worked Example: A 10.00 TRY Spend</name>
      <t>This appendix is informative. An agent pays 10.00 Turkish lira (TRY)
for a file. Amounts are integer minor units, so the amount is <tt>1000</tt>.
The run used the companion implementation with keys generated for the
run; the keys are not published, so signatures and hashes are not
shown. No real rail was involved.</t>
      <ol spacing="normal" type="1"><li>
          <t>The PDP allows the request (amount <tt>1000</tt>, currency <tt>TRY</tt>, payee
<tt>shop-1</tt>) and the adapter settles it under rail reference
<tt>x402-n-10try-example-0001</tt>.</t>
        </li>
        <li>
          <t>The Receipt Issuer signs a Spend Receipt with these claims
(<tt>policyHash</tt> omitted):</t>
        </li>
      </ol>
      <artwork><![CDATA[
payer=agent-1   payee=shop-1   amount=1000   currency=TRY
manifestHash=null   noManifest=true
x402PaymentRef=x402-n-10try-example-0001
timestampMs=1789400600000   nonce=n-10try-example-0001
prevReceiptHash=null   outcome=settled
]]></artwork>
      <ol spacing="normal" type="1" start="3"><li>
          <t>The rail signs an extract for account <tt>acct-1</tt>, rail <tt>rail-1</tt> and
the one-hour window <tt>[1789400000000, 1789403600000)</tt>, with one row:
ref <tt>x402-n-10try-example-0001</tt>, amount <tt>1000</tt>, currency <tt>TRY</tt>. The
issuer signs one checkpoint for the same hour.</t>
        </li>
        <li>
          <t>A verifier that holds the issuer key and the rail key, and states
that account, rail and window, reconciles them. The result is
balanced under an unconditional guarantee. It carries the scope
record <tt>counterparty-unbound</tt>, because no manifest names a payee.</t>
        </li>
      </ol>
      <t>The same audit was then run against an extract the rail signed with a
second 10.00 TRY row, ref <tt>rail-ref-unreceipted</tt>, twenty minutes into
the window, that no receipt names. The verifier reported
<tt>settlement-without-receipt</tt> for that ref and the audit failed. That
row is the case this document exists to detect: money that left
through the rail without a receipt.</t>
      <t>The same control has also been run once with real money, by a related
implementation from the same author that records a spend as a signed
decision and effect record rather than as the Spend Receipt of this
document. On 6 September 2026 an agent asked to spend 10.00 TRY on
advertising, the policy deferred the request, it was approved under the
operator's account, and the amount was paid by card to the advertising
platform. The next day the payer's bank statement arrived, and its line
for that payment was reconciled against the approved spend: one
matched, none unaccounted for. Two limits apply. The statement was
received as an image rather than as a signed file from the bank, and
the line was transcribed from it, so under this document the result
would be conditional (<tt>unauthenticated-extract</tt>). The line also did not
carry the spend reference, because the platform billed under its own
descriptor, so the match rested on amount, currency and date alone.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9y963bcVpIu+B9PgZF/mFJn0iJ1J3v6DC3RZZWty5Hoctf0
6tMJZoIkSkkgG0CKYsueZ5lnmSebiC8i9o6NRFKUq1avNVNnnTaVidzYl9hx
jy+m02nWV/2yPMjvvF+V9SJ/V87LatV3eUH/eFtcX5Z1n78rqiV/09TzalkV
fdXU+VnT5kcv86NzeqC7kxWnp2358SB/Xi7WS/r6edOW2aKZ18UlDb5oi7N+
umjO2/V0Lk9M5/TE9P79bFH09MT+/f3H0/vPpntPsjl9cN601wd5VZ81WbVq
D/K+XXf9/v37z+7vZ0VbFgd5V86zq6b9cN4269VB9qG8pn8tDrI8n9ok8HfB
E8RfrSwNf6+aZTW/xp/vn788Ocm6nhb8HwX9qsTbyqy7LNr+P/5z3fRld5Cf
FcuuzFaVvKBv5vbfql7YC7qm7dvyrJN/XF+Gv+fNJe9jlxXr/qJpMQb9/5wW
SEMf7+bPd/MXvDn4ULbs+LL8kD8vavdF054f5H85fnf0r/nJ8U+v3/z85s8v
859fvnp5cvwif//y3U/HJy/x4LxZ1z1v4Mm6pY3BZ+UlHeJBXu7iFP4PPYVd
mlpWN+0lHerHkif27ofn+3t7z/TPx/sPHtqfTx881T+fPHz2QP98ev/Bvv25
98SeffrgWfj04d59+/PJ00f257OH9opn9x/txz9t3GdPH9tgz5493I9/4oHn
xy9++fnN6+nzH4+f//T2zcvXJwdYpNFyoMKLcv5h1VS097Sjq2Z+kf9a9XXZ
daVQ+Elb1N2KKKqeX9/BEPGI+H/T8SO68ZgiQcuciva87A/yi75fdQfffXde
9RfrU97473AU86IuaZBpsey/01P57nTZnH53WXR92X7Xrcr5d6MXKCyOrtHu
5SLj65Ke5BO3dXvhHOjDPb+LL8Z37yA/qvOj9aLq85+L67KVK8/Xado3U/xB
15wou52X/017R18XfVvMP5TtblX2Z7t0JWgXR/fnO7fCkx/fHR+dvB8nkpML
Yih9/rpoW+xd9/81QuixgE6pIM9/+uX4x5+Pf335+sX06JcXLweny4fazi+q
vpz367aUU+VTrurzwNHzF+WyPBdOz/fkZU0zKOb875u259Vu/tO6vFiWV8QW
Bxv0qmr/Vmx+rb/8cTf/vmo/XDTL/xr87sey/pB+5yXGoz9CJx/CJKYFr3xa
uA1huvmemOmPb37+P6d/OXqe7t5fyrY6q4rTZZnbDag/lm0nW8Uysl3ctENf
s87wo5Nd+na56Ae/GHysD7/Zzd/3JR3f4Ok3bVX6b/wuPv0ju3iqc51+DHsy
hbQl0R73pMN+Hp0cv58enbwdkCJ2EDxYaCt/2zYkU5tlvkMP371hH1/QPtIC
usEiXxQfq0V+1F0Qu4rf/x0Ec9FfLm29PN606Fc0wr8+vL+fruUTf8Ic8w3p
UbTPdGuKdoHbhctTl/30NfiLqVVbyARSnkfLfyAxvsAm3oadXF1d7fLPMHV6
4ujt/thu28v9Vr/d37LVmMufmubcyL2aB5afzukRKW+j0ypW+9OVvgpTow/A
yohk5lgcT/ZP717+6U/pdE/aakWvPWZNJj+aQ6chFnUDTbzczf/UVufnA5p4
SUw5fm4z3kIIVVGfY5qrYkUk/F2PWfxHybPYZWKgX709ev7yzc8v0+m+X19e
FvmizIuW+PplSVtVTPLzsqE/24r+pE1YkYJIC67ysnf/LJZVX9ywrJ936dDm
FWmsg4X9TCIj+UrWtvfw2UP651+Ofvn+6PUmkebvT47e/WSKPhEZqwz58ae+
rDuazQ2E8JdifVowk+tKZpj/GF78EYNOeWZTUsLbD1PV08E43j//8d2b5z+l
q3iz7klolsQs6wULLZFgPOHqv0q6/SKmVG4tSrZr6PyW1/mb065sP9Ijx2dn
xOxv4tNES+/nF20z/zCkpkvaAv+V34Enf2QHOhlsWq6mjayMWCtWxjvw6ujd
//zleKi6NJcrMsTqecnX+Kyie9Kc5e+r8zqsP1pyA0tt65L/vJsf0Q2i93f5
q6L9z/UGd/1zUzTE4hakNWw+9nfvw6UMNi26/yw+kgyxJSYEcfT85Ghw8WTV
L4ijdBvrflWQYK9LVlj1T2YlpP+z3O7bZnnDfpB4/aFol2o/xV04aS79F37d
f0hrPcNYU5KAxbTDYpIV//jm7c/Hfx2cv5jIxGKWuaOF9/O2LGu+EoPbHTT3
aj41o/6HZXN1EzmQnvtjs9pc/vOLtur6ZsUi1j3wdzOCC4wljGDz8HH23x8N
OMExSfuSV/6u/M911ZYi2cJq7ZBZmyXBS3KEeYKxj9ShccNO0K0gWjg6LYa8
4GhZETVcnxdt/PbvVqsKGinqUTz96UKnPy11vbBt3n4/JIqaZAuTBB3xsikW
xiBposYbSC/psUu8NV1PRoepXcxEbtiD97ukwF8M1k/a5EdSduIXccPeNx+a
ZfNxuGF1T2/z3/3d23VZXUw7GZA4adX305Ws3jNRtv5IA93iJXhXTo960u16
EAJROFmC13yLxCUWiOxo3jbEOY6WfPVIxtMPeyW6f7zJuG07bm01lo+f7pX7
Dxd7p/vPnu3tL57O956RnvZsvl8Wz84enj179ODpfP/ZYrtdyVZl2JZgXb4/
od189fL1n8Y3831PP7tUHuTu1wEuY1Wvm3UnPKskjYM5cbyu2O//X25lZ7ui
2zidTjP+P3lx2jFx91l2clF1OdH1GtezWJCUFTcVW6gwOFemuqtEB5MQPed0
XS0XXbZe0QnwgZXT5mzaX5BB1vb5jycnb3NiqxO2CfA4yQl268zZQumuO2IJ
3W7+a5mJXk5skp64XvW0hGJ1wSyFlKeunJN1vLBZsDvV+4NNx8/WHR9+wWYd
acOviro6IxrKd4pchBtpKmckOk5LWkVY090J/eKtOGWDJH/Lvq38ik6J9Oqz
Yr3s6b/1NT+aOKt57Odv3h9/9/zXk3y+LKrLrCMNu+q6Nb2ODoNeV+TntCsL
/z4aoC2q5bT8hBMYLGhXzueyWizIYM6+YSuubRbKMD9/U/E/f8+yI9LhyZKp
iO2ynbdcVudgFjtHL+/aCVX1x2bJemdV5/Suj+VyQqdEOl9OOs+Hss/6aAJ3
E7IO5rv0zXVel/QbOkU6qFVxSjPrr1nPk5OgI6HFqP6b0VNVm/txyGpoSV7Q
daMnaf8q3ns7pS7v1vOLvOgCcWSfP7NR+/vv2Bix+b7t8huNxvzzZ/oP/eSS
j7rqsxXxx+qU+YEN695IzIRUMCZPemJOZ0sL6Yl5gJr6hmwMYtdFe521JeuB
fSdnxDTLrLzL16S90xb2+ryS0yVb2sSmdplvL2jPeg4LdBn/ll7Oyl7TdkIN
ciAkJ5oV72zzgWweOuhfLwomFzrsDsRb8aXCm8hIK1tcvnv3cBHzJbtC7907
IIq6VOUSjlh+iN7ZXdEcaXJ3rmhve77SHUiVrlBzRe88vdbYAy3uvCCuRgRO
N+xCbgVWnF3xdE6vaU05jVbmKv7Lxf+4k58QNchbuvyCKClfVpeVbVXvWUgG
PsCTKC93yfofTuAOL5OJy27RS96hls5cNjYriP3AQD3EY7L8RUND1g1tV2JZ
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
9EyMQgRKd0Tc9bjKxZCKNme+/lhsN2vmavQIvzXlkTEshVnEpLJSzkLoncbF
l44IZQSRs9Bg4YjqQMFjPHkDEpxSZjubz8mC6E9fq1jSSfJ2rbPh8ZI06aZl
jQRWOVGIYmmp50nQ+rQWbTmKha6KGfE7rLA8Ci3bLteaRLoNLPJZVuZnmJN5
aCiMZImFiwW8HW7zNa4XvgPgsUFzXunfbF+sdppB84Sdaso/EpUjO9ZwQkBb
ik+wk0N7qd6MpNFaDPiIRgnDkAR/0kClV2SKV06vPVK/hA4+NKz4h5Zyp+Gp
2V52lvl4PJgss2V3sMgn7eGsPe70u8NRf9npjtrDwXAxzrPRbDlvt8eD3ry7
nA/zyaK3HGSd9mx6RicP1YBR51FJmg5V5kSSAfUcGGoMudwBueHLDSIycSqM
bCxtGnQcbhUd6tyFiLJp+N0DPUIeqhUquatT6OMQ4pMmZlYpU+WNx8Iq0hCU
zXI3KLiRBU3kanSvsDpZ9ymzNpD1EPSWxEIkYsLoONxDnpRDqvsM4BGPXHZQ
aQg3xJJY5uTEhaza91eY+xHNOqm04genmAhMcTevmd9QqY4Nbz8uNc4VCk0d
RerhcJHlzZgNFK3ZYp8M6xaiY5i9mk177nsPTwGnFgeSQn8KziwkKR/80CrA
5BPmrrNVykDsbHeNMWuPHhgJlJrNZRilSrp5sSg1x0GUyokMGaW4V8VNfl+U
+QONDnSQiilAK02HBpWRxkzgNTpvIiiIr8pPcaKrnOuGd6flR7lF6Rwp+8UN
hPTD4cdw0QrblVmu/Dxdl/syLBk+5YXXu1inqluBxDSya5ljp9NJh1OFYSGw
8XW+vVnlPF8hTlKGHC/HejbLEk4P9Ba7jFRoSvUmR1cHNtExc87nWxitatmV
Xb0tir6wfTuga07QPTzgw/nNqA06ra/sj18yIypYFGSXhdW3Jr1cSvUL1AEe
5NH/qbBTymimfjPqG7RLBDxApoijJ1k4if68mbXiQwr2mXDplZvkCW81ev4T
yeooAvSeSerLQG+WhrP4mk0COg7oxuO1LlOCqbWEsXBBbE+TH6GXn5Cgev72
ksbyZ4Iel0QnLx7rLV/rGAgvXqhyeJYtKWrZEkAXnrmTJD1ulVYyGI1wBcB/
sBlSEwMbVQC/hHogF0F+l0uCtURcCIhTJCCmlVV8BK/yA3+9ZAzCu7eXr/6Y
IrsC/WSpDq4Wb8D44MxR2pFX9zpBkhUSs4GnrWE4Yc5/hKlf44vkPt9hHCHt
nrTpfKGLjB4vfLDXL+XOPf+EBZOYEtTPPmibcfYWW2LzmMmEqlu6xLwrrp9K
zTlCidDb63Shr7fiyqyDB3l7qkwhSxbKIowUmne+2oIVJIOC9OU4FhkSrItR
2AgguGk3ibNHWE+Gf/hcBq0lkyAeiDKGxlYJeckFFwgoJJvlwmYM+aEgNCUM
Zrl97HB67O7zrfVjoJftk/5Ju17ed4fO92kI76LvgYbAsVAhdrILdwxCRrkK
ZVrgD8Txk5GTSg5+5ykr1Hj4jYuQpdTZwC+U6X0Wy9K08kJBYAR7RNo+Ssg6
RDgxkw2Mw349ZzjOjm4kWMRBjaQzmHbYzt8vHlxm4ix4tGMYQFjkyFJGVOna
lPbJ5KRtSjbg1gUGch7GvXTtk07vpMPoQmsSgmYCg4zJ7cMbrWgKSehF5t6R
9wqbdLUKTYmn0i8SufvRsQNjAnf85x83q7134F7sKQT2M3wsOXqlQYiP+TEy
1+kna1hRzkhirc7HYrGH9Rlj5E6QaVbHgA7LDM5st78ThLdGNdCvvOGpriC3
fLUjbE4CYRpUDvEyoVKNgZVxiIPEtiICZqynut+E/DydI668ybkeSx2V4Lpg
OOEUr44oAFSGK4xPrVEwK3OGKMTeZBARhicKNO35+dXV88srzUvGzrPzeke4
GII7gu1DuxbNJkJXuNLly5fLK3jw61dv/hWDYVfhkmlqqHjNzCn1IcpzCkzz
ORwsdEXKAzjhuEDa61MRBXy2y84qTqBPkvBYfeZUhpN5Kjl8FNZPgruPYlTn
iz/DJkBuN2EhxIBSJi/CykIqI+jYH+E/MI8EvHl5dfUu4Zdx1judNrwDnVjn
Hzbgv1HEES3OHC4ozityIlP0ly/wb32MXAyEPZrwpHxfYYLHoIp24hRoUiMT
ErZQZVA8wV5QhxO+kMJ3qLWvRX3v0uueO258v9tBS2K8cuTtL884tqi+Zxbz
hvPULnAvoeetJVo8zXS2aFLfnmBSwlU6dPZTT1Jj1sYJPzOd4XjAEr+DAfvu
HJZpen71DppJF57SoeOdbwWlg4cLnUHgSeTYxUyVHhDGW2yVM+TzHK+j4O7d
wR2Df+Zjtp/BnRNnGOMq25vUb6MvX/5w/tN352/gR3XzlQl+UI+ElJdS8hFP
XE/QmMWQIE+LFchLiSuTbzvoTGuPy/k1eOo3aX6XSi1AqrotsKkuXr5/e/ED
DQBfSJzX8lookJM5z3dRtIMkK7DqB69aS9RNKLXvt9kWUZ9pVv4l+0j1mrD1
kVXWDMHr8/f//tPzS/hd3UaOZRBTCeHqb/vvHFF0eruhA+J8vkPW09uCWC3I
+8VVd35xdU5Yc27I9Qam/zNPQr0Z0IqXb9/9+PxP0AgvywSn/UJULVLW4PPf
MzJy/Phslt2kbHml0amnXfUwL2jUd+c4vlJcqW84W4soLEhMK0i/paOQohDH
HWqxSVUFHJwompg6TpgwhGxDFPgaKoZ9QVVcwmnDkCoEXjP/B6u8cLjnJs/B
I86lx1I6CI1IKQkjZV0cmc/Rws2lCkNqSvARfhVok3k1sHGXK4voJiKjXakA
SQ9Jdmyg77PPJmgFfTj1C95wDKq14C2xQn/hs7tG+o21ufPdRzUlGmgVsQmZ
gNLwIWORm4gUkGSYdoXpOXkhIksylhWZceDsIelPUKsc3OA+ciwCf5FpWUQj
hItLpZo/rYt9MUqHVyBliY/q+epjXA4bKTjyo8NYAYp+SWWhU99ZX1cgfKWY
Rgp9Ja7LckQcx3Y+8qUFFlRizzNrlgVTN2dNBfS0OCRgbJJQDF8XNV+7pijk
xiuEAKRwZw8Pc148NjqaMV5iiB6kmtNQHkwjMLi7wSwXZjBVnRgj60HPRepk
4EDnDX6zz69XOZbVCqMDZgoKhKwyWvqHn56//PH5z6/efJ+e//T9K3J4cPCi
j1UnqiiNF7jx8urMX9KiIm+vdEHZ5ALX4q+/EnyEaHb5qELDeQcLXt00fjoV
7HwCP5kj+IsNC7dRkabm6qx/x5leHKD3+S3eGs6v/JvOF45cJkfvz68u4Y5m
euZP1GJ7c71Z/TUNHkawinRxpIglmOfvXr3/4eXbH/8j/cP5BVhEX4AUlTlL
PRv2aM1+7dPS2SfhJpCK8dt8l6HH1lIJ4JKlMklaVjKlLceXeb4KEOos9TyZ
5EI2xXMwlCHYWz1oJfKla8hv7ECzQzw05HyutfQgUycN7Hh+d+Ztjncu9fgL
dQf+HhX3WutZYw215LDD41yapglX3H8DJ6ZuQa5+/3LK98d88ezJEpZV/gQc
0j/A8QM/9fN1tl0usTrpPhdTW0G2+8I1U7XhS64dkY4G95GREUuSWzMVQGt6
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

-->

</rfc>
