<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.3.12) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc tocindent="yes"?>
<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-dogru-cedulon-01" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Cedulon">Cedulon: An Audit Layer for Agent-to-Agent Commerce</title>

    <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="August" day="26"/>

    <area>sec</area>
    
    <keyword>Cedulon</keyword> <keyword>agent</keyword> <keyword>receipt</keyword> <keyword>policy</keyword> <keyword>SCITT</keyword>

    <abstract>


<?line 131?>

<t>This document defines the Cedulon Protocol, an audit layer for
agent-to-agent commerce. Payment rails such as HTTP 402 flows (x402) and
mandate protocols (AP2) already move value. They do not, by themselves,
produce a fail-closed policy check and a signed spend receipt that a
verifier can reconcile against a rail extract. Cedulon specifies a Trade
Manifest (signed offer before payment), a Policy Decision Point with
default deny, a Spend Receipt (COSE/CWT claim set after a gated payment),
epoch checkpoints, and rail-extract reconciliation. The reconciliation
shows that no settlement on the extract lacks a receipt and no settled
receipt is absent from the extract. That result is unconditional only
when the verifier pins the rail key out of band and states the period
under audit; otherwise the document requires it to be reported as
conditional. It also defines a Dispute Evidence Bundle (evidence, not
an award) and optional SCITT anchoring. Cedulon is not a competitor to
x402 or AP2; it sits above them.</t>



    </abstract>



  </front>

  <middle>


<?line 149?>

<section anchor="introduction"><name>Introduction</name>

<t><em>Note to Readers:</em> This document is submitted as Informational. The
author's eventual intended track, if the work is taken up, is a
Standards Track profile of COSE <xref target="RFC9052"/> and CWT <xref target="RFC8392"/> for
agent-spend receipts. This -01 does not claim IETF consensus.</t>

<t>Agents can now pay. Open HTTP 402 protocols <xref target="X402"/> attach
stablecoin settlement to ordinary requests. Card networks and
processors issue agent-scoped tokens. Google's Agent Payments
Protocol (AP2) <xref target="AP2"/> binds user intent to signed mandates.</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?" Without that layer, a prompt-injected or
looping agent can drain a rail that has already accepted a valid
signature. A counterparty can ship the wrong artifact. A transparency
log, if used at all, is proprietary.</t>

<t>Cedulon fills that gap. It 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
(<spanx style="verb">MUST-T8-custody</spanx>).</t>

<t>The control is an old one. Reconciling an internal ledger against an
external statement is what double-entry bookkeeping <xref target="PACIOLI"/> made
routine, and signing the artifacts on both sides is Grigg's
triple-entry idea <xref target="GRIGG"/>. Neither is claimed here. What this
document contributes is an open wire profile for that control in a
setting where the parties are software: a COSE receipt shape, an
extract shape, a checkpoint chain, and a verification algorithm
precise enough that two implementations reach the same finding on the
same evidence. The novelty is interoperability, not the idea.</t>

<t>Neighbor drafts are complementary, not substitutes.
draft-bates-atp <xref target="BATES-ATP"/> covers tamper-evident causal lineage as
a signed DAG. Cedulon is the completeness layer: a spend that never
produced a receipt is visible when an authenticated rail extract is
reconciled (<spanx style="verb">MUST-T10-1</spanx>).</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>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>Spend Receipt:</dt>
  <dd>
    <t>A signed statement produced <strong>after</strong> a gated payment attempt. It
binds payer, payee, amount, currency, policy hash, <spanx style="verb">manifestHash</spanx> or
an explicit <spanx style="verb">noManifest</spanx> flag, rail payment reference, <spanx style="verb">timestampMs</spanx>,
nonce, <spanx style="verb">prevReceiptHash</spanx>, and <spanx style="verb">outcome</spanx>.</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 <spanx style="verb">requestHash</spanx>, <spanx style="verb">policyHash</spanx>, <spanx style="verb">expiryMs</spanx>, <spanx style="verb">nonce</spanx>, and
<spanx style="verb">singleUseId</spanx>. 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>
</dl>

</section>
<section anchor="architecture"><name>Architecture</name>

<t>Cedulon has three control-plane objects and one optional log:</t>

<figure><artwork><![CDATA[
  Principal --policy--> PDP --allow/deny--> x402/AP2 rail
                              |
                              v
                      Receipt Issuer --> Spend Receipt
                              |
                              v
                      Anchor / SCITT (optional)
]]></artwork></figure>

<t>The payer agent never talks to the rail except through an adapter that
calls the PDP first (<spanx style="verb">MUST-T5-1</spanx>).</t>

<section anchor="policy-decision-point"><name>Policy Decision Point</name>

<t>The PDP evaluates structured fields only (<spanx style="verb">MUST-T1-1</spanx>): amount,
currency, payee, tool identifier, nonce, optional manifest hash, and
evaluation time. It applies limit, velocity, and scope checks
(<spanx style="verb">MUST-T2-1</spanx>, <spanx style="verb">MUST-T2-2</spanx>). If the PDP is unreachable, uninitialized,
or throws, the result is deny (<spanx style="verb">MUST-T2-3</spanx>). Denied attempts do not
increment success counters (<spanx style="verb">MUST-T2-4</spanx>).</t>

<t>An allow produces a Decision Token whose <spanx style="verb">requestHash</spanx> covers six
fields: amount, currency, payee, tool, nonce, and <spanx style="verb">manifestHash</spanx>
(<spanx style="verb">MUST-T3-4</spanx>, <spanx style="verb">MUST-T6-1</spanx>). The token is a COSE_Sign1 object
(<spanx style="verb">MUST-T6-4</spanx>), is single-use (<spanx style="verb">MUST-T6-2</spanx>), 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 a canonical encoding
(<spanx style="verb">MUST-T4-1</spanx>). Verifiers reject bad signatures and byte mismatch
(<spanx style="verb">MUST-T4-2</spanx>).</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 (<spanx style="verb">MAY-T4-6</spanx>). This document does not operate a Transparency
Service.</t>

</section>
</section>
<section anchor="trade-manifest"><name>Trade Manifest</name>

<t>A Trade Manifest is the commerce analogue of a promise: it is issued
<strong>before</strong> value moves. It is conceptually symmetric to a later Spend
Receipt (promise then proof), and it <bcp14>MAY</bcp14> carry an AP2 mandate hash so
that user intent and the Cedulon offer stay linked (<spanx style="verb">SHOULD-T8-5</spanx>).</t>

<t>A Trade Manifest <bcp14>MUST</bcp14> bind all of the following (<spanx style="verb">MUST-T8-1</spanx>):</t>

<t><list style="symbols">
  <t>goods or service description</t>
  <t>price (integer minor units, encoded as a decimal string matching
<spanx style="verb">0|[1-9][0-9]*</spanx>)</t>
  <t>currency (ISO 4217 alphabetic or a documented token identifier)</t>
  <t>acceptance-criteria hash (SHA-256 <xref target="RFC6234"/> of the exact delivery
bytes or of a declared schema instance)</t>
  <t>cancel condition (opaque string agreed by the parties)</t>
  <t>expiry (POSIX milliseconds, <spanx style="verb">expiresAtMs</spanx>)</t>
</list></t>

<t>It <bcp14>MAY</bcp14> include <spanx style="verb">ap2MandateHash</spanx>. The corresponding CBOR label is
always present; a missing mandate is encoded as CBOR null.</t>

<t>The manifest is COSE_Sign1 <xref target="RFC9052"/> over a deterministic CBOR claim
map (<xref target="cose-profile"/>). <spanx style="verb">manifestHash</spanx> is the SHA-256 of the signed
COSE bytes (<spanx style="verb">MUST-T8-7</spanx>). A spend bound to a manifest <bcp14>MUST</bcp14> be denied
if the requested amount or currency differs from the manifest
(<spanx style="verb">MUST-T8-2</spanx>) or if the manifest is expired (<spanx style="verb">MUST-T3-3</spanx>).</t>

<t>A spend that is not bound to a verified manifest <bcp14>MUST</bcp14> be marked
<spanx style="verb">noManifest</spanx> on the receipt and <bcp14>MUST</bcp14> still pass limit, velocity, and
scope checks (<spanx style="verb">MUST-T1-2</spanx>). An implementation <bcp14>MAY</bcp14> refuse all
<spanx style="verb">noManifest</spanx> spend (<spanx style="verb">MAY-T1-4</spanx>).</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 (<spanx style="verb">MUST-T4-3</spanx>, <spanx style="verb">MUST-T4-4</spanx>, <spanx style="verb">MUST-T4-7</spanx>):</t>

<texttable>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>payer</c>
      <c>Payer agent identifier</c>
      <c>payee</c>
      <c>Payee identifier</c>
      <c>amount</c>
      <c>Minor units as a decimal string <spanx style="verb">0|[1-9][0-9]*</spanx></c>
      <c>currency</c>
      <c>Currency identifier</c>
      <c>policyHash</c>
      <c>SHA-256 of the canonical policy document (lowercase hex)</c>
      <c>manifestHash</c>
      <c>SHA-256 of the signed manifest COSE bytes, or null when <spanx style="verb">noManifest</spanx> is true</c>
      <c>noManifest</c>
      <c>Boolean; <bcp14>MUST</bcp14> be true if and only if <spanx style="verb">manifestHash</spanx> is null</c>
      <c>x402PaymentRef</c>
      <c>Rail payment reference, or null</c>
      <c>timestampMs</c>
      <c>POSIX milliseconds</c>
      <c>nonce</c>
      <c>Unique spend nonce; at least 128 bits of randomness; unique in the issuer scope</c>
      <c>prevReceiptHash</c>
      <c>Previous receipt hash, or null for the first receipt (<spanx style="verb">SHOULD-T4-5</spanx>)</c>
      <c>outcome</c>
      <c><spanx style="verb">settled</spanx> or <spanx style="verb">aborted</spanx></c>
</texttable>

<t>A receipt with <spanx style="verb">outcome</spanx> = <spanx style="verb">settled</spanx> <bcp14>MUST</bcp14> have a non-null
<spanx style="verb">x402PaymentRef</spanx> (<spanx style="verb">MUST-T4-7</spanx>). 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><spanx style="verb">receiptHash</spanx> 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 (<spanx style="verb">MUST-T4-2</spanx>).</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 (<spanx style="verb">MAY-T8-9</spanx>). The profile uses a <strong>detached</strong>
COSE_Sign1 <xref target="RFC9052"/> whose payload is a CBOR map with a single
private-use label:</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>CBOR type</ttcol>
      <c>-70401</c>
      <c>receiptCose</c>
      <c>bstr (exact issuer COSE_Sign1 bytes)</c>
</texttable>

<t>The countersignature uses the header profile in <xref target="cose-profile"/>
and content type <spanx style="verb">application/cedulon-countersign+cbor</spanx>.</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 <spanx style="verb">receiptHash</spanx> after issue, breaking
the receipt chain. A detached Sign1 keeps the issuer bytes
stable, reuses <spanx style="verb">kid</spanx> 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 (<spanx style="verb">MAY-T8-9</spanx>). If a countersignature is present, a
verifier <bcp14>MUST</bcp14> reject it when the signature fails, when <spanx style="verb">kid</spanx> or
content type does not match the configured payee key, or when
label -70401 is not the issuer COSE bytes (<spanx style="verb">MUST-T8-8</spanx>). 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 (<spanx style="verb">MUST-T8-4</spanx>).</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 (<spanx style="verb">MUST-T4-1</spanx>).</t>

<section anchor="receipt-labels"><name>Claim labels</name>

<t>Registered CWT claims <xref target="RFC8392"/> are not required in -01. Cedulon
uses CWT private-use integer labels less than -65536 so that the
profile does not occupy the 100-110 registry range.</t>

<t>Receipt labels (<spanx style="verb">MUST-T4-3</spanx>, <spanx style="verb">MUST-T4-4</spanx>, <spanx style="verb">MUST-T4-7</spanx>):</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>CBOR type</ttcol>
      <c>-70001</c>
      <c>payer</c>
      <c>tstr</c>
      <c>-70002</c>
      <c>payee</c>
      <c>tstr</c>
      <c>-70003</c>
      <c>amount</c>
      <c>tstr</c>
      <c>-70004</c>
      <c>currency</c>
      <c>tstr</c>
      <c>-70005</c>
      <c>policyHash</c>
      <c>tstr (lowercase hex SHA-256)</c>
      <c>-70006</c>
      <c>manifestHash</c>
      <c>tstr / null</c>
      <c>-70007</c>
      <c>noManifest</c>
      <c>bool</c>
      <c>-70008</c>
      <c>x402PaymentRef</c>
      <c>tstr / null</c>
      <c>-70009</c>
      <c>timestampMs</c>
      <c>uint</c>
      <c>-70010</c>
      <c>nonce</c>
      <c>tstr</c>
      <c>-70011</c>
      <c>prevReceiptHash</c>
      <c>tstr / null</c>
      <c>-70012</c>
      <c>outcome</c>
      <c>tstr (<spanx style="verb">settled</spanx> / <spanx style="verb">aborted</spanx>)</c>
</texttable>

<t>Checkpoint labels (<spanx style="verb">MUST-T11-1</spanx>):</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>CBOR type</ttcol>
      <c>-70101</c>
      <c>epoch</c>
      <c>uint</c>
      <c>-70102</c>
      <c>startMs</c>
      <c>uint</c>
      <c>-70103</c>
      <c>endMs</c>
      <c>uint</c>
      <c>-70104</c>
      <c>receiptCount</c>
      <c>uint</c>
      <c>-70105</c>
      <c>chainHeadHash</c>
      <c>tstr / null</c>
      <c>-70106</c>
      <c>totals</c>
      <c>map tstr -&gt; tstr</c>
      <c>-70107</c>
      <c>prevCheckpointHash</c>
      <c>tstr / null</c>
</texttable>

<t>Manifest labels (<spanx style="verb">MUST-T8-1</spanx>):</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>CBOR type</ttcol>
      <c>-70201</c>
      <c>description</c>
      <c>tstr</c>
      <c>-70202</c>
      <c>amount</c>
      <c>tstr</c>
      <c>-70203</c>
      <c>currency</c>
      <c>tstr</c>
      <c>-70204</c>
      <c>acceptanceCriteriaHash</c>
      <c>tstr</c>
      <c>-70205</c>
      <c>cancelCondition</c>
      <c>tstr</c>
      <c>-70206</c>
      <c>expiresAtMs</c>
      <c>uint</c>
      <c>-70207</c>
      <c>ap2MandateHash</c>
      <c>tstr / null</c>
</texttable>

<t>Decision Token labels (<spanx style="verb">MUST-T6-4</spanx>):</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Claim</ttcol>
      <ttcol align='left'>CBOR type</ttcol>
      <c>-70301</c>
      <c>requestHash</c>
      <c>tstr</c>
      <c>-70302</c>
      <c>policyHash</c>
      <c>tstr (lowercase hex SHA-256)</c>
      <c>-70303</c>
      <c>expiryMs</c>
      <c>uint</c>
      <c>-70304</c>
      <c>nonce</c>
      <c>tstr</c>
      <c>-70305</c>
      <c>singleUseId</c>
      <c>tstr</c>
</texttable>

</section>
<section anchor="cosesign1-headers"><name>COSE_Sign1 headers</name>

<t>The protected header <bcp14>MUST</bcp14> be a deterministic CBOR map containing
(<spanx style="verb">MUST-T4-1</spanx>, <spanx style="verb">MUST-T4-8</spanx>):</t>

<t><list style="symbols">
  <t><spanx style="verb">1</spanx> (alg) = <spanx style="verb">-19</spanx> (Ed25519, <xref target="RFC9864"/>; the generic EdDSA value
<spanx style="verb">-8</spanx> from <xref target="RFC9053"/> is deprecated for this profile)</t>
  <t><spanx style="verb">3</spanx> (content type) = a tstr that distinguishes the payload:
<spanx style="verb">application/cedulon-receipt+cbor</spanx>,
<spanx style="verb">application/cedulon-checkpoint+cbor</spanx>,
<spanx style="verb">application/cedulon-manifest+cbor</spanx>,
<spanx style="verb">application/cedulon-decision+cbor</spanx>, or
<spanx style="verb">application/cedulon-countersign+cbor</spanx></t>
  <t><spanx style="verb">4</spanx> (kid) = bstr, mandatory. The profile computes <spanx style="verb">kid</spanx> as the
first eight bytes of SHA-256 over the issuer's SubjectPublicKeyInfo
DER. 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 <spanx style="verb">kid</spanx> does not match
that key.</t>
</list></t>

<t>The unprotected header <bcp14>MUST</bcp14> be empty. The payload <bcp14>MUST</bcp14> be the CBOR
encoding of the claim map. The signature is Ed25519 <xref target="RFC8032"/> over
the COSE <spanx style="verb">Sig_structure</spanx>
<spanx style="verb">["Signature1", protected, h'', payload]</spanx>.</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
(<spanx style="verb">MUST-T6-4</spanx>).</t>

<t><spanx style="verb">requestHash</spanx> <bcp14>MUST</bcp14> be the six-field hash defined for the PDP
(<spanx style="verb">MUST-T6-1</spanx>). <spanx style="verb">policyHash</spanx> <bcp14>MUST</bcp14> be the SHA-256 of the canonical
policy document the PDP evaluated. <spanx style="verb">expiryMs</spanx> is a Unix time in
milliseconds after which the token <bcp14>MUST</bcp14> be treated as expired
(<spanx style="verb">SHOULD-T6-3</spanx>). <spanx style="verb">nonce</spanx> is the request nonce. <spanx style="verb">singleUseId</spanx> is
the identifier consumed on the first settlement attempt
(<spanx style="verb">MUST-T6-2</spanx>).</t>

<t>A party that accepts a Decision Token <bcp14>MUST</bcp14> reject it if the
signature fails, if <spanx style="verb">kid</spanx> does not match a configured PDP key, if
the content type is not <spanx style="verb">application/cedulon-decision+cbor</spanx>, if
the decoded claim map does not match the presented claims, or if
<spanx style="verb">expiryMs</spanx> is in the past (<spanx style="verb">MUST-T6-5</spanx>).</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 (<spanx style="verb">MUST-T10-7</spanx>).</t>

<section anchor="record-schema"><name>Record schema</name>

<t>Each settlement record <bcp14>MUST</bcp14> contain:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Type</ttcol>
      <c>ref</c>
      <c>tstr (rail payment reference)</c>
      <c>amount</c>
      <c>tstr matching <spanx style="verb">0|[1-9][0-9]*</spanx></c>
      <c>currency</c>
      <c>tstr</c>
      <c>timestampMs</c>
      <c>uint</c>
</texttable>

</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 <spanx style="verb">[windowStartMs, windowEndMs)</spanx>.</t>

</section>
<section anchor="authentication"><name>Authentication</name>

<t>The mock rail in the companion implementation signs the extract with
Ed25519 over a canonical encoding of the scoped body. A verifier <bcp14>MUST</bcp14>
obtain the extract from the rail or from a signature the rail
published (<spanx style="verb">MUST-T10-7</spanx>). 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 rather than
against any key the extract carries (<spanx style="verb">MUST-T10-8</spanx>). A verifier that
holds no such key <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
(<spanx style="verb">MUST-T10-9</spanx>). 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 <spanx style="verb">trust-key-unreadable</spanx> 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 an extract that does not carry a verifiable
signature is <spanx style="verb">unauthenticated-extract</spanx>, 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. -00 defined only the first case, and readers of -00
should note that this revision makes the pinned case fail closed.
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
<spanx style="verb">timestampMs</spanx> falls outside <spanx style="verb">[windowStartMs, windowEndMs)</spanx> as
<spanx style="verb">extract-scope-mismatch</spanx>, identified by that record's <spanx style="verb">ref</spanx>
(<spanx style="verb">MUST-T10-10</spanx>). 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 (<spanx style="verb">MUST-T10-11</spanx>). 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 states no period leaves the extract free to define
one, and an extract that reports on a millisecond balances as easily
as one that reports on a month. Pinning a key establishes who signed;
only a stated period establishes what the signature had to cover. A
verifier that has not stated the period under audit therefore <bcp14>MUST</bcp14>
emit <spanx style="verb">unstated-audit-window</spanx> and <bcp14>MUST</bcp14> treat the guarantee as
conditional (<spanx style="verb">MUST-T10-15</spanx>), whatever else verifies.</t>

</section>
</section>
<section anchor="reconciliation"><name>Reconciliation and Epoch Checkpoints</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
(<spanx style="verb">MUST-T10-2</spanx>).</t>

<section anchor="checkpoint-claims"><name>Checkpoint claims</name>

<t>An epoch checkpoint <bcp14>MUST</bcp14> be COSE_Sign1-signed with the header profile
in <xref target="cose-profile"/> and <bcp14>MUST</bcp14> bind all of the following
(<spanx style="verb">MUST-T11-1</spanx>):</t>

<t>epoch, <spanx style="verb">startMs</spanx>, <spanx style="verb">endMs</spanx>, <spanx style="verb">receiptCount</spanx>, <spanx style="verb">chainHeadHash</spanx>,
<spanx style="verb">totals</spanx>, and <spanx style="verb">prevCheckpointHash</spanx>.</t>

<t>The checkpoint window is half-open <spanx style="verb">[startMs, endMs)</spanx>
(<spanx style="verb">MUST-T11-7</spanx>). <spanx style="verb">receiptCount</spanx> <bcp14>MUST</bcp14> equal the number of receipts
(settled and aborted) whose <spanx style="verb">timestampMs</spanx> falls in that window.
<spanx style="verb">chainHeadHash</spanx> <bcp14>MUST</bcp14> equal <spanx style="verb">receiptHash</spanx> of the last receipt in that
window, or null if the window is empty (<spanx style="verb">MUST-T11-2</spanx>). <spanx style="verb">totals</spanx>
<bcp14>MUST</bcp14> sum only receipts with <spanx style="verb">outcome</spanx> = <spanx style="verb">settled</spanx>.</t>

</section>
<section anchor="genesis"><name>Genesis and continuity</name>

<t>The first checkpoint in a presented chain is the genesis checkpoint
of that chain. Its <spanx style="verb">prevCheckpointHash</spanx> <bcp14>MUST</bcp14> be null. Epoch numbers
<bcp14>MUST</bcp14> be consecutive integers. Adjacent windows <bcp14>MUST</bcp14> satisfy
<spanx style="verb">next.startMs = prev.endMs</spanx> (<spanx style="verb">MUST-T11-8</spanx>).</t>

<t>A later checkpoint that omits a prefix of earlier epochs (prefix
deletion) is detectable only if an external witness (transparency
log) has recorded the missing prefix (<spanx style="verb">MUST-T11-9</spanx>). Without that
witness, T11 guarantees about suppression are <strong>conditional</strong>.</t>

</section>
<section anchor="verification-algorithm"><name>Verification algorithm</name>

<t>A verifier <bcp14>MUST</bcp14> perform all of these steps and <bcp14>MUST</bcp14> report every
finding they produce (<spanx style="verb">MUST-T10-1</spanx>, <spanx style="verb">MUST-T11-2</spanx>). 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>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 <spanx style="verb">ref</spanx> or other handle given in the step. The
identifiers are not an interoperability surface.</t>

<t><list style="numbers" type="1">
  <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 (<spanx style="verb">MUST-T10-12</spanx>). 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 <spanx style="verb">extract-settlement-mismatch</spanx> <bcp14>SHOULD</bcp14> be used for this
condition in diagnostic output.</t>
  <t>Verify the extract signature against the out-of-band rail key
(<spanx style="verb">MUST-T10-8</spanx>, <spanx style="verb">MUST-T10-9</spanx>). If no key is pinned, the verifier
<bcp14>MUST</bcp14> treat the completeness guarantee as conditional
(<spanx style="verb">MUST-T10-7</spanx>). The identifier <spanx style="verb">unauthenticated-extract</spanx> <bcp14>SHOULD</bcp14>
be used for this condition in diagnostic output. If a key is
pinned and cannot be decoded, the verifier <bcp14>MUST</bcp14> report that the
pinned key is unreadable. The identifier <spanx style="verb">trust-key-unreadable</spanx>
<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 <spanx style="verb">extract-key-mismatch</spanx>
<bcp14>SHOULD</bcp14> be used for this condition. A finding that puts the
extract itself in doubt <bcp14>MUST</bcp14> prevent an unconditional guarantee.</t>
  <t>Check scope. The verifier <bcp14>MUST</bcp14> report each settlement record
whose <spanx style="verb">timestampMs</spanx> falls outside the declared window, identified
by that record's <spanx style="verb">ref</spanx> (<spanx style="verb">MUST-T10-10</spanx>). When the verifier states
an expected account, rail, or window, it <bcp14>MUST</bcp14> report an extract
that does not cover it (<spanx style="verb">MUST-T10-11</spanx>). The identifier
<spanx style="verb">extract-scope-mismatch</spanx> <bcp14>SHOULD</bcp14> be used for both conditions. If
the verifier stated no period, it <bcp14>MUST</bcp14> treat the guarantee as
conditional (<spanx style="verb">MUST-T10-15</spanx>). The identifier
<spanx style="verb">unstated-audit-window</spanx> <bcp14>SHOULD</bcp14> be used for this condition.</t>
  <t>Decode each Spend Receipt COSE_Sign1. Reject if Ed25519 verify
fails, if <spanx style="verb">kid</spanx> does not match the configured issuer key, if the
content type is not the receipt type, or if the decoded claim map
does not match the presented claims (<spanx style="verb">MUST-T4-2</spanx>, <spanx style="verb">MUST-T4-8</spanx>).</t>
  <t>Scope the receipts. When an extract is supplied, only receipts whose
<spanx style="verb">timestampMs</spanx> falls in the extract's declared window are reconciled
against it (<spanx style="verb">MUST-T10-16</spanx>). A receipt outside that window is not a
completeness failure against this extract; auditing a longer period
requires extracts that cover it. Receipts remain subject to every
other check regardless of window.</t>
  <t>Walk receipts in issuer order. The first <spanx style="verb">prevReceiptHash</spanx> <bcp14>MUST</bcp14>
be null. Each later <spanx style="verb">prevReceiptHash</spanx> <bcp14>MUST</bcp14> equal <spanx style="verb">receiptHash</spanx> of
the previous receipt. A miss <bcp14>MUST</bcp14> be reported as a break in the
receipt chain. The identifier <spanx style="verb">receipt-chain-break</spanx> <bcp14>SHOULD</bcp14> be
used for this condition.</t>
  <t>Index settled receipts and extract records by <spanx style="verb">ref</spanx>. A <spanx style="verb">ref</spanx>
that appears more than once on either side <bcp14>MUST</bcp14> be reported as a
repeated reference (<spanx style="verb">MUST-T10-6</spanx>). The identifier <spanx style="verb">duplicate-ref</spanx>
<bcp14>SHOULD</bcp14> be used for this condition.</t>
  <t>For each <spanx style="verb">ref</spanx> that appears exactly once on each side, require a
one-to-one match on <spanx style="verb">ref</spanx> AND <spanx style="verb">amount</spanx> AND <spanx style="verb">currency</spanx>
(<spanx style="verb">MUST-T10-1</spanx>). Amount or currency mismatch <bcp14>MUST</bcp14> be reported as
a settlement that does not match its receipt, identified by that
<spanx style="verb">ref</spanx>. The identifier <spanx style="verb">settlement-mismatch</spanx> <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 <spanx style="verb">ref</spanx> (<spanx style="verb">MUST-T10-2</spanx>). The
identifier <spanx style="verb">settlement-without-receipt</spanx> <bcp14>SHOULD</bcp14> be used for this
condition. A settled receipt with no extract row <bcp14>MUST</bcp14> be reported
as a completeness failure (<spanx style="verb">MUST-T10-3</spanx>). The identifier
<spanx style="verb">receipt-without-settlement</spanx> <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. The identifier
<spanx style="verb">settled-without-ref</spanx> <bcp14>SHOULD</bcp14> be used for this condition.</t>
  <t>A <spanx style="verb">ref</spanx> already reported as repeating <bcp14>MUST</bcp14> still be reconciled
by amount rather than dropped from the comparison
(<spanx style="verb">MUST-T10-13</spanx>). For each currency under that <spanx style="verb">ref</spanx>, 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 <spanx style="verb">settlement-without-receipt</spanx> <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 <spanx style="verb">ref</spanx>. The identifier
<spanx style="verb">settlement-mismatch</spanx> <bcp14>SHOULD</bcp14> be used for this condition. An
amount on that repeating <spanx style="verb">ref</spanx> that cannot be parsed as an
integer <bcp14>MUST</bcp14> be reported without abandoning the audit; the
identifier <spanx style="verb">malformed-amount</spanx> <bcp14>SHOULD</bcp14> be used for this condition.
A verifier <bcp14>MUST</bcp14> still report findings for the remaining records.</t>
  <t>Aborted receipts are not matched to extract rows and are not
added to totals.</t>
  <t>Decode each checkpoint. Reject a failed signature. Require
   <spanx style="verb">receiptCount</spanx>, <spanx style="verb">chainHeadHash</spanx>, and <spanx style="verb">totals</spanx> to match the
   receipts in <spanx style="verb">[startMs, endMs)</spanx> as defined above
   (<spanx style="verb">MUST-T11-2</spanx>).</t>
  <t>Every chained receipt <bcp14>MUST</bcp14> fall in exactly one checkpoint
window. A gap or double count <bcp14>MUST</bcp14> be reported as a window
coverage failure (<spanx style="verb">MUST-T11-7</spanx>, <spanx style="verb">MUST-T11-8</spanx>). The identifier
<spanx style="verb">window-coverage</spanx> <bcp14>SHOULD</bcp14> be used for this condition.</t>
  <t>Walk checkpoints in epoch order. <spanx style="verb">prevCheckpointHash</spanx> <bcp14>MUST</bcp14>
equal the SHA-256 of the previous checkpoint COSE bytes, or null
for genesis (<spanx style="verb">MUST-T11-4</spanx>).</t>
  <t>If two successfully verified checkpoints share an epoch number
and have different hashes, the verifier <bcp14>MUST</bcp14> report
equivocation (<spanx style="verb">MUST-T11-3</spanx>). The identifier <spanx style="verb">equivocation</spanx>
<bcp14>SHOULD</bcp14> be used for this condition.</t>
  <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 (<spanx style="verb">MUST-T10-4</spanx>).</t>
</list></t>

</section>
<section anchor="finding-codes"><name>Finding codes</name>

<t>The identifiers below 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
(<spanx style="verb">MUST-T10-14</spanx>).</t>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Effect</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c>settlement-without-receipt</c>
      <c>audit fails</c>
      <c>Extract row has no matching settled receipt, or a repeating <spanx style="verb">ref</spanx> settled more than it receipted</c>
      <c>receipt-without-settlement</c>
      <c>audit fails</c>
      <c>Settled receipt ref is not on the extract</c>
      <c>settlement-mismatch</c>
      <c>audit fails</c>
      <c>Same <spanx style="verb">ref</spanx>, different amount or currency, including a repeating <spanx style="verb">ref</spanx> that settled less than it receipted</c>
      <c>duplicate-ref</c>
      <c>audit fails</c>
      <c>Ref appears more than once on one side</c>
      <c>settled-without-ref</c>
      <c>audit fails</c>
      <c><spanx style="verb">outcome</spanx> is settled and <spanx style="verb">x402PaymentRef</spanx> is null</c>
      <c>receipt-chain-break</c>
      <c>audit fails</c>
      <c>Signature or <spanx style="verb">prevReceiptHash</spanx> failed</c>
      <c>checkpoint-total-mismatch</c>
      <c>audit fails</c>
      <c>Totals, count, signature, or checkpoint chain failed</c>
      <c>checkpoint-head-mismatch</c>
      <c>audit fails</c>
      <c><spanx style="verb">chainHeadHash</spanx> is not the last in-window receipt</c>
      <c>equivocation</c>
      <c>audit fails</c>
      <c>Two distinct hashes for one epoch</c>
      <c>window-coverage</c>
      <c>audit fails</c>
      <c>Gap, overlap, or non-adjacent / non-consecutive windows</c>
      <c>unauthenticated-extract</c>
      <c>guarantee conditional</c>
      <c>No pinned rail key, or the extract has no verifiable signature</c>
      <c>extract-key-mismatch</c>
      <c>audit fails</c>
      <c>Extract is signed by a key other than the pinned rail key, or does not verify against it</c>
      <c>trust-key-unreadable</c>
      <c>audit fails</c>
      <c>The pinned rail key could not be decoded; the verifier's configuration is at fault</c>
      <c>extract-scope-mismatch</c>
      <c>audit fails</c>
      <c>A record falls outside the declared window, or the extract does not cover the expected account, rail, or window</c>
      <c>extract-settlement-mismatch</c>
      <c>audit fails</c>
      <c>A caller-supplied settlement list disagrees with the extract; the extract is authoritative</c>
      <c>malformed-amount</c>
      <c>audit fails</c>
      <c>An amount on a <spanx style="verb">ref</spanx> already reported as repeating that could not be parsed as an integer</c>
      <c>unstated-audit-window</c>
      <c>guarantee conditional</c>
      <c>The verifier stated no period, so the extract defined its own</c>
      <c>countersign-bad</c>
      <c>audit fails</c>
      <c>Present payee countersignature failed verify</c>
</texttable>

<t>A finding that puts the extract itself in doubt (<spanx style="verb">extract-key-mismatch</spanx>,
<spanx style="verb">trust-key-unreadable</spanx>, <spanx style="verb">extract-scope-mismatch</spanx>, or
<spanx style="verb">extract-settlement-mismatch</spanx>) <bcp14>MUST</bcp14> also prevent an unconditional
guarantee, not merely fail the audit.</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, and no finding that puts the extract in
doubt. Anything less 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 (<spanx style="verb">MUST-T10-14</spanx>). 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
(<spanx style="verb">SHOULD-T11-5</spanx>). A test deployment <bcp14>MAY</bcp14> use an in-process
append-only log as the witness (<spanx style="verb">MAY-T11-6</spanx>). Cedulon still <bcp14>MUST
NOT</bcp14> take custody.</t>

</section>
</section>
<section anchor="lifecycle"><name>Lifecycle</name>

<t><list style="numbers" type="1">
  <t><strong>Manifest.</strong> Parties sign a Trade Manifest (optional for metered
API spend; required for goods with acceptance criteria).</t>
  <t><strong>Policy check.</strong> The adapter submits a structured request to the
PDP. Default is deny. An allow is a Decision Token
(<spanx style="verb">MUST-T6-4</spanx>).</t>
  <t><strong>Payment.</strong> On allow, the adapter performs the x402 (or other
rail) exchange using exactly the decision fields (<spanx style="verb">MUST-T6-1</spanx>).
The Decision Token is consumed (<spanx style="verb">MUST-T6-2</spanx>). A reused nonce is
denied (<spanx style="verb">MUST-T3-1</spanx>, <spanx style="verb">MUST-T3-2</spanx>). A tampered or expired token
is denied (<spanx style="verb">MUST-T6-5</spanx>).</t>
  <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 (<spanx style="verb">MUST-T5-2</spanx>, <spanx style="verb">MUST-T7-1</spanx>).</t>
  <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 (<spanx style="verb">MUST-T8-3</spanx>).
The bundle <bcp14>MUST NOT</bcp14> be described as an arbitral award or escrow
release (<spanx style="verb">MUST-T8-4</spanx>).</t>
</list></t>

</section>
<section anchor="policy-semantics"><name>Policy Semantics</name>

<t>Policy is default deny. The engine understands three families of
rule:</t>

<t><list style="symbols">
  <t><strong>Limit:</strong> maximum amount per payment; maximum cumulative amount
per window (<spanx style="verb">MUST-T2-2</spanx>).</t>
  <t><strong>Velocity:</strong> maximum number of allowed payments per window
(<spanx style="verb">MUST-T2-1</spanx>).</t>
  <t><strong>Scope:</strong> optional allow-lists for payee, currency, and tool
name.</t>
</list></t>

<t>Fail-closed: missing engine, crash, or exception yields deny
(<spanx style="verb">MUST-T2-3</spanx>). Implementations <bcp14>SHOULD</bcp14> emit stable reason codes
(<spanx style="verb">SHOULD-T2-5</spanx>). Decision tokens <bcp14>SHOULD</bcp14> expire after a short TTL
(<spanx style="verb">SHOULD-T6-3</spanx>).</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 (<spanx style="verb">MUST-T5-1</spanx>).</t>

</section>
<section anchor="scitt-anchoring"><name>SCITT Anchoring</name>

<t>A Receipt Issuer or relying party <bcp14>MAY</bcp14> construct a SCITT Signed
Statement whose payload is either the Spend Receipt COSE object or a
privacy profile (<xref target="privacy"/>) and register it with a Transparency
Service <xref target="RFC9943"/>. The service returns a COSE receipt
<xref target="RFC9942"/>. Embedding that receipt yields a Transparent Statement.
Cedulon does not define a new transparency algorithm.</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 (<spanx style="verb">MUST-T9-1</spanx>). Implementations <bcp14>MUST NOT</bcp14> write
government-ID numbers, payment-instrument PAN, or street address
into a public statement (<spanx style="verb">MUST-T9-2</spanx>). Default public anchors
<bcp14>SHOULD</bcp14> publish <spanx style="verb">policyHash</spanx>, <spanx style="verb">manifestHash</spanx>, <spanx style="verb">receiptHash</spanx>, and
<spanx style="verb">timestampMs</spanx> rather than full claims (<spanx style="verb">SHOULD-T9-3</spanx>). A private
auditor <bcp14>MAY</bcp14> receive an unredacted receipt out of band
(<spanx style="verb">MAY-T9-4</spanx>).</t>

</section>
<section anchor="security"><name>Security Considerations</name>

<t>This section is authoritative for the protocol requirements in this
document. The companion repository file <spanx style="verb">THREAT_MODEL.md</spanx> is
informative and <bcp14>MUST NOT</bcp14> be read as overriding this section.</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>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T1-1</c>
      <c>The PDP <bcp14>MUST</bcp14> decide from structured request fields and stored policy, not from model-generated prose.</c>
      <c><bcp14>MUST</bcp14>-T1-2</c>
      <c>A spend that is not bound to a verified Trade Manifest <bcp14>MUST</bcp14> be marked <spanx style="verb">no-manifest</spanx> on the Spend Receipt and <bcp14>MUST</bcp14> still be subject to limit, velocity, and scope policy.</c>
      <c><bcp14>SHOULD</bcp14>-T1-3</c>
      <c>Hosts <bcp14>SHOULD</bcp14> require a human confirmation channel for first-use payees.</c>
      <c><bcp14>MAY</bcp14>-T1-4</c>
      <c>An implementation <bcp14>MAY</bcp14> refuse all <spanx style="verb">no-manifest</spanx> spend.</c>
</texttable>

</section>
<section anchor="t2-runaway-agent-loop-spend"><name>T2: Runaway agent (loop spend)</name>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T2-1</c>
      <c>Policy <bcp14>MUST</bcp14> express a maximum payment count per configured time window (velocity).</c>
      <c><bcp14>MUST</bcp14>-T2-2</c>
      <c>Policy <bcp14>MUST</bcp14> express a maximum amount per payment and a maximum cumulative amount per window.</c>
      <c><bcp14>MUST</bcp14>-T2-3</c>
      <c>If the PDP is unreachable, uninitialized, or throws during evaluation, the spend <bcp14>MUST</bcp14> be denied (fail-closed, default deny).</c>
      <c><bcp14>MUST</bcp14>-T2-4</c>
      <c>A denied attempt <bcp14>MUST NOT</bcp14> increment the allowed-spend counters as if it had succeeded.</c>
      <c><bcp14>SHOULD</bcp14>-T2-5</c>
      <c>Implementations <bcp14>SHOULD</bcp14> emit a stable reason code for velocity and limit denials.</c>
</texttable>

</section>
<section anchor="t3-replay-of-payment-authority"><name>T3: Replay of payment authority</name>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T3-1</c>
      <c>Every spend attempt that the PDP allows <bcp14>MUST</bcp14> include a nonce that the implementation has not accepted before.</c>
      <c><bcp14>MUST</bcp14>-T3-2</c>
      <c>A second attempt that reuses a nonce <bcp14>MUST</bcp14> be denied.</c>
      <c><bcp14>MUST</bcp14>-T3-3</c>
      <c>A Trade Manifest <bcp14>MUST</bcp14> carry an expiry; a spend against an expired manifest <bcp14>MUST</bcp14> be denied.</c>
      <c><bcp14>MUST</bcp14>-T3-4</c>
      <c>A PDP allow decision <bcp14>MUST</bcp14> be bound to a hash of the request fields it evaluated and <bcp14>MUST</bcp14> be single-use.</c>
      <c><bcp14>SHOULD</bcp14>-T3-5</c>
      <c>Nonce stores <bcp14>SHOULD</bcp14> persist across process restart when the deployment is not a test fixture.</c>
</texttable>

</section>
<section anchor="t4-receipt-forgery-or-repudiation"><name>T4: Receipt forgery or repudiation</name>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T4-1</c>
      <c>A Spend Receipt <bcp14>MUST</bcp14> be signed by the Receipt Issuer over a canonical encoding of its claims.</c>
      <c><bcp14>MUST</bcp14>-T4-2</c>
      <c>Verifiers <bcp14>MUST</bcp14> reject a receipt whose signature does not validate or whose canonical bytes do not match the signed payload.</c>
      <c><bcp14>MUST</bcp14>-T4-3</c>
      <c>A Spend Receipt <bcp14>MUST</bcp14> include <spanx style="verb">payer</spanx>, <spanx style="verb">payee</spanx>, <spanx style="verb">amount</spanx>, <spanx style="verb">currency</spanx>, <spanx style="verb">policyHash</spanx>, <spanx style="verb">timestampMs</spanx>, and <spanx style="verb">nonce</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T4-4</c>
      <c>A Spend Receipt <bcp14>MUST</bcp14> include <spanx style="verb">manifestHash</spanx> or an explicit <spanx style="verb">noManifest</spanx> flag, never an ambiguous empty hash. Empty optional values are CBOR null; labels are never absent.</c>
      <c><bcp14>SHOULD</bcp14>-T4-5</c>
      <c>Receipts <bcp14>SHOULD</bcp14> form a hash chain (<spanx style="verb">prevReceiptHash</spanx>) so omission is detectable within one issuer stream.</c>
      <c><bcp14>MAY</bcp14>-T4-6</c>
      <c>Parties <bcp14>MAY</bcp14> register the signed receipt as a SCITT statement to obtain a COSE receipt.</c>
      <c><bcp14>MUST</bcp14>-T4-7</c>
      <c>A Spend Receipt <bcp14>MUST</bcp14> include <spanx style="verb">outcome</spanx> (<spanx style="verb">settled</spanx> or <spanx style="verb">aborted</spanx>). A settled receipt <bcp14>MUST</bcp14> have a non-null rail ref. Aborted receipts <bcp14>MUST NOT</bcp14> enter checkpoint totals.</c>
      <c><bcp14>MUST</bcp14>-T4-8</c>
      <c>COSE_Sign1 protected headers <bcp14>MUST</bcp14> use alg -19 (Ed25519), a mandatory <spanx style="verb">kid</spanx>, and a payload-specific content type. Verifiers <bcp14>MUST</bcp14> reject a <spanx style="verb">kid</spanx> that does not match the configured issuer key.</c>
</texttable>

</section>
<section anchor="t5-policy-bypass-via-direct-rail-access"><name>T5: Policy bypass via direct rail access</name>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T5-1</c>
      <c>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.</c>
      <c><bcp14>MUST</bcp14>-T5-2</c>
      <c>Rail credentials, wallet handles, and facilitator tokens <bcp14>MUST NOT</bcp14> be placed in tool results or prompts.</c>
      <c><bcp14>SHOULD</bcp14>-T5-3</c>
      <c>Hosts <bcp14>SHOULD</bcp14> run the PDP and signing keys in a process the model runtime cannot write.</c>
      <c><bcp14>MAY</bcp14>-T5-4</c>
      <c>A deployment <bcp14>MAY</bcp14> use OS or hardware isolation between the model and the PDP.</c>
</texttable>

</section>
<section anchor="t6-toctou-between-policy-check-and-payment"><name>T6: TOCTOU between policy check and payment</name>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T6-1</c>
      <c>Payment settlement <bcp14>MUST</bcp14> use the same six <spanx style="verb">requestHash</spanx> fields the PDP evaluated: amount, currency, payee, tool, nonce, and <spanx style="verb">manifestHash</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T6-2</c>
      <c>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.</c>
      <c><bcp14>SHOULD</bcp14>-T6-3</c>
      <c>Implementations <bcp14>SHOULD</bcp14> treat a decision older than a short TTL as expired.</c>
      <c><bcp14>MUST</bcp14>-T6-4</c>
      <c>An allow Decision Token <bcp14>MUST</bcp14> be COSE_Sign1 with CWT private-use labels -70301..-70305 (<spanx style="verb">requestHash</spanx>, <spanx style="verb">policyHash</spanx>, <spanx style="verb">expiryMs</spanx>, <spanx style="verb">nonce</spanx>, <spanx style="verb">singleUseId</spanx>) and content type <spanx style="verb">application/cedulon-decision+cbor</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T6-5</c>
      <c>A party that accepts a Decision Token <bcp14>MUST</bcp14> reject a failed signature, a <spanx style="verb">kid</spanx> or content-type mismatch, a claim-map mismatch, or an expired <spanx style="verb">expiryMs</spanx>.</c>
</texttable>

</section>
<section anchor="t7-signing-key-leakage"><name>T7: Signing-key leakage</name>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T7-1</c>
      <c>Secret key material <bcp14>MUST NOT</bcp14> appear in receipts, manifests, logs, or example output.</c>
      <c><bcp14>MUST</bcp14>-T7-2</c>
      <c>Example and test keys <bcp14>MUST</bcp14> be generated at runtime or stored as clearly fake fixtures, never as production secrets.</c>
      <c><bcp14>SHOULD</bcp14>-T7-3</c>
      <c>Production deployments <bcp14>SHOULD</bcp14> use an HSM or OS key store and <bcp14>SHOULD</bcp14> rotate keys.</c>
      <c><bcp14>MAY</bcp14>-T7-4</c>
      <c>Implementations <bcp14>MAY</bcp14> encrypt keys at rest.</c>
</texttable>

</section>
<section anchor="t8-counterparty-price-gouging-or-defective-delivery"><name>T8: Counterparty price gouging or defective delivery</name>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T8-1</c>
      <c>A Trade Manifest <bcp14>MUST</bcp14> bind goods or service description, price, currency, acceptance-criteria hash, cancel condition, and expiry.</c>
      <c><bcp14>MUST</bcp14>-T8-2</c>
      <c>A spend bound to a manifest <bcp14>MUST</bcp14> be denied if the requested amount or currency differs from the manifest.</c>
      <c><bcp14>MUST</bcp14>-T8-3</c>
      <c>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.</c>
      <c><bcp14>MUST</bcp14>-T8-4</c>
      <c>The Dispute Evidence Bundle <bcp14>MUST NOT</bcp14> be described as an arbitral award or escrow release.</c>
      <c><bcp14>MUST</bcp14>-T8-7</c>
      <c><spanx style="verb">manifestHash</spanx> <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.</c>
      <c><bcp14>SHOULD</bcp14>-T8-5</c>
      <c>Manifests <bcp14>SHOULD</bcp14> reference an AP2 mandate hash when one exists.</c>
      <c><bcp14>MAY</bcp14>-T8-6</c>
      <c>Parties <bcp14>MAY</bcp14> add an optional escrow actor as a third-party role interface; this project <bcp14>MUST NOT</bcp14> implement custody.</c>
      <c><bcp14>MUST</bcp14>-T8-custody</c>
      <c>Implementations of this specification <bcp14>MUST NOT</bcp14> take custody of funds or operate escrow.</c>
      <c><bcp14>MUST</bcp14>-T8-8</c>
      <c>If a payee countersignature is present, a verifier <bcp14>MUST</bcp14> reject it when the signature fails, when <spanx style="verb">kid</spanx> or content type does not match the configured payee key, or when the payload is not the issuer COSE_Sign1 bytes.</c>
      <c><bcp14>MAY</bcp14>-T8-9</c>
      <c>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.</c>
</texttable>

</section>
<section anchor="must-t8-custody"><name>MUST-T8-custody</name>

<t>Implementations of this specification <bcp14>MUST NOT</bcp14> take custody of
funds or operate escrow. See also <xref target="escrow-role"/>.</t>

</section>
<section anchor="t9-pii-leakage-into-the-transparency-log"><name>T9: PII leakage into the transparency log</name>

<t>See also <xref target="privacy"/>.</t>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T9-1</c>
      <c>A transparency encoding <bcp14>MUST</bcp14> support omitting or hashing payer/payee identifiers and <bcp14>MUST</bcp14> support amount redaction or range/bucket encoding.</c>
      <c><bcp14>MUST</bcp14>-T9-2</c>
      <c>Implementations <bcp14>MUST NOT</bcp14> write raw government-ID, payment-instrument PAN, or street address fields into a public transparency statement.</c>
      <c><bcp14>SHOULD</bcp14>-T9-3</c>
      <c>Default public anchors <bcp14>SHOULD</bcp14> publish <spanx style="verb">policyHash</spanx>, <spanx style="verb">manifestHash</spanx>, <spanx style="verb">receiptHash</spanx>, and timestamp rather than full claim sets.</c>
      <c><bcp14>MAY</bcp14>-T9-4</c>
      <c>A private auditor <bcp14>MAY</bcp14> receive an unredacted receipt out of band.</c>
</texttable>

</section>
<section anchor="t10-secret-spend-via-rail-bypass"><name>T10: Secret spend via rail bypass</name>

<t>See <xref target="reconciliation"/>.</t>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T10-1</c>
      <c>A verifier <bcp14>MUST</bcp14> match each extract settlement to a settled receipt on <spanx style="verb">ref</spanx> AND <spanx style="verb">amount</spanx> AND <spanx style="verb">currency</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T10-2</c>
      <c>A settlement with no matching receipt <bcp14>MUST</bcp14> be reported as a completeness failure identified by that settlement <spanx style="verb">ref</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T10-3</c>
      <c>A settled Spend Receipt whose <spanx style="verb">x402PaymentRef</spanx> is not on the extract <bcp14>MUST</bcp14> be reported as a completeness failure.</c>
      <c><bcp14>MUST</bcp14>-T10-4</c>
      <c>An audit that has any fail-severity completeness finding <bcp14>MUST</bcp14> fail (non-zero status in the companion tool).</c>
      <c><bcp14>SHOULD</bcp14>-T10-5</c>
      <c>Hosts <bcp14>SHOULD</bcp14> still apply T5 (no ungated rail in the model process). Completeness does not replace prevention.</c>
      <c><bcp14>MUST</bcp14>-T10-6</c>
      <c>A <spanx style="verb">ref</spanx> that appears more than once among settled receipts or among extract rows <bcp14>MUST</bcp14> be reported as <spanx style="verb">duplicate-ref</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T10-7</c>
      <c>A verifier <bcp14>MUST</bcp14> obtain the extract from the rail or from a rail signature. With no pinned rail key, an unverifiable extract <bcp14>MUST</bcp14> be reported as <spanx style="verb">unauthenticated-extract</spanx> and makes the completeness guarantee conditional. With a pinned key, see <bcp14>MUST</bcp14>-T10-8: the extract <bcp14>MUST</bcp14> fail closed rather than warn.</c>
      <c><bcp14>MUST</bcp14>-T10-8</c>
      <c>A verifier <bcp14>MUST</bcp14> obtain the rail public key out of band and <bcp14>MUST</bcp14> verify the extract signature against that key, not against a key the extract carries. Without such a key the guarantee is conditional.</c>
      <c><bcp14>MUST</bcp14>-T10-9</c>
      <c>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 <spanx style="verb">trust-key-unreadable</spanx>, not as a key mismatch.</c>
      <c><bcp14>MUST</bcp14>-T10-10</c>
      <c>Every settlement record whose <spanx style="verb">timestampMs</spanx> falls outside the extract's declared window <bcp14>MUST</bcp14> be reported as <spanx style="verb">extract-scope-mismatch</spanx>, identified by that record's <spanx style="verb">ref</spanx>. This check <bcp14>MUST</bcp14> run whether or not a key is pinned.</c>
      <c><bcp14>MUST</bcp14>-T10-11</c>
      <c>When the verifier states an expected account, rail, or window, an extract that does not cover it <bcp14>MUST</bcp14> fail closed as <spanx style="verb">extract-scope-mismatch</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T10-12</c>
      <c>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 <spanx style="verb">extract-settlement-mismatch</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T10-13</c>
      <c>A <spanx style="verb">ref</spanx> reported as <spanx style="verb">duplicate-ref</spanx> <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 <spanx style="verb">malformed-amount</spanx> without aborting the audit.</c>
      <c><bcp14>MUST</bcp14>-T10-14</c>
      <c>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.</c>
      <c><bcp14>MUST</bcp14>-T10-15</c>
      <c>A verifier that has not stated the period under audit <bcp14>MUST</bcp14> emit <spanx style="verb">unstated-audit-window</spanx> and <bcp14>MUST</bcp14> treat the guarantee as conditional, because an unstated period leaves the extract free to define its own.</c>
      <c><bcp14>MUST</bcp14>-T10-16</c>
      <c>When an extract is supplied, only receipts whose <spanx style="verb">timestampMs</spanx> falls in its declared window are reconciled against it. A receipt outside that window <bcp14>MUST NOT</bcp14> be reported as a completeness failure against that extract.</c>
</texttable>

<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>

<texttable>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Requirement</ttcol>
      <c><bcp14>MUST</bcp14>-T11-1</c>
      <c>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.</c>
      <c><bcp14>MUST</bcp14>-T11-2</c>
      <c>Verifiers <bcp14>MUST</bcp14> reject a checkpoint whose signature fails, whose totals do not match settled receipts in the declared window, whose <spanx style="verb">receiptCount</spanx> is wrong, or whose <spanx style="verb">chainHeadHash</spanx> is not the last in-window receipt hash.</c>
      <c><bcp14>MUST</bcp14>-T11-3</c>
      <c>Two verified checkpoints for the same epoch with different hashes <bcp14>MUST</bcp14> be reported as equivocation.</c>
      <c><bcp14>MUST</bcp14>-T11-4</c>
      <c>A broken checkpoint hash chain <bcp14>MUST</bcp14> fail verification.</c>
      <c><bcp14>SHOULD</bcp14>-T11-5</c>
      <c>Checkpoints <bcp14>SHOULD</bcp14> be registered with a Transparency Service when one is configured.</c>
      <c><bcp14>MAY</bcp14>-T11-6</c>
      <c>A test deployment <bcp14>MAY</bcp14> use an in-process append-only log as the witness.</c>
      <c><bcp14>MUST</bcp14>-T11-7</c>
      <c>Checkpoint windows <bcp14>MUST</bcp14> be half-open <spanx style="verb">[startMs, endMs)</spanx>. Every chained receipt <bcp14>MUST</bcp14> fall in exactly one window.</c>
      <c><bcp14>MUST</bcp14>-T11-8</c>
      <c>Presented checkpoint epochs <bcp14>MUST</bcp14> be consecutive and adjacent windows <bcp14>MUST</bcp14> meet at <spanx style="verb">endMs = next.startMs</spanx>.</c>
      <c><bcp14>MUST</bcp14>-T11-9</c>
      <c>Prefix-deletion and suppression claims that go beyond the presented chain are conditional on an external transparency witness.</c>
</texttable>

<dl>
  <dt>Issuer self-attestation:</dt>
  <dd>
    <t>A Receipt Issuer that also produces the only copy of the extract
can omit settlements. Completeness holds only against an
extract the verifier obtained from the rail or from a rail
signature.</t>
  </dd>
  <dt>Key rotation and revocation:</dt>
  <dd>
    <t><spanx style="verb">kid</spanx> identifies the verification key. This -01 does not specify
a revocation list. Verifiers <bcp14>MUST</bcp14> pin the issuer keys they
accept and <bcp14>MUST</bcp14> stop accepting a <spanx style="verb">kid</spanx> after an authenticated
revocation signal.</t>
  </dd>
  <dt>Timestamp trust:</dt>
  <dd>
    <t><spanx style="verb">timestampMs</spanx> is issuer-asserted. Window assignment uses that
field. A lying issuer can slide a receipt between windows.
External timestamping or a transparency log is out of scope for
-01.</t>
  </dd>
  <dt>Collusion:</dt>
  <dd>
    <t>If the rail operator and the issuer collude, they can publish a
matching extract and receipt set that hides a real-world
settlement. Cedulon does not detect extract-external agreement.</t>
  </dd>
  <dt>Reversal, refund, and partial settlement:</dt>
  <dd>
    <t>State machines for reversal, refund, and partial settlement are
out of scope for this revision.</t>
  </dd>
</dl>

</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
(<spanx style="verb">MAY-T8-6</spanx>). Implementations of this specification <bcp14>MUST NOT</bcp14> take
custody or operate escrow (<spanx style="verb">MUST-T8-custody</spanx>).</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>CWT claim labels need no assignment: this profile uses private-use
integer labels below -65536.</t>

<t>Media types do. This document defines five and makes their values a
normative check inside a protected COSE header (<spanx style="verb">MUST-T4-8</spanx>,
<spanx style="verb">MUST-T6-5</spanx>), so they cannot stay unregistered while that check stands.
If this work is taken up, the following should be registered in the
Standards Tree per <xref target="RFC6838"/>:</t>

<texttable>
      <ttcol align='left'>Media type</ttcol>
      <ttcol align='left'>Carries</ttcol>
      <c>application/cedulon-receipt+cbor</c>
      <c>Spend Receipt claim set</c>
      <c>application/cedulon-checkpoint+cbor</c>
      <c>Epoch checkpoint claim set</c>
      <c>application/cedulon-manifest+cbor</c>
      <c>Trade Manifest claim set</c>
      <c>application/cedulon-decision+cbor</c>
      <c>Decision Token claim set</c>
      <c>application/cedulon-countersign+cbor</c>
      <c>Payee countersignature</c>
</texttable>

<t>For each: encoding is binary CBOR <xref target="RFC8949"/>; security considerations
are those in <xref target="security"/>; the change controller would be the IETF; the
contact is the author of this document. Until registration, an
implementation outside a closed deployment should expect these names to
change, and readers should treat them as placeholders rather than as
stable identifiers.</t>

</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.</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 -01 is not an
IETF working-group item.</t>
  </dd>
  <dt>Maturity:</dt>
  <dd>
    <t>Research code by a single implementer. Interoperability with an
independent implementation has not been demonstrated; no second
implementation is known to the author.</t>
  </dd>
  <dt>Coverage:</dt>
  <dd>
    <t>The receipt, checkpoint, extract, reconciliation, and verification
algorithm are implemented. Every requirement added in this revision
is implemented and covered by a red-then-green case before appearing
in this text. The escrow role, reversal, refund, and partial
settlement are not implemented.</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>Two independent readers ran an earlier revision and reported defects,
one of which was a bypass of the completeness claim. Both are fixed
and the fixes are recorded in the repository. That review is the
reason for most of this revision.</t>
  </dd>
</dl>

<t>Note on distribution: the requirements in this document are implemented
in the <spanx style="verb">@cedulon</spanx> packages at version 0.2.0 on npm, and in the
repository at the commit named in the release notes. Package versions
before 0.2.0 predate these requirements, so a reader checking a claim
against an installed package should confirm the version first.</t>

<section anchor="changes"><name>Changes from -00</name>

<t>Two independent readers ran the -00 implementation and reported
defects. One was a bypass of the completeness claim: the
implementation verified an extract and then reconciled a separate
settlement list, so a validly signed extract could carry an off-book
settlement while the caller supplied an empty list, and the audit
reported balanced books. That was the implementation contradicting
-00, which already required reconciling against the extract; this
revision states the requirement in the verification algorithm so it
cannot be read as optional (<spanx style="verb">MUST-T10-12</spanx>).</t>

<t>The second was a gap in this document rather than in the code. -00
required an authenticated extract but never said which key the
signature is checked against, so an implementation could satisfy the
text while verifying a signature against a key the extract itself
carried. Such a key verifies against itself. -01 requires the rail key
out of band and compares keys as DER (<spanx style="verb">MUST-T10-8</spanx>, <spanx style="verb">MUST-T10-9</spanx>).</t>

<t>The remaining changes close narrower holes found while repairing those
two: an extract whose declared window disagrees with the records it
carries (<spanx style="verb">MUST-T10-10</spanx>), an extract that does not cover the period
under audit (<spanx style="verb">MUST-T10-11</spanx>), a repeated <spanx style="verb">ref</spanx> dropping out of the
comparison and hiding the unaccounted amount (<spanx style="verb">MUST-T10-13</spanx>), and a
report that states a balance in operator-facing output while
withholding that the balance is conditional (<spanx style="verb">MUST-T10-14</spanx>).</t>

<t>Three changes are not repairs and are recorded here so a reader of -00
is not surprised:</t>

<t><list style="symbols">
  <t>A failed extract signature was a warning in -00 and stays one when no
key is pinned. Once a key is pinned it now fails the audit. -00 did
not contemplate a pinned key, so this is new behaviour rather than a
clarification.</t>
  <t>Requiring that a disagreeing caller-supplied list be <em>reported</em> as
<spanx style="verb">extract-settlement-mismatch</spanx> is new normative content. -00 required
reconciling the extract; it did not require saying anything about a
list that contradicted it.</t>
  <t>-00 said reversal, refund, and partial settlement were "expected in
-01", and said reserved extensions belonged in "-01 or -02". Neither
arrived in this revision. They are now stated as out of scope for
this revision and expected later, with no date.</t>
</list></t>

<t>The reporters are named in the Acknowledgments.</t>

</section>
</section>
<section anchor="evolution"><name>Evolution and Future Work (Informative)</name>

<t>This section is a direction, not a commitment. The structures below
are reserved in name only. Normative wire formats, tests, and
threat-model <bcp14>MUST</bcp14> lines for them belong in later revisions (-02 or
-03), written with the same discipline as this -01.</t>

<section anchor="re-attestation-profile"><name>Re-attestation profile</name>

<t>Algorithms retire. A Spend Receipt or checkpoint signed under
Ed25519 today may need a later verifier that no longer accepts
<spanx style="verb">-19</spanx>. A companion seed <xref target="REATTEST"/> sketches re-attestation:
register the original COSE bytes as a SCITT Signed Statement and
have a current algorithm countersign or receipt them. The
principle is that structures outlive ciphers. The first concrete
example is the profile's own move from generic EdDSA (<spanx style="verb">-8</spanx>) to
Ed25519 (<spanx style="verb">-19</spanx>) in <xref target="RFC9864"/>.</t>

</section>
<section anchor="streaming-reconciliation"><name>Streaming reconciliation</name>

<t>Epoch checkpoints in this document are batch windows. A later
revision (-02) may define a continuous, second-scale profile
<xref target="STREAMING"/> in which the same completeness relation is evaluated
as settlements arrive, without waiting for an epoch close. That
work does not change the matching rules in this document.</t>

</section>
<section anchor="generalization"><name>Generalization</name>

<t>Payment is the special case that this -01 implements. The same
completeness calculus (an authenticated extract of consumed units
reconciled to signed receipts) can apply to other consumable
resources such as compute, data, or energy. This document does
not specify those profiles.</t>

</section>
</section>
<section anchor="informative-notes-on-adjacent-protocols"><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.
draft-bates-atp <xref target="BATES-ATP"/> is a lineage neighbor. It does not
define rail-extract completeness.</t>

<t>draft-vauban-x402-stark-receipts <xref target="VAUBAN"/> specifies complementary
x402 receipt-format variants that a Cedulon Spend Receipt <bcp14>MAY</bcp14> carry
as a rail proof; it does not define rail-extract completeness.
draft-schrock-ep-outcome-binding <xref target="SCHROCK"/> compares authorized
action bytes to independently observed effects; it does not define
rail-extract completeness.
draft-marques-asqav-compliance-receipts <xref target="MARQUES"/> profiles
access-control action receipts (the broader Acta family includes
<xref target="ACTA"/>); it does not define rail-extract completeness.
draft-hopley-x402-compliance-receipt <xref target="HOPLEY"/> records an
admission-time compliance decision; it does not define rail-extract
completeness.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<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="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="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>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<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="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></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></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></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></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></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></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></organization>
    </author>
    <date year="2026" month="May"/>
  </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></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></organization>
    </author>
    <date year="2026" month="August"/>
  </front>
</reference>


    </references>

</references>


<?line 1219?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>Iman Schrock and Pablo Play ran the -00 implementation against the
pinned commit and reported the defects that produced this revision.
Iman Schrock found the two extract-binding defects, proposed the repair
this document adopts, and is also the author of <xref target="SCHROCK"/>, cited here
as adjacent work. Pablo Play found that a repeated reference hid the
unaccounted amount, and filed a written reproduction. Neither 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"/>.</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. They <bcp14>MUST</bcp14> match the
locked tests in the companion implementation.</t>

<t>Receipt COSE_Sign1:</t>

<t>Claims: payer=<spanx style="verb">payer-1</spanx>, payee=<spanx style="verb">payee-1</spanx>, amount=<spanx style="verb">1</spanx>,
currency=<spanx style="verb">USD</spanx>, policyHash=<spanx style="verb">aa</spanx>, manifestHash=null,
noManifest=true, x402PaymentRef=null, timestampMs=1700000000000,
nonce=<spanx style="verb">n100000000000000</spanx>, prevReceiptHash=null, outcome=<spanx style="verb">aborted</spanx>.</t>

<t>COSE_Sign1 hex (whitespace ignored; identical to the locked test):</t>

<figure><artwork><![CDATA[
845830a301320378206170706c69636174696f6e2f636564756c6f6e2d
726563656970742b63626f72044806e3fd8fda29bb60a0587cac3a0001
11706770617965722d313a000111716770617965652d313a0001117261
313a00011173635553443a000111746261613a00011175f63a00011176
f53a00011177f63a000111781b0000018bcfe568003a00011179706e31
30303030303030303030303030303a0001117af63a0001117b6761626f
727465645840685c01aa778a850b9d35250406f092b6f5cb03fb359593
0422533e28ac620ad439f5e7bd8ed1fa5ded90d4421a2de34f94d1d78d
38a65812cb5315ee7f1cf403
]]></artwork></figure>

<t>Manifest COSE_Sign1:</t>

<t>Body: description=<spanx style="verb">fixture-goods</spanx>, amount=<spanx style="verb">1</spanx>, currency=<spanx style="verb">USD</spanx>,
acceptanceCriteriaHash=<spanx style="verb">00</spanx>, cancelCondition=<spanx style="verb">none</spanx>,
expiresAtMs=1700000000000, ap2MandateHash=null.</t>

<t>COSE_Sign1 hex (whitespace ignored; identical to the locked test):</t>

<figure><artwork><![CDATA[
845831a301320378216170706c69636174696f6e2f636564756c6f6e2d
6d616e69666573742b63626f72044806e3fd8fda29bb60a0584aa73a00
0112386d666978747572652d676f6f64733a0001123961313a0001123a
635553443a0001123b6230303a0001123c646e6f6e653a0001123d1b00
00018bcfe568003a0001123ef65840898628b1524a44ca641b5058c7a4
7e71bd4ce1ca0782e03b511c23e0819c3771407d627216d0b104224ee8
2cacffbd21e66fe035ed5ce4ee85b7bcd9c560ad02
]]></artwork></figure>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA9196XbjVpLmfzwFJv3DkppgctOa7eqRM2Vb7dw6Jddy6vQp
gQQooZMiWACYSlU6+1nmWebJJr6IuBsISrJr5s+4TtkUieXeuLGvSZJETdEs
8pP42cs8Wy/K5Ul8uoxP11nRxK/T+7yK52UVn17nyyZpyoQ/xC/L29u8muXP
onQ6rfJPJ7HeHGXlbJne0uOyKp03SVZeV+tkJj8mg2GUpQ39OBqMDpLBUTI6
iGb0xXVZ3Z/ExXJeRvV6elvUdVEum/tVji+zfJXTv5ZNVKyqk7ip1nUzGgyO
B6MorfL0JK7zWXRXVh+vq3K9Ook+5vf0V3YSxXFil4XPKZbOn6p8lhcr+bwq
F8Xsnj9evDy/vIzqJl1mf0vprpzflkf1bVo1f/v7umzy+iSep4s6j1aFvKAp
Z+a/hawSf9Vl1VT5vJY/7m/t5xkAt2zqKF03N2XFz6D/x7RPevRZP37Zj18B
ZvylQPLsNv8Yv0yX3g9ldX0S//Hsw+mf48uzn9++e/3u38/j1+dvzi/PXsUX
5x9+Prs85wtn5XrZALiX64oAw9/lt2mxOInzPh/O/9TD6dPSomVZ3aZN8SnH
wj788HI0HB7rx4PReGI+Ho2P9OPRYDwyH4eH5oKj8bH99nhinnA82B+5j2Pz
8ejA3HZ8PBm5j3QBMCJc0KF3yXA4MB8noyE+fn96eXaRnF6+P+GNGsQWnL2s
0mWdzhpCrfh9VdKBlYt4hy7efcZXuxPBP4mcyKt+/D0haK3fmiN5lX4qsvi0
viHycL/7uL0vK0ir67w5iW+aZlWfPH9OV6RNlc4+5lW/yJt5nw7yOZHM85vm
dvFcSGaK5yVps6In/HkyGIV7+YxvQKHviCriC+BqWmVMo+fLJq+WeZO8ZYjF
79N7xrXu7TEK4WnxD4QjtLCCycTfRecW7u7u+riNl05XnL4fdUHbvNwH9fvR
FlDzWn4sy+tFLpymmFkWE65pPxkcdy4rXY2Slb6Kl0ZfPK9X+ayYFzPeHBb7
44fzH38Ml3tZFSt67RnIJD6dMcEUy+sHcOK8H/9YFdfXLZw4Jwp135sVb0GE
Il1e8zJX6Sqv6ucNr+JvOVbRBzLQXe9PX56/e30eLvdifXubxlkep1XR3Nzm
BKq0F1/nJX2sCvpIQFgR96ENF3HeeH+mi6JJH9jW6z4d2qwgdtja2Ov1LA1+
kr0NJ8cT+vOPp798f/p2E0nji8vTDz/HH4TVEpKBkOOzz02+BHd/ABH+mK6n
BMsPeZ2n1ezmnyUtoapP/NAEK0uIw1cfExUCNfDi4uVPH969/Dncxbt1Qzwx
j78nxk4YIXKQF1z8IyfqZ1ZSx0SBRHpWSi3u43fTOq8+0SVn83k+20aABpcu
ZjdVOfvYxqZbAoH/kw+Bw98DgVoeluSrpJSdJVPZGSDw5vTDf/xydhFCgGhw
tSBUneUg43lBdFLO44viemn3bw64FvCcC/0+tOV/78enREH0/jp+k1Z/X29w
138v05JYXFblHZf903C4lYclaf339FMys1sMEOL05eVpi/Bk16+Io9Qb+36T
zm6KZQ4FST+CleR1TWyMSLpcPACPy378Q1otVDg7KFyWt/4P/r67OfMj+57z
sxKSgGlS82aCHf/07v3rs7+0zl90M2Ixi9jDhYtZledLkESLuq2mWMwSFQDx
D4vy7iF0IIXnp3K1uf2XN1VRN+UKIta74J9mBDf8LGEEm4cPSHw4O70kPeKy
BQtRk2jLyWlDErphoULrTKvqHrC4AAOIz0gxyAGk01lV0vmfLgBA4tR0Y1NU
OWDyADTaGqCDR4cWGOjSnbC4pjevp1DtnrOyN0uXtIKPSbponqve93y6KKfP
84OjYT6aZMPp6Ph4OMqOZkNSsPePZ6M8PZ5P5sf746PZ6Dhjkfq8S7cnVdyB
JRkM+rcZGOslQfPN+dsfu4F5QVpyequYVC5nBZ2GgrWEGF6X61owLye5AXqy
KCbw/v8SlLWBioIxISMN/4rTaQ3MbqLo8qaoY0LqNdNYls+J5dRxc5Mbi8fq
XT0SUAQgmHMLY85FqTHn+INYJaRr9Y3aFldkItRxvZ7dxGkd/3R5+T6GTJ+D
mOMdEM8uBF90C/2zyWOjetWi5sXpgraQ3ce3JSmin9LFmp59eZPf05rjZdn0
4uk9Vntb54tPed2L6P5sTVSTknlVLJLZoqyJ2YptFs9u8tlHlrNpLJwrrpnY
lGjpScR80uhTXpG2R1uks8FvjFD0zOuUEIIu4F3F+WeGYd9CSrVEgl8KIyHL
ozfpspgTLsc7+rqSBHkVT3OCHe1VYLRLkI3fywqtVHhfFgS9O8KViA4lXS9w
OMt7XCr8wXDMnZfvLs6ev/zTZTxbpMUtGbG0wDkp8HTlNUE0c6+J8lVJ58BQ
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
LGnGnaisHabASTFNRUwWMoOqLBHKrcpF7lTUF7GZvcNCwW3UoI9NxAlgbBzw
m5zE1EkY5d5Dv3ZuD7e8Wi+FtE1thCw+fNuRkES6LaEwmEK5UYjzG6dQhsL4
t06hlACQC9B2DKH0J7AG53qscnxjlK2dKOrd/th4W2shmh7qOhLUQ+WO4Z++
7Qq+3zrvaGNM42877mjrcaP/MidZfvkiXyXAU9OH+fKY7Lfzc6M38PRWiTb5
IVuS8VHkPcjGt/tPFkXHKop+XyhYRhk+/31hYJm/+LwVDPYJ4Zil0sPhYHrK
XRyEhH9DKNh6KoOIcAAL6/YIedwxi63uEHH8T4aI3ZSPLeFh2Co+JR2r4aja
e/y7IsRW8xkOTozmKVIPrgO2zsWVEGnv8FYj3d+AdEgr5QWHnEs4DhfE2vZm
XmV0aSulvfU/oRtFEA8cWGf8Rg8HW/30QDOHbc0POkqyvTdodXawjLG3jKzl
JtPWUl2lPJvVUE9fZWsFxkbUBs7a65lrKmHr1lDgEZ4JH+VX3kutI7xw/8ir
kkll7ToF20A/TPfdVnBzwDpC4FGxBXJkTFzu47mhb6jwvRzqXOGx197yrPSq
cnbxmBR2LmkPdn/A8L/a7IzSqs4inNosiGOOLr8Ehd9dZ9Fq39JaxmEHHfyG
ETX8p1ch3poK4cpumPy9op+HsGd7Lz4pAX16QWTHcIYeT0qw+yczawOZvTkF
AQNEQnwLfEcPg08mMXWOkHEi6jeNkAlmT2nJU1BYIN0zXbtZngzjrgsmXQSQ
CvYFzehn3w63Q2KIvXRNcon9SS4B1LoGumyMWwnaOJhmYZ24saXghKGi81Cs
n6S1KR7ke/bQoIdH2+ltbwbWudjfP/ghGPQgevV6uTmvIWjS2N4uZNy2xn1P
7Nq3fViL6dG3QTEP7Lu9wJFZ4LZubZrnva01rNd6NlQGWl2S/A6xT+kP+4Ln
CEmBGlfbFPUWTvVQJVN7t2OP4z/AoFsJPK4fD1PS9TW6sDVBLkiYbqzuWW6A
oY/q6E9jm9NwjRSXukkhz+3W7hcdTVBcHxW6Kuii0t78lqQfUdEldvNIFZK0
dX5q4ZHODnugyKi9wv2Qlf+G4ROS2fNPjJwIy7im+SxVh6N53JNngZiqwfbm
Dh6jtI6+iNuaIuIVD7dC9CpqH+t7GOZTPqrntibFaBdkMhzOl55i2du43a+v
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

-->

</rfc>

