<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.3.12) -->
<?rfc tocindent="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dogru-cedulon-decision-profile-04" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Cedulon Decision Profile">Cedulon Decision Profile: Reconciling an Agent's Decisions Against Its Effects</title>
    <seriesInfo name="Internet-Draft" value="draft-dogru-cedulon-decision-profile-04"/>
    <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="October" day="05"/>
    <area>sec</area>
    <keyword>Cedulon</keyword>
    <keyword>agent</keyword>
    <keyword>decision</keyword>
    <keyword>reconciliation</keyword>
    <keyword>completeness</keyword>
    <abstract>
      <?line 89?>

<t>The Cedulon core document reconciles an issuer's signed Spend Receipts
against an authenticated extract of a payment rail and reports, over a
declared population, that no settlement lacks a receipt and no settled
receipt is absent from the rail. Money is the special case that
document implements. This document defines a second population on the
same reconciler. A Decision Record is signed by the party that decided
whether an agent may act; an Effect Extract is an authenticated list
of the effects that actually occurred on a channel. An allow must be
matched by exactly one effect whose content hash the record named; a
refusal must be matched by none. The Decision Record claim set, the
Effect Extract shape, the points at which the reconciliation departs
from the spend rules, the finding codes, and one media type are
defined. This revision lets a deployment sign checkpoints under a
separate key inside the decider root, states that single-row extracts
are receipts rather than windows and what a deployment that signs
them must state, and records a second implementation and two outside
runs of its test vectors. The text is
provisional; the companion implementation carrying this profile is
published.</t>
    </abstract>
  </front>
  <middle>
    <?line 111?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Cedulon core document <xref target="CEDULON"/> answers one question
about an agent that spends: did every settlement on the rail have a
receipt behind it, and did every settled receipt reach the rail? It
answers it by closing three signed objects over a declared population:
the issuer's records, an authenticated extract of the counterparty
system, and epoch checkpoints that total the records. The verifier
holds the keys out of band and the report names the population it
covered.</t>
      <t>An agent that acts without spending raises the same question with
different nouns. A party decided whether the agent may reply, post,
send, or call; a channel carried whatever the agent then did. Did every
effect on the channel have a decision behind it? Did every allowed
action occur, once, with the content that was allowed? Did anything
occur that was refused? Section 19 of <xref target="CEDULON"/> reserves later
profiles in name only, and its Section 19.3 sketches the same
completeness calculus for other consumable resources: compute, data,
energy. This document is a different population on the same
reconciler, decisions against effects rather than another unit of
spend, and it is the first profile written out.</t>
      <t>The profile keeps the core's three roles and its verification
algorithm. What changes is the record, the row, the binding between
them, and the words the report uses. What does not change is
measured: the companion implementation holds the spend behaviour byte
for byte behind a golden file, and every rule in this document that
departs from the spend rules is stated as a departure.</t>
      <t>Three documents written at the same time ask adjacent questions about
the same agent, and the boundary between them is worth stating so
that a reader does not take one for another. This profile reconciles
signed decisions against the effects a channel carried. <xref target="AEB"/>
runs from the invocation of an action, through its classification,
to an authenticated reconciliation of the effect it produced;
authorization, reservation, and the provider's entry are stages on
that path, not the whole of it. <xref target="OUTCOME"/> reconciles the exact
action and its source against an observation of the effect whose
source the relying party selects, so the observation is independent
where that party chose an independent source and not otherwise, and
it keeps missing evidence indeterminate rather than resolving it
either way. <xref target="ABAK"/> covers the delivery and enforcement of a
governance control on its way to one or more enforcement points. The
finding this profile exists for, an effect that occurred against a
refusal (<xref target="binding"/>), establishes that the decision and effect
populations did not reconcile; it does not by itself establish
whether the failure lay in control delivery, enforcement, another
path, or elsewhere. Where a deployment realizes a refusal through a
downstream control path, the evidence for that path is the question
<xref target="ABAK"/> addresses; where no such path exists, this profile does not
imply one.</t>
      <t>This document is a companion to the core document, not a revision of
it. It is not an IETF working-group item. Its requirement language is
provisional in the sense Section 19 of <xref target="CEDULON"/> gives the
structures it reserves: a direction written with the core's
discipline, not a commitment, and a later revision may change it. The
companion implementation carrying this profile is published
(<xref target="impl-status"/>).</t>
      <section anchor="boundary-rule">
        <name>The boundary rule</name>
        <t>One rule runs under several choices in this document, and it is
stated here once so that a reader meets the rule before meeting the
places where it was learned. A state that exists in an implementation
but never crosses the boundary to the party who has to rely on it
does not exist for that party. A property that a text does not state
is a property the text does not have, whatever the code underneath
does. In both forms the thing is present in the model and absent at
the boundary, and only the boundary is what somebody else can rely
on.</t>
        <t>The rule was learned three times, in three shapes. A consistency
checker written against nothing of this document's returned a third
verdict, could-not-compare, that its caller still read as a boolean,
so the third value fell into the same bucket as inconsistent until an
ordering rule and a reason string of its own made it observable. The
companion implementation carried two refusals that it never
delivered: a lock it could not take surfaced as an uncaught exception
rather than as the named refusal the core describes, and a state
path replaced by a link was reported as another writer because the
fingerprint was read before the path was checked. And this document
did not say whether the binding orders the two clocks until a reader
measured the companion and found the question unanswered
(<xref target="binding"/>). The first two are the state form of the rule; the
third is the text form.</t>
        <t>The consequence for this text is that a silence is stated as a
silence. Where the profile does not order, compare, or enforce
something a reader might reasonably expect it to, the sentence that
says so is written, so that a later reader against a shipped
implementation finds a design note rather than a finding.</t>
      </section>
    </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>Terms defined in the core document keep their meaning here: Policy
Decision Point, epoch checkpoint, trust root, population, finding,
warning, guarantee. The following are specific to this profile.</t>
      <dl>
        <dt>Decider:</dt>
        <dd>
          <t>The party that decides, per request, whether the agent may act. It
signs Decision Records, and epoch checkpoints over them unless the
deployment names a separate checkpoint key (<xref target="record-chain"/>). Its
key or keys form the issuer root of this profile (<xref target="roots"/>).</t>
        </dd>
        <dt>Subject:</dt>
        <dd>
          <t>The party on whose request the decision was taken, named in the
record as an opaque identifier.</t>
        </dd>
        <dt>Decision Record:</dt>
        <dd>
          <t>A COSE_Sign1 object signed by the Decider stating one decision:
allow, deny, or defer, with the request it answered, the policy it
applied, and, for an allow, the reference and the content hash of
the effect it allowed (<xref target="record"/>).</t>
        </dd>
        <dt>Effect:</dt>
        <dd>
          <t>One thing that happened on a channel as a result of, or in the
absence of, a decision: a message sent, a post made, a call placed.
It is identified by a reference, classed by a short name, and bound
by the SHA-256 of its content.</t>
        </dd>
        <dt>Channel:</dt>
        <dd>
          <t>The system on which effects occur and from which an Effect Extract
is taken. It plays the role a rail plays in the core document.</t>
        </dd>
        <dt>Effect Extract:</dt>
        <dd>
          <t>The authenticated list of effects on one channel, for one Decider,
over one window (<xref target="extract"/>). It plays the role a rail extract
plays in the core document.</t>
        </dd>
        <dt>Refusal:</dt>
        <dd>
          <t>A Decision Record whose decision is deny or defer. A refusal expects
no effect.</t>
        </dd>
      </dl>
    </section>
    <section anchor="population">
      <name>The population</name>
      <t>The core document's reconciler closes an issuer record against a
counterparty row over a declared population. This profile fills the
same three roles:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Role</th>
            <th align="left">Spend (core)</th>
            <th align="left">Decision (this document)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Issuer record</td>
            <td align="left">Spend Receipt</td>
            <td align="left">Decision Record</td>
          </tr>
          <tr>
            <td align="left">Counterparty row</td>
            <td align="left">settlement record on a rail extract</td>
            <td align="left">effect row on an Effect Extract</td>
          </tr>
          <tr>
            <td align="left">Match key</td>
            <td align="left">
              <tt>ref</tt></td>
            <td align="left">
              <tt>ref</tt></td>
          </tr>
          <tr>
            <td align="left">Content binding</td>
            <td align="left">amount and currency equal</td>
            <td align="left">allow: a row exists and <tt>effectHash</tt> is equal; refusal: no row</td>
          </tr>
          <tr>
            <td align="left">Record that expects no row</td>
            <td align="left">
              <tt>outcome</tt> aborted</td>
            <td align="left">
              <tt>decision</tt> deny or defer</td>
          </tr>
          <tr>
            <td align="left">Aggregate witness</td>
            <td align="left">checkpoint <tt>totals</tt> per currency</td>
            <td align="left">checkpoint <tt>totals</tt> per decision kind</td>
          </tr>
          <tr>
            <td align="left">Declared population</td>
            <td align="left">account, rail, window</td>
            <td align="left">decider, channel, window</td>
          </tr>
        </tbody>
      </table>
      <t>Which population a presented document belongs to is the verifier's
call, made by the profile it applies, and never the document's. A
verifier applying this profile <bcp14>MUST</bcp14> read every presented record as a
Decision Record and every presented extract as an Effect Extract, and
<bcp14>MUST</bcp14> refuse by name a document that does not have that shape; it <bcp14>MUST
NOT</bcp14> infer the population from members a body happens to carry
(<tt>MUST-DP-1</tt>). The companion found the alternative wrong in both
directions: a rail extract that added a member named <tt>effects</tt> was
re-routed away from the spend rules it was subject to, and an Effect
Extract handed to the spend rules crashed before any report existed.
Under this profile a rail extract is the wrong document and is refused
as one; under the spend rules an Effect Extract is refused the same
way.</t>
    </section>
    <section anchor="record">
      <name>Decision Record</name>
      <t>A Decision Record is COSE_Sign1 with the header profile of Section 6.2
of <xref target="CEDULON"/>: deterministic CBOR, <tt>alg</tt> <tt>-19</tt> (Ed25519,
<xref target="RFC9864"/>), <tt>kid</tt> mandatory and computed as the core states, an empty
unprotected header refused by name if not empty, and the payload the
CBOR encoding of the claim map below. The content type header
parameter is <tt>application/cedulon-decision-record+cbor</tt> (<xref target="iana"/>).</t>
      <section anchor="record-labels">
        <name>Claim labels</name>
        <t>The labels lie in the Private Use range of the CWT Claims registry
<xref target="RFC8392"/>, below the block the core document uses for the Decision
Token (<tt>-70301</tt> to <tt>-70305</tt>) and the countersignature (<tt>-70401</tt>,
<tt>-70402</tt>), so that no two Cedulon claim maps share a label. Every
claim annotated <tt>hash</tt> carries a SHA-256 <xref target="RFC6234"/> digest rendered
as exactly 64 lowercase hexadecimal characters, the grammar of Section
6.1 of <xref target="CEDULON"/>, and a value outside that grammar is
refused by name at signing and at verification.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Claim</th>
              <th align="left">CBOR type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-70501</td>
              <td align="left">decider</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70502</td>
              <td align="left">subject</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70503</td>
              <td align="left">requestHash</td>
              <td align="left">tstr (hash)</td>
            </tr>
            <tr>
              <td align="left">-70504</td>
              <td align="left">policyHash</td>
              <td align="left">tstr (hash)</td>
            </tr>
            <tr>
              <td align="left">-70505</td>
              <td align="left">inputsHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
            <tr>
              <td align="left">-70506</td>
              <td align="left">decision</td>
              <td align="left">tstr (<tt>allow</tt> / <tt>deny</tt> / <tt>defer</tt>)</td>
            </tr>
            <tr>
              <td align="left">-70507</td>
              <td align="left">reasonCode</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70508</td>
              <td align="left">ref</td>
              <td align="left">tstr / null</td>
            </tr>
            <tr>
              <td align="left">-70509</td>
              <td align="left">effectHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
            <tr>
              <td align="left">-70510</td>
              <td align="left">timestampMs</td>
              <td align="left">uint</td>
            </tr>
            <tr>
              <td align="left">-70511</td>
              <td align="left">nonce</td>
              <td align="left">tstr</td>
            </tr>
            <tr>
              <td align="left">-70512</td>
              <td align="left">prevRecordHash</td>
              <td align="left">tstr (hash) / null</td>
            </tr>
            <tr>
              <td align="left">-70513</td>
              <td align="left">effectClass</td>
              <td align="left">tstr / null</td>
            </tr>
          </tbody>
        </table>
        <t>All thirteen labels are always present; a nullable claim carries CBOR
null when it has no value. The thirteenth label is new in
-01; a record with twelve is refused at verification as a claim
set that does not have this shape, and the companion carries no
records signed under the earlier set outside its own fixtures.</t>
        <t><tt>decider</tt> and <tt>subject</tt> are opaque identifiers chosen by the
deployment. <tt>requestHash</tt> is the SHA-256 of the request the Decider
evaluated. The encoding is fixed: the canonical encoding of Section
7 of <xref target="CEDULON"/> when the request is a JSON document, and its
UTF-8 octets when it is text. The request's fields are not fixed by
this document, and a deployment <bcp14>MUST</bcp14> state what it hashes.
<tt>policyHash</tt> is
the SHA-256 of the canonical policy document the Decider applied.
<tt>inputsHash</tt>, when not null, is the SHA-256 of whatever further
context the Decider consulted, encoded the same way, so that a later
reader can tell two decisions on the same request apart by what else
was on the table. As for the request, the fields of that context are
not fixed by this document, and a deployment <bcp14>MUST</bcp14> state what it hashes
and how it presents the hashed context beside the record. <tt>reasonCode</tt> is a short token the deployment
defines; it is carried, not interpreted.</t>
        <t><tt>ref</tt> is the reference under which the allowed effect will appear on
the channel, and the key on which the reconciliation matches.
<tt>effectHash</tt> is the SHA-256 of the content of the effect the Decider
allowed, over the octets the channel will carry: for a text reply, the
UTF-8 octets of the text. The Effect Extract computes the same digest
over the same octets (<xref target="extract"/>), so equality of the two is equality
of content.</t>
        <t><tt>effectClass</tt> is the class of the effect the Decider allowed, a short
name in the vocabulary the channel defines, such as a reply or a
post. An Effect Extract row carries the same claim in the same
vocabulary (<xref target="extract-schema"/>), so equality of the two is equality
of class. The class is under the Decider's signature so that what the
Decider allowed cannot be read as one class by one reader and another
by the next without changing what was signed; an earlier revision
carried it on the row only and named the gap.</t>
        <t><tt>timestampMs</tt> is the decision time in POSIX milliseconds. <tt>nonce</tt>
identifies the record. <tt>prevRecordHash</tt> links records into the
Decider's chain: it is the SHA-256 of the previous record's COSE_Sign1
octets, the same input the core's <tt>receiptHash</tt> takes on the COSE path
(Section 7.1 of <xref target="CEDULON"/>), or null for the first record
of a chain.</t>
      </section>
      <section anchor="record-rules">
        <name>Claim rules</name>
        <t>A signer <bcp14>MUST</bcp14> refuse to sign, and a verifier <bcp14>MUST</bcp14> reject, a claim set
that breaks any of the following, naming the rule in the refusal
(<tt>MUST-DP-2</tt>):</t>
        <ul spacing="normal">
          <li>
            <t><tt>decision</tt> is one of <tt>allow</tt>, <tt>deny</tt>, <tt>defer</tt>.</t>
          </li>
          <li>
            <t>Every hash-annotated claim that is not null matches the hash grammar.</t>
          </li>
          <li>
            <t><tt>timestampMs</tt> is a non-negative integer of magnitude at most 2^53 - 1,
the <tt>uint</tt> the label table states; a CBOR decoder hands back any
number, and the rule is what makes the table true.</t>
          </li>
          <li>
            <t>An allow carries a non-empty <tt>ref</tt> and a non-null <tt>effectHash</tt>. An
allow that names no effect is a decision the reconciliation cannot
close, and an allow that names no reference is one it cannot find.</t>
          </li>
          <li>
            <t>An allow carries a non-empty <tt>effectClass</tt>. An allow that names no
class is one whose effect could be matched by a row of any class
under the same reference and content, which is the substitution
<xref target="security"/> names.</t>
          </li>
          <li>
            <t>A refusal <bcp14>MAY</bcp14> carry an <tt>effectClass</tt>: it names the class of what
was refused, and it is carried, not measured. A refusal binds to
the absence of a row of any class.</t>
          </li>
          <li>
            <t>A refusal carries <tt>effectHash</tt> null. A refusal binds to the absence
of an effect, never to a content hash, so a hash on a refusal would
be a claim the audit cannot measure and a second reading of whether
the effect occurred. A refusal <bcp14>MAY</bcp14> carry a <tt>ref</tt>: it names what was
refused, and an effect appearing under that reference is the worst
finding this profile has (<xref target="codes"/>).</t>
          </li>
        </ul>
        <t>The verifier <bcp14>MUST</bcp14> apply these rules itself, on the claim map it
decoded from the signed payload, and <bcp14>MUST NOT</bcp14> rely on the signer
having applied them (<tt>MUST-DP-3</tt>). The Decider is the party under
audit. A Decider that signed a well-formed COSE_Sign1 over a claim map
that skips a rule has produced an object whose signature verifies, and
a verifier that checked only the signature and the equality of the
decoded map with the presented claims would attest it. The companion
implementation did exactly that until it was measured: an allow with
no reference, signed below the signer's own rules under the pinned
decider key, verified true, was attested, was counted as unmatched,
and the audit still said the books balanced. The rules now run at both
ends.</t>
      </section>
      <section anchor="record-presentation">
        <name>Presentation and confusion</name>
        <t>A Decision Record is presented as Section 6.3 of <xref target="CEDULON"/>
states for the core's COSE objects: the signed octets, the decoded
claim set, and the Decider's public key as a SubjectPublicKeyInfo PEM
beside them. The carried key is not an identity source. Under a pinned
decider key a record that verifies under the pin while carrying
another key is reported as <tt>carried-key-mismatch</tt>, a warning, and
stays attested; with no pin held the signature check that runs against
the carried key says the record is internally consistent and nothing
about who signed it.</t>
        <t>A Decision Record is not a Decision Token. The core's Decision Token
(Section 8 of <xref target="CEDULON"/>) is the portable encoding of a
PDP allow, carried by the party that will spend; a Decision Record is
the Decider's own log of what it decided, kept for audit, and it
exists for refusals as well. The two carry different content types and
different claim maps. A verifier <bcp14>MUST</bcp14> reject a Decision Record whose
content type is not <tt>application/cedulon-decision-record+cbor</tt>, and
<bcp14>MUST</bcp14> reject a token presented as a record or a record presented as a
token, on the content type, before the signature is checked and
before any claim is read (<tt>MUST-DP-4</tt>).</t>
      </section>
      <section anchor="record-chain">
        <name>The Decider's chain and checkpoints</name>
        <t>Decision Records chain on <tt>prevRecordHash</tt> the way Spend Receipts chain
on <tt>prevReceiptHash</tt>, and epoch checkpoints over them, signed under
the decider root as set out below, carry the checkpoint claim set of
Section 11.1 of
<xref target="CEDULON"/> unchanged: <tt>receiptCount</tt> is the number of
records in the window, <tt>chainHeadHash</tt> is the SHA-256 of the last
record's COSE_Sign1 octets, and <tt>totals</tt> is a map from the three
decision kinds to decimal counts, <tt>{"allow": n, "deny": n, "defer":
n}</tt>, each rendered as a text string as the core renders its currency
totals. A verifier compares the totals it computes over the attested
records in the window against the signed map, and a difference is
<tt>checkpoint-total-mismatch</tt> as in the core.</t>
        <t>The key that signs a checkpoint is the key the core's verification
procedure obtains for the checkpoint issuer (Section 11.4 of
<xref target="CEDULON"/>, step 11), and Section 10.1 of the core has the verifier
check checkpoints against the issuer root. The core admits a root of
several keys so that a key can be rotated (<tt>MUST-T4-12</tt>); this profile
adds a split by role. The decider root holds the key under which
Decision Records are attested and, where the deployment names one, a
separate key under which, of the Decider's objects, only checkpoints
are attested, such as that of a process
beside the Decider that signs no Decision Record. Where that key also
signs effect extracts, the extract root and the decider root share a
key, and <tt>MUST-DP-9</tt> makes the guarantee conditional. A deployment <bcp14>MUST</bcp14> state which key signs its
checkpoints; a verifier <bcp14>MUST</bcp14> hold that key out of band as part of the
decider root and verify every checkpoint under it, and a Decision
Record that verifies only under the checkpoint key is
<tt>issuer-key-mismatch</tt> (<tt>MUST-DP-11</tt>). A separate checkpoint key held by the same
operator as the decider root is a second key, not a second trust
domain, and a report <bcp14>MUST NOT</bcp14> present it as independent of the
Decider. A checkpoint signer is not the witness of Section 11 of
<xref target="CEDULON"/>, which records presented checkpoints so that a fork can be
reached; naming one does not change that role.</t>
        <t>Two records that claim the same position in a chain cannot both link
to it: the second record's <tt>prevRecordHash</tt> must be the first's hash,
so a Decider that signs two decisions under one nonce, or presents one
record twice to the same reader, breaks its own chain and the walk
names the break. A verifier <bcp14>MUST</bcp14> walk the chain over every presented
record that carries the pinned decider key, not only over the records
that verified, so that a record that claims the pin and fails the
rules is named by the walk rather than dropped from the population
without a word (<tt>MUST-DP-5</tt>).</t>
        <t>What the walk establishes is bounded by what one reader holds. A
Decider can sign two successors to the same predecessor and show one
branch to one reader and the other branch to another; each reader
walks a linear chain that verifies, and neither walk names a break.
An earlier revision called the chain the equivocation control of
this profile, which overstated it and contradicted the core: Section
11 of <xref target="CEDULON"/> states that the presented chain alone cannot satisfy
the equivocation requirement, because its epochs are consecutive by
construction, and that the comparison which reaches a fork is between
the presented checkpoints and the copies a witness recorded
(<tt>MUST-T11-3</tt>). That rule applies to this profile unchanged. The
Decider's epoch checkpoints are the Signed Statements the witness
records, the verifier compares the witness's copies against the
presented chain, and two verified checkpoints for one epoch with
different hashes are <tt>equivocation</tt>. Where no witness was consulted,
the chain controls equivocation within the population one reader
holds and nothing beyond it, and a report <bcp14>MUST NOT</bcp14> present the chain
as settling more than that (the core's <tt>MUST-T11-9</tt>, with the nouns
renamed).</t>
      </section>
    </section>
    <section anchor="extract">
      <name>Effect Extract Profile</name>
      <t>A verifier checks completeness against an Effect Extract, not against
the Decider's own records alone. The extract is the channel's account
of what happened, obtained independently of the Decider, and the
profile is only as strong as that independence (<xref target="roots"/>).</t>
      <section anchor="extract-schema">
        <name>Body and row schema</name>
        <t>The extract body is one JSON document with exactly this shape:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Member</th>
              <th align="left">JSON type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">deciderId</td>
              <td align="left">string (non-empty)</td>
            </tr>
            <tr>
              <td align="left">channelId</td>
              <td align="left">string (non-empty)</td>
            </tr>
            <tr>
              <td align="left">windowStartMs</td>
              <td align="left">number (POSIX milliseconds, a safe integer)</td>
            </tr>
            <tr>
              <td align="left">windowEndMs</td>
              <td align="left">number (POSIX milliseconds, a safe integer, greater than <tt>windowStartMs</tt>)</td>
            </tr>
            <tr>
              <td align="left">effects</td>
              <td align="left">array of effect rows</td>
            </tr>
          </tbody>
        </table>
        <t>Each effect row is a JSON object with exactly these members:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Member</th>
              <th align="left">JSON type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ref</td>
              <td align="left">string (non-empty; the reference the Decision Record named)</td>
            </tr>
            <tr>
              <td align="left">effectHash</td>
              <td align="left">string (SHA-256 of the effect's content, 64 lowercase hex)</td>
            </tr>
            <tr>
              <td align="left">effectClass</td>
              <td align="left">string (non-empty; a short class name the channel defines, such as a reply or a post, in the vocabulary the Decision Record's <tt>effectClass</tt> uses)</td>
            </tr>
            <tr>
              <td align="left">timestampMs</td>
              <td align="left">number (POSIX milliseconds, a safe integer, inside the window)</td>
            </tr>
            <tr>
              <td align="left">actor</td>
              <td align="left">string (optional; the party the effect reached)</td>
            </tr>
          </tbody>
        </table>
        <t>These member names are normative. The body and its rows follow the
core's rail extract (Section 9 of <xref target="CEDULON"/>) in every rule
that document states for a JSON body: the text is read for a repeated
member name before it is parsed and refused as <tt>json-duplicate-key</tt>;
integers are safe integers; the window is half-open and <bcp14>MUST</bcp14> end after
it starts; a missing member, a wrong type, an empty identifier, or a
hash outside the grammar is refused by name at both ends, by the
signer before it signs and by the verifier before it checks a
signature.</t>
        <t>The profile departs from the rail extract at two points, and a reader
who knows the core should note both (<tt>MUST-DP-6</tt>):</t>
        <ul spacing="normal">
          <li>
            <t>A member this document does not name is refused, on the body and on
a row. The core lets a rail add members of its own because a rail is
a system the profile does not control; an Effect Extract is produced
by a process the deployment does control (<xref target="roots"/>), and the
companion measured what a free member can do to a population
(<xref target="population"/>). A later revision may open this once a channel that
needs its own members is measured.</t>
          </li>
          <li>
            <t>A row whose <tt>timestampMs</tt> falls outside <tt>[windowStartMs,
windowEndMs)</tt> makes the whole extract malformed, refused as
<tt>effect-outside-window</tt> before any signature is checked. The core
accepts such a rail extract and names the row
(<tt>extract-scope-mismatch</tt>). Here the extract is the deployment's own
document and a window it did not keep is a document it did not
produce correctly: a signer applying this schema never produces such
an extract, and a verifier refuses one that is presented as a
document, whatever else it may also name about its rows. The trade
is stated so it can be reversed: a single row out of place fails the
whole window closed.</t>
          </li>
        </ul>
        <t><tt>effectHash</tt> on a row is computed by the extract's signer over the
same octets a Decider hashes for its <tt>effectHash</tt> claim: the content
as the channel carried it. A deployment <bcp14>MUST</bcp14> state those octets once
for both sides; the companion's example channel hashes the UTF-8
octets of the message text.</t>
      </section>
      <section anchor="extract-auth">
        <name>Authentication and scope</name>
        <t>The extract is signed the way a rail extract is signed: Ed25519
<xref target="RFC8032"/> over the UTF-8 octets of the <xref target="RFC8785"/> encoding of the
body, with the signature as base64 and the signer's public key as a
SubjectPublicKeyInfo PEM beside the body, neither inside the signed
octets. It is a JSON document with a detached signature, not a COSE
object, and like the rail extract it has no media type. An earlier revision gave as the reason that the core registers names only for
objects whose content type is checked inside a protected header; that
test decides what a name must be bound to, not whether a
representation needs one, and it is withdrawn as the reason. The
reason is <xref target="population"/>: which population a presented document
belongs to is the verifier's call, made by the profile it applies and
by the decider, channel, and window it declares (<tt>MUST-DP-1</tt>,
<tt>MUST-DP-7</tt>), and never the document's. That declaration is the typed
outer context a media type would otherwise supply. A name on the
extract would be a self-description the verifier is told not to
select on, and this document does not register one that its own rule
forbids relying on. The day an extract is itself wrapped as a Signed
Statement and needs a content type in a protected header, an
<tt>application/cedulon-effect-extract+json</tt> registration is the name to
make, without changing the verifier's rule; the extract is not
recorded with a witness today. Section 9.3 of <xref target="CEDULON"/>
applies unchanged: a
signature proves internal consistency and not origin; the verifier
<bcp14>MUST</bcp14> hold the extract signer's key out of band and <bcp14>MUST</bcp14> compare keys
as SubjectPublicKeyInfo DER; with no key held the guarantee is
conditional and <tt>unauthenticated-extract</tt> is reported; with a key
held, an extract that does not verify under it is
<tt>extract-key-mismatch</tt> and its rows are not reconciled
(<tt>settlement-comparison-skipped</tt>, the core's name for the same
condition).</t>
        <t>The extract is scoped to one Decider, one channel, and one window,
and Section 9.4 of <xref target="CEDULON"/> applies with the nouns
renamed: a verifier that knows which Decider, channel, and window it
audits <bcp14>MUST</bcp14> check the extract against them and <bcp14>MUST</bcp14> fail closed on a
mismatch (<tt>extract-scope-mismatch</tt>); one that has not stated the
window <bcp14>MUST</bcp14> report <tt>unstated-audit-window</tt>, one that has not stated
the Decider or the channel <bcp14>MUST</bcp14> report <tt>unstated-audit-scope</tt>, and in
either case the guarantee is conditional. The strongest line this
profile can print, a balanced audit under an unconditional guarantee,
is true of one Decider, on one channel, over one window, and a report
that carries it <bcp14>MUST</bcp14> also carry those three (<tt>MUST-DP-7</tt>).</t>
      </section>
    </section>
    <section anchor="reconciliation">
      <name>Reconciliation</name>
      <t>The verification algorithm of Section 11.4 of <xref target="CEDULON"/>
runs unchanged over this population: establish the subject, verify
the extract, check scope, resolve records against the decider root,
walk the chain, index both sides by <tt>ref</tt>, match, decode and walk the
checkpoints, consult the witness if one is supplied, and decide. This
section states only what the algorithm reads differently.</t>
      <section anchor="binding">
        <name>What binds</name>
        <t>A Decision Record expects a row when its decision is <tt>allow</tt>, and
expects none when it is a refusal. For a <tt>ref</tt> that appears once on
each side:</t>
        <ul spacing="normal">
          <li>
            <t>an allow and a row bind when the row's <tt>effectHash</tt> equals the
record's <tt>effectHash</tt> and the row's <tt>effectClass</tt> equals the
record's <tt>effectClass</tt>; a difference in the hash is
<tt>effect-mismatch</tt> (the content that occurred is not the content
that was allowed), and a difference in the class with the hash
equal is <tt>effect-class-mismatch</tt> (the content that was allowed
occurred as something else). The hash is compared first; a row
that differs in both is reported for its content;</t>
          </li>
          <li>
            <t>an allow with no row is <tt>decision-without-effect</tt>;</t>
          </li>
          <li>
            <t>a row with no record is <tt>effect-without-decision</tt>;</t>
          </li>
          <li>
            <t>a row whose <tt>ref</tt> a refusal names is <tt>effect-against-refusal</tt>.</t>
          </li>
        </ul>
        <t>The last is the finding this profile exists for. A spend audit has no
row that should not be there in the same sense: an aborted receipt
that still carries its reference and a settlement under that
reference is reported by the core as a settlement without a receipt,
and it never told the two cases apart. Here a refusal that was
followed by the effect it refused is a different fact from an effect
nobody decided on, and it has its own name.</t>
        <t>A <tt>ref</tt> that appears more than once on a side is <tt>duplicate-ref</tt> as in
the core, and the repeating reference is then reconciled by count
rather than by amount: there is nothing to sum. More rows than
records under one reference is <tt>effect-without-decision</tt>; more
records than rows is <tt>decision-without-effect</tt>.</t>
        <t>There is no amount, no currency, no manifest, no terms, and no
counterparty axis on this profile. The core's <tt>counterparty-unbound</tt>
scope record is not emitted: <tt>effectHash</tt> binds the content of the
effect itself, which is more than a payee name ever bound on spend,
and <tt>actor</tt> on a row is carried for the reader, not measured. The
core's boundary rule applies unchanged: an unmatched item inside the
clock-skew allowance of a window edge is <tt>boundary-deferred</tt>, and a
closing-edge allow whose <tt>ref</tt> the following extract names is
carried, not a finding. The Effect Extract declares no allowance of
its own (<xref target="extract-schema"/>); the verifier applies the core's default,
which the companion holds at five minutes.</t>
        <t>Some deployments sign one extract per effect row, with a window that
holds that row alone. Such an extract is a receipt for its row: it
states nothing about any other reference, and its window need not
adjoin the next one. For the boundary rule, the following extract of
an item deferred at the closing edge of such a window is one whose
window contains the item's <tt>timestampMs</tt>; a later single-row extract
that does not contain it is not the following extract and does not
harden the item. Under single-row extracts alone, an allow with no row
hardens into <tt>decision-without-effect</tt> only when another row's extract
happens to cover its time; otherwise it stays <tt>boundary-deferred</tt> near
a window edge and is outside the extracts' scope elsewhere, so a
reader of single-row extracts alone cannot establish that every allow
had its effect. A deployment that signs single-row extracts <bcp14>MUST</bcp14> state
so, and <bcp14>MUST</bcp14> state how a reader learns which allows should have a row,
for example a window extract over the audited period or a signed list
of the references that produced an effect (<tt>MUST-DP-12</tt>). An unsigned
index is not such a statement.</t>
        <t>The binding does not order the two clocks. A row's <tt>timestampMs</tt> is
checked against the window it sits in and not against the
<tt>timestampMs</tt> of the record it answers, so a row dated before the
record it binds to binds as if it had followed it: the profile
compares content and reference, not sequence. The core's spend
binding is the same, and neither document has claimed otherwise;
the gap is named here because a reader of the companion measured it
and found it unstated. A deployment that needs the order can compare
the two stamps within the same allowance; this revision names no
finding for that comparison, and a later revision may. The paragraph
is the text form of the rule in <xref target="boundary-rule"/>: the silence costs
a sentence here, and would cost a finding later.</t>
      </section>
      <section anchor="conservation">
        <name>Conservation</name>
        <t>With <tt>|R|</tt> the in-scope Decision Records and <tt>|E|</tt> the effect rows, the
identities the core report publishes hold with the words changed:</t>
        <artwork><![CDATA[
|R|      = refusals + allows
refusals = deny + defer
allows   = matched + deferred + carried
           + unmatched + repeated + unreconciled
|E|      = matched + deferred
           + unmatched + repeated + unreconciled
matched on |R| equals matched on |E|
]]></artwork>
        <t>A report under this profile <bcp14>MUST</bcp14> publish these counts and <bcp14>MUST</bcp14> name
the population they were computed over (<tt>MUST-DP-8</tt>), for the reason
the core gives: a report whose counts do not close is a report that
lost a record somewhere, and a reader is entitled to see that without
re-running the audit. The report publishes refusals as one count, the
core's <tt>aborted</tt>; the split of that count into deny and defer is the
checkpoint's <tt>totals</tt> (<xref target="record-chain"/>), not a counter of the
report.</t>
      </section>
      <section anchor="codes">
        <name>Finding codes</name>
        <t>The identifiers below are for diagnostic output and are not an
interoperability surface, as Section 11.5 of <xref target="CEDULON"/>
states for the core's codes. Five are new to this profile:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Effect</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">decision-without-effect</td>
              <td align="left">audit fails</td>
              <td align="left">An allow names a reference under which no effect occurred, or a reference had more records than rows</td>
            </tr>
            <tr>
              <td align="left">effect-without-decision</td>
              <td align="left">audit fails</td>
              <td align="left">An effect occurred under a reference no Decision Record names, or a reference had more rows than records</td>
            </tr>
            <tr>
              <td align="left">effect-against-refusal</td>
              <td align="left">audit fails</td>
              <td align="left">An effect occurred under a reference a refusal names</td>
            </tr>
            <tr>
              <td align="left">effect-mismatch</td>
              <td align="left">audit fails</td>
              <td align="left">The effect that occurred does not carry the content hash the allow named</td>
            </tr>
            <tr>
              <td align="left">effect-class-mismatch</td>
              <td align="left">audit fails</td>
              <td align="left">The effect that occurred carries the content hash the allow named and a class the allow did not</td>
            </tr>
          </tbody>
        </table>
        <t>The remaining codes a report under this profile can carry are the
core's, with the same effect on the verdict and the guarantee:
<tt>duplicate-ref</tt>, <tt>boundary-deferred</tt>, <tt>receipt-chain-break</tt> for a
break in the Decider's chain (signature, rule, or link),
<tt>checkpoint-total-mismatch</tt>, <tt>checkpoint-head-mismatch</tt>,
<tt>window-coverage</tt>, <tt>equivocation</tt>, <tt>unauthenticated-extract</tt>,
<tt>extract-key-mismatch</tt>, <tt>extract-scope-mismatch</tt>,
<tt>extract-settlement-mismatch</tt> (a caller-supplied row list that
disagrees with the extract), <tt>settlement-comparison-skipped</tt>,
<tt>trust-key-unreadable</tt>, <tt>unauthenticated-issuer</tt>,
<tt>issuer-key-mismatch</tt>, <tt>carried-key-mismatch</tt>,
<tt>unstated-audit-window</tt>, <tt>unstated-audit-scope</tt>, the witness codes,
and <tt>malformed-policy-hash</tt>; the other hash claims of a Decision
Record are refused at verification (<xref target="record-rules"/>) and reach the
chain walk rather than a malformed-hash code. Two code names carry a
spend noun onto this profile
(<tt>receipt-chain-break</tt>, <tt>settlement-comparison-skipped</tt>); they are
kept so that one catalogue serves both populations, and a later
revision may add decision-side aliases.
The codes the core defines for a Trade Manifest, a payee
countersignature, a beneficiary, or a counterparty are not reachable
on this profile.</t>
        <t>The sentences a report prints beside those codes are another matter.
An operator reading a decision report <bcp14>SHOULD NOT</bcp14> have to translate
"settlement" as "effect" or "receipt" as "decision record"; an
implementation <bcp14>SHOULD</bcp14> print the sentence in the population's own
words, and the companion holds that under a test that runs every
conformance case and refuses a spend noun in any decision sentence.
Counter names in a returned structure are diagnostic and <bcp14>MAY</bcp14> keep the
core's names.</t>
      </section>
    </section>
    <section anchor="roots">
      <name>Trust roots</name>
      <t>This profile has two roots, filling the core's issuer root and rail
root (Sections 10.1 and 9.3 of <xref target="CEDULON"/>):</t>
      <dl>
        <dt>The decider root:</dt>
        <dd>
          <t>The key, or set of keys, under which Decision Records and their
checkpoints are attested. A separate checkpoint key, where the
deployment names one, belongs to this root and attests no Decision
Record (<xref target="record-chain"/>). Everything Section 10.1 of the core states for the issuer
root applies, with the one change <xref target="record-chain"/> makes: a pinned
key attests by signature, a carried key is not an identity, a record
under another key, the checkpoint key included, is
<tt>issuer-key-mismatch</tt> and covers nothing, and with no pin
<tt>unauthenticated-issuer</tt> makes the guarantee conditional.</t>
        </dd>
        <dt>The effect-extract root:</dt>
        <dd>
          <t>The key under which the Effect Extract is attested. Everything
Section 9.3 of the core states for the rail key applies.</t>
        </dd>
      </dl>
      <t>The core's payee, witness, decision-token, and manifest roots are not
used by this profile, except that a transparency witness <bcp14>MAY</bcp14> hold the
Decider's checkpoints exactly as it holds a Receipt Issuer's, with
the witness root and codes of the core unchanged.</t>
      <t>What the two roots do not cover is the relation between them. The
profile's claim is only as strong as the independence of the party
that signs the Effect Extract from the party that signs the Decision
Records. Where the channel operator signs an export of its own log,
the extract root is that operator's key and the independence is the
operator's. Where the channel operator signs nothing, which is the
common case for a messaging platform, the extract is produced by a
capture process the deployment runs, and the deployment is stating,
by pinning that process's key, that the process is not the Decider
and cannot be told what to omit. The rule is not that the two roots
be independent; it is that the deployment say which case it is in,
and that the guarantee fall when independence is absent or unknown.
A deployment <bcp14>MUST</bcp14> state which of the two it has, and a verifier <bcp14>MUST</bcp14>
treat the guarantee as conditional where the extract root and the
decider root are, or may be, the same party (<tt>MUST-DP-9</tt>). The
companion cannot measure that from the keys alone; two keys can be
held by one hand.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The core's threat analysis (Section 16 of <xref target="CEDULON"/>)
applies where the nouns carry over: forgery and repudiation of a
signed record (T4), key leakage (T7), and suppression of checkpoints
(T11) are the same threats against a Decider that they are against a
Receipt Issuer, and the controls are the same. The threats below are
the ones this population adds or sharpens.</t>
      <section anchor="d1-an-effect-occurs-against-a-refusal">
        <name>D1: An effect occurs against a refusal</name>
        <t>The agent, or something acting through its channel access, does what
the Decider refused. This is the threat the profile exists for. A
Decision Record for the refusal, with the reference it refused, and an
authenticated extract that carries an effect under that reference
make the event <tt>effect-against-refusal</tt>, and the audit fails. A
refusal that carried no reference cannot support this finding; the
effect is then <tt>effect-without-decision</tt>, which also fails the audit
but does not say it was refused. A Decider <bcp14>SHOULD</bcp14> carry the reference
on a refusal whenever the channel assigns one before the decision.</t>
        <t>The shape of the threat is not particular to this profile. A reader
who mapped this document's objects onto a second evidence format,
with a signed decision predicate and a signed outcome predicate of
its own, measured that format's verifier on 4 September 2026: a
decision carrying a refusal and an outcome recording execution,
citing that decision by content root, verified clean with no warning,
because the verdict is not read on the outcome path <xref target="B7N0DE"/>. That
is D1 as a verifying pair rather than a finding, recorded by the
reader as a measurement of that artefact and cited here as one.</t>
      </section>
      <section anchor="d2-effects-without-decisions">
        <name>D2: Effects without decisions</name>
        <t>Something acts on the channel that never asked. Every such effect is
<tt>effect-without-decision</tt>. The control is the extract's completeness,
which is the extract root's independence (<xref target="roots"/>); a capture
process the Decider controls can leave the effect out.</t>
      </section>
      <section anchor="d3-substitution-of-content">
        <name>D3: Substitution of content</name>
        <t>The Decider allows one content and the channel carries another. The
allow's <tt>effectHash</tt> and the row's <tt>effectHash</tt> are computed over the
same octets, and a difference is <tt>effect-mismatch</tt>. The control fails
open if the two sides hash different octets, which is why a
deployment <bcp14>MUST</bcp14> state the octets once for both (<xref target="extract-schema"/>).</t>
      </section>
      <section anchor="d4-the-decider-signs-below-its-own-rules">
        <name>D4: The Decider signs below its own rules</name>
        <t>A Decider produces a well-formed signature over a claim map that
breaks a rule this profile states: an allow with no reference or no
content hash, a refusal with a content hash, a hash outside the
grammar. Every such record is a record the reconciliation cannot
close or would close wrongly. The verifier applies the rules on the
decoded payload (<tt>MUST-DP-3</tt>) and walks the chain over every record
that claims the pin (<tt>MUST-DP-5</tt>), so the record is refused and named
rather than attested or dropped.</t>
      </section>
      <section anchor="d5-equivocation-on-the-record-chain">
        <name>D5: Equivocation on the record chain</name>
        <t>The Decider signs two decisions for one request, or two successors to
one predecessor, and offers each to a different reader. Within one
reader's population the chain (<tt>MUST-DP-5</tt>) makes the second record
unlinkable: it names the same predecessor as the first, or none, and
the walk reports the break. Across readers the chain sees nothing:
each holds a linear chain that verifies. The control for that case is
the core's witness (<xref target="record-chain"/>): the Decider's epoch checkpoints
are recorded with a witness the verifier has pinned, a Transparency
Service <xref target="RFC9943"/> being one, and the copies the witness holds are
compared against the presented chain. A verifier that consulted no
witness has not measured cross-reader equivocation. The guarantee its
report prints is the core's, which is defined over the extract, the
pins, and the window and does not cover suppression or equivocation
beyond the presented chain when no witness was consulted (Section 11
of <xref target="CEDULON"/>, <tt>MUST-T11-9</tt>); measured on the companion, such a
report prints <tt>unconditional</tt> with no warning and no finding, and is
silent about the witness it was not given. The silence is this
revision's known gap: the claim is narrowed here, in the text, and a
report line that names an unconsulted witness is a change to the
reconciler both populations share, not made in this revision. A
deployment that needs the property records its checkpoints with a
witness and gives its readers the witness key.</t>
      </section>
      <section anchor="d6-the-class-of-the-effect-is-substituted">
        <name>D6: The class of the effect is substituted</name>
        <t>A row of a different class under the same reference and the same
content hash: the same text allowed as a reply and carried as a
post. An earlier revision named this as a gap, because the record
carried no claim for the class and a row of any class matched. The
record now carries <tt>effectClass</tt> under the Decider's signature
(<xref target="record-labels"/>), an allow without one is refused
(<xref target="record-rules"/>), and a row whose class differs from the allow's
with the content hash equal is <tt>effect-class-mismatch</tt> (<xref target="binding"/>).
What remains open is the vocabulary: the class names are the
channel's, this document does not fix them, and a deployment <bcp14>SHOULD</bcp14>
state them beside its statement of what it hashes so that two
readers compare the same words.</t>
      </section>
      <section anchor="d7-silent-defaults-in-capture">
        <name>D7: Silent defaults in capture</name>
        <t>The process that turns a channel's log into Decision Records or
Effect Extract rows fills a missing value with a default, and the
default hashes to something. An allow with no stated content that is
hashed as the empty string produces a record that will match an empty
effect and mismatch every real one, with no finding that says the
content was never stated. Such a process <bcp14>MUST</bcp14> refuse the line by name
rather than fill it (<tt>MUST-DP-10</tt>). The companion's example adapter
did fill it until it was measured, and refuses it now.</t>
      </section>
      <section anchor="d8-the-capture-process-is-the-decider">
        <name>D8: The capture process is the Decider</name>
        <t>The party that produces the Effect Extract is, or answers to, the
party that signed the Decision Records. Every finding in D1 and D2
can then be made to disappear by omission, and no signature check
detects it. This is the independence statement of <xref target="roots"/>
(<tt>MUST-DP-9</tt>), and it is a deployment fact the profile can name but
not prove. A verifier that holds both roots and cannot state their
independence has a conditional result, and <bcp14>MUST</bcp14> say so.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>A Decision Record carries no request content and no effect content:
hashes of both, an opaque subject identifier, and a reason code. The
Effect Extract carries a reference, a class, a content hash, a time,
and optionally the identifier of the party the effect reached. The
core's Privacy Considerations (Section 15 of <xref target="CEDULON"/>)
apply to what a transparency witness is given.</t>
      <t>Two points are specific to this population. A content hash over a
short text is a fingerprint of that text: a reader who can guess the
message can confirm the guess. This revision hashes the plain content
octets, as the companion does, so that the two sides need no shared
secret to agree; a keyed or salted construction that would defeat the
guess is a claim-set change and is not defined here. A deployment
whose effects are short and guessable <bcp14>SHOULD</bcp14> treat the extract and
the records as confidential to the audit. The subject and actor
identifiers are opaque to the profile but need not be opaque to a
reader; a deployment <bcp14>SHOULD</bcp14> pseudonymize them before either object
leaves its control.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document requests the registration of one media type in the
"Media Types" registry <xref target="RFC6838"/>, in the standards tree, carrying
the <tt>+cbor</tt> structured syntax suffix that <xref target="RFC8949"/> registers, on
the terms Section 17 of <xref target="CEDULON"/> states for that document's six:
it names the one COSE_Sign1 object this document defines and is
checked inside that object's protected header, which is why the name
cannot stay unregistered while that check stands. The Effect Extract
is a JSON document with a detached signature and has no media type;
<xref target="extract-auth"/> states why, and names the registration that would
become necessary if that changed. Registration in the standards tree requires IETF
approval; until then, an implementation outside a closed deployment
should treat the name as a placeholder that a registration may
change. The provisional registration procedure of <xref target="RFC6838"/> Section
5.2.1 is available to an Internet-Draft, and a provisional entry, if
one is made, is superseded by the registration this section requests.</t>
      <t>The claim labels this document assigns, <tt>-70501</tt> through <tt>-70513</tt>
(<xref target="record-labels"/>), lie in the Private Use range of the "CBOR Web
Token (CWT) Claims" registry <xref target="RFC8392"/>, integer values less than
-65536, and this document requests no assignment for them.</t>
      <t>No other IANA action is requested.</t>
      <section anchor="iana-record">
        <name>application/cedulon-decision-record+cbor</name>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>cedulon-decision-record+cbor</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary. A COSE_Sign1 structure <xref target="RFC9052"/> in deterministic CBOR
<xref target="RFC8949"/>, untagged, as profiled in <xref target="record"/> and in Section 6 of
<xref target="CEDULON"/>.</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>See <xref target="security"/> of this document. The object is signed by the party
under audit; its evidentiary weight depends on the verifier holding
the decider key out of band (<xref target="roots"/>) and on the verifier applying
the claim rules of <xref target="record-rules"/> itself, never on a key the
object carries or on the signer's word that the rules were applied.</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>The claim set is a CBOR map with the labels and types stated in
<xref target="record-labels"/>, encoded per <xref target="RFC8949"/> Section 4.2.1. A decoder
refuses a duplicate key, an input beyond its stated bounds, and a
non-empty unprotected header by name rather than accepting it, as
Section 6 of <xref target="CEDULON"/> requires of every Cedulon object.
A Decision Record and a Decision Token are distinct objects with
distinct content types and are never accepted for one another.</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>This document, <xref target="record"/>.</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Policy decision points and other deciders that log the decisions
they take about an agent's actions, and auditors that reconcile
those logs against the channels the actions occurred on.</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Additional information:</dt>
          <dd>
            <t>Deprecated alias names for this type: N/A. Magic number(s): N/A.
File extension(s): N/A. Macintosh file type code(s): N/A.</t>
          </dd>
          <dt>Person and email address to contact for further information:</dt>
          <dd>
            <t>Emek Can Dogru, e.dogru@cedulon.com</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>Emek Can Dogru</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
        </dl>
      </section>
    </section>
    <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>The profile is carried by the core document's companion
implementation at <eref target="https://github.com/dogrucanemek-alt/cedulon">https://github.com/dogrucanemek-alt/cedulon</eref>, on
the same reconciler that implements the core, selected by a profile
object rather than by a second code path. As of the commit -03 was written against, the tree carries the Decision Record
and Effect Extract objects, the profile, twenty conformance cases covering the rules and
departures -03 states, and four
offline fixtures for one example channel, a
direct-message reply log. The two cases added with -01 were red
before the claim was added: a row of a different class under a
matching hash matched, and an allow signed without a class
verified. -03 and -04 change text and add no case; the
ordering of the two clocks (<xref target="binding"/>), the checkpoint key of
<tt>MUST-DP-11</tt>, and the statement of <tt>MUST-DP-12</tt> are stated, not
enforced.
The spend behaviour of the same reconciler is held byte for byte by
a golden file of fifteen cases generated from the source before the
profile seam was added.</t>
        </dd>
        <dt>Maturity:</dt>
        <dd>
          <t>Published. The code carrying -01's claim set, the class under the
signature and the fifth finding, was released as the companion's
0.13.0 on 4 September 2026, nine packages with provenance, after
-01 was posted. Before merge the branch was read
twice: by the author's own gate, re-running it from a second
worktree, and by an outside model reading the whole diff and barred
from changing it. The two readings found four defects in the first
cut of this profile, each recorded in the companion's review log: a
verifier that did not apply the signer's claim rules (D4), a
spend-side crash on the wrong document (<xref target="population"/>), a spend
warning leaking onto decision reports, and a document that counted
its own cases wrong. All four were closed with a test that was red
before the fix. A third pass moved the report vocabulary onto the
profile.</t>
        </dd>
        <dt/>
        <dd>
          <t>Not measured: a live channel log. The example adapter maps a proposed
line format for a direct-message bridge; the bridge's actual field
names were not read when -03 was written, and the adapter
is written so that only its two line-mapping functions should move
when they are. No signer of this profile by another party is known
to the author; the two outside readers below wrote verifiers.</t>
        </dd>
        <dt/>
        <dd>
          <t>Read by a second reader: one frozen fixture, a leaked refusal in
the example channel's line format, was read by this implementation
and, on 4 September 2026, by an adapter written by the author of
<xref target="OUTCOME"/> for that document's verifier, with the two results
recorded side by side the next day. This reader reported
<tt>effect-against-refusal</tt> on the leaked row; the other reported the
case as reconciled, divergent, and not valid. The three fixture
digests, both result digests, and the two verdicts are in the
companion's external review log. The limits are
the other reader's, and they are kept with the record: one pinned
raw fixture read through separately owned adapters is not
native-format interoperability; the test keys are public and the
timestamps were written after the fact, so the run establishes
neither identity nor temporal precommitment; and neither reader
says where the refusal failed.</t>
        </dd>
        <dt/>
        <dd>
          <t>Reproduced: the companion's suite at the commit that posted -00 was
run unmodified by two readers on their own machines, one on the day
of posting and one after 0.13.0 shipped. The second run had one red,
a test that asked the package registry what it served that day from
inside a pinned commit; the suite now reports that case as the
world having moved rather than as a failure, and the change is the
reader's. The first reader also put three probes to the profile:
an effect dated before its decision, which is what <xref target="binding"/> now
states; one content hash under two allows, which the binding keeps
apart by reference as written; and a record altered after signing,
which the chain walk already names as a break. The -00 text was read by
the author of <xref target="AEB"/> and <xref target="OUTCOME"/> the day it was posted; the
four items that reading raised were the changes of -01, and the two
boundary sentences of -02 are that reader's as well.</t>
        </dd>
        <dt>Second implementation:</dt>
        <dd>
          <t>Verax (<eref target="https://github.com/verax-ai/verax">https://github.com/verax-ai/verax</eref>), written by the author of
this document, signs Decision Records under this profile's claim set
and verifies its ledgers offline. Two of this revision's changes
come from it. In its published test vectors, a process beside the
Decider, which Verax calls its witness, signs the checkpoints and
the effect extracts under one key, separate from the record key and held by the
same operator (<xref target="record-chain"/>); its vector set's README names that
key, as <tt>MUST-DP-11</tt> asks; since that key also signs the effect
extracts, <tt>MUST-DP-9</tt> makes its guarantee conditional. And it signs
one extract per effect row, a case -03 did not address,
without yet the statement <tt>MUST-DP-12</tt> asks for: its index of which
references produced an effect is unsigned. After the outside runs
below, and not yet in a release, its verifier holds
every allow to a row by a rule of its own, with the core's allowance
measured from the newest record; it does not apply the core's
boundary rule.</t>
        </dd>
        <dt/>
        <dd>
          <t>Run by outside readers: a frozen set of Verax ledgers
(<tt>test-vectors/v1</tt> at tag <tt>vectors-v1</tt>, sixteen ledgers at the time)
was run by two readers with verifiers of their own, who reported
their results in the AUDIT BoF preparation repository
(<eref target="https://github.com/mirjak/audit-bof-preparation/issues/9">https://github.com/mirjak/audit-bof-preparation/issues/9</eref>):
Tymofii Pidlisnyi (Agent Passport System), with a runner in the APS
conformance suite, a partial stage-by-stage comparison rather than a
whole-ledger verdict; and Roberto Locatelli (cryptovalid-opencore),
with checkers written from the drafts, the RFCs, the vector set's
README and, for two file layouts, the vector files. With the
checkpoint verified under the witness key, that run matched 16 of 16
verdicts and 15 of 16 first failing stages, the one difference being
<tt>fail-allow-while-halted</tt>, which that checker, applying no boundary
allowance, fails at <tt>effect-binding</tt>; under -03's reading, with the
Decider's key, 14 of 16 verdicts. One of the matches came from a
rule added after reading the vector, and the run states its other
limits with it.
All of those vectors were produced by one implementation; the runs
are datapoints, not conformance.</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="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="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="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="CEDULON" target="https://datatracker.ietf.org/doc/html/draft-dogru-cedulon-09">
          <front>
            <title>Cedulon: An Audit Layer for Agent-to-Agent Commerce</title>
            <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
              <organization/>
            </author>
            <date year="2026" month="September" day="06"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dogru-cedulon-09"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC9943">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <reference anchor="ABAK" target="https://datatracker.ietf.org/doc/html/draft-abak-agent-control-delivery-evidence-01">
          <front>
            <title>Evidence Requirements for Agent Control Delivery and Outcome Reconciliation</title>
            <author initials="A. T." surname="Abak" fullname="Ali Toygar Abak">
              <organization/>
            </author>
            <date year="2026" month="September" day="04"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-abak-agent-control-delivery-evidence-01"/>
        </reference>
        <reference anchor="AEB" target="https://datatracker.ietf.org/doc/html/draft-schrock-action-evidence-boundary-05">
          <front>
            <title>The Action Evidence Boundary for Consequential Agent Effects</title>
            <author initials="I." surname="Schrock" fullname="Iman Schrock">
              <organization/>
            </author>
            <date year="2026" month="August" day="31"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-action-evidence-boundary-05"/>
        </reference>
        <reference anchor="B7N0DE" target="https://github.com/b7n0de/proofbundle/blob/main/docs/SCITT_CPB_MAPPING.md">
          <front>
            <title>Mapping 4: the Cedulon Decision Record and Effect Extract against decision-receipt and action-outcome (proofbundle)</title>
            <author initials="K." surname="Gruszka" fullname="Konrad Gruszka">
              <organization/>
            </author>
            <date year="2026" month="September" day="04"/>
          </front>
        </reference>
        <reference anchor="OUTCOME" target="https://datatracker.ietf.org/doc/html/draft-schrock-ep-outcome-binding-00">
          <front>
            <title>Outcome Binding for Authorized Actions and Independently Observed Effects</title>
            <author initials="I." surname="Schrock" fullname="Iman Schrock">
              <organization/>
            </author>
            <date year="2026" month="July" day="28"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-ep-outcome-binding-00"/>
        </reference>
      </references>
    </references>
    <?line 1166?>

<section numbered="false" anchor="changes">
      <name>Changes from -03</name>
      <t>This section is to be removed before publishing as an RFC.</t>
      <ul spacing="normal">
        <li>
          <t>A checkpoint may be signed under a separate key that the deployment
names and the verifier pins as part of the decider root
(<tt>MUST-DP-11</tt>). The core's root of several keys (<tt>MUST-T4-12</tt>) is for
rotation; the split by role is this profile's. Terminology and the
decider root say so. -03 had the Decider sign checkpoints, and the
second implementation did not.</t>
        </li>
        <li>
          <t>The context behind <tt>inputsHash</tt> is, like the request, a deployment
statement: what is hashed, and how it is presented beside the
record.</t>
        </li>
        <li>
          <t>Single-row extracts are receipts, not windows. The following extract
of a closing-edge deferral is one whose window contains the item,
and a deployment that signs single-row extracts <bcp14>MUST</bcp14> state how a
reader learns which allows should have a row (<tt>MUST-DP-12</tt>).</t>
        </li>
        <li>
          <t>Implementation Status records the second implementation and two
outside runs of its test vectors.</t>
        </li>
        <li>
          <t>The core reference moves to -09. The sections cited here keep their
numbers and the text cited from them is unchanged from -08; -09
also adds the author's intended track to Section 19, a statement this
profile does not cite.</t>
        </li>
      </ul>
      <t>The first three changes came from those runs: each reader found a
place where the text and the implementation disagreed, or where the
text was silent.</t>
    </section>
    <section numbered="false" anchor="changes-from-02">
      <name>Changes from -02</name>
      <t>This section is to be removed before publishing as an RFC.</t>
      <ul spacing="normal">
        <li>
          <t>The rule under three of this document's choices is stated once, as
<xref target="boundary-rule"/>: a state that never crosses the boundary does not
exist for the party relying on it, and a property the text does not
state is one the text does not have. The three places it was
learned are named there, and the unordered clocks of <xref target="binding"/>
now point to it. No rule, claim, or finding changes.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="changes-from-01">
      <name>Changes from -01</name>
      <ul spacing="normal">
        <li>
          <t>The binding does not order the two clocks: a row dated before the
record it answers binds as if it had followed it, on this profile
and on spend alike. Stated in <xref target="binding"/>, with no finding named;
the Effect Extract's lack of a clock-skew member and the default the
verifier applies are stated beside it.</t>
        </li>
        <li>
          <t>Two boundary sentences corrected: <xref target="AEB"/> runs from invocation to an
authenticated reconciliation and is not only what precedes an
effect; the observation in <xref target="OUTCOME"/> is independent where the
relying party chose an independent source, not by construction.</t>
        </li>
        <li>
          <t><xref target="impl-status"/> records the companion as published at 0.13.0, one
fixture read by a second reader with the limits of that run, and two
reproductions of the suite.</t>
        </li>
        <li>
          <t>D1 cites a measurement of the same threat on a second evidence
format, whose verifier accepts a refusal beside an executed outcome.</t>
        </li>
        <li>
          <t>Two sentences tightened after a reader's mapping: the request
encoding is fixed and the request's fields are not (<xref target="record-labels"/>);
<tt>MUST-DP-9</tt> is the statement and the downgrade, not a demand for
independence (<xref target="roots"/>).</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="changes-from-00">
      <name>Changes from -00</name>
      <ul spacing="normal">
        <li>
          <t><tt>effectClass</tt> is a claim on the Decision Record (<tt>-70513</tt>), required
on an allow; a row of a different class under a matching hash is
<tt>effect-class-mismatch</tt>. D6 is closed rather than named. Claim-set
change; a twelve-label record is refused.</t>
        </li>
        <li>
          <t>The Decider's chain is no longer called the equivocation control of
the profile. It names a break within one reader's population; a
fork shown to two readers is the core's witness comparison,
applied unchanged, and a report over an unwitnessed chain claims
no more (<xref target="record-chain"/>, D5).</t>
        </li>
        <li>
          <t>The reason the Effect Extract has no media type is restated: the
population is the verifier's declaration, not the document's
(<xref target="extract-auth"/>). The protected-header test is withdrawn as the
reason.</t>
        </li>
        <li>
          <t>The boundary to <xref target="ABAK"/>, <xref target="AEB"/>, and <xref target="OUTCOME"/> is stated in the
introduction.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This profile is the first concrete instance of the generalization the
core document reserves. The refusal that was followed by the effect
it refused, as a finding with its own name, came out of watching a
messaging assistant's decision log beside the channel's sent log and
finding that the spend vocabulary had no word for it.</t>
      <t>Tymofii Pidlisnyi (Agent Passport System) and Roberto Locatelli
(cryptovalid-opencore) ran the second implementation's test vectors with verifiers of their own; the first
three changes of -04 are their findings.</t>
      <t>Iman Schrock read -00 the day it was posted and raised the four
points this revision answers: the fork two readers cannot see, the
class that was not under the signature, the media-type reason that
did not hold, and the three documents that should be cited. The
sentence on what an effect against a refusal does and does not
establish is Ali Toygar Abak's, in his words.</t>
      <t>Pablo Etcheverry ran the suite at the posted -00 commit and asked
three questions of it; the unordered clocks of <xref target="binding"/> are his
finding. Nicholas Templeman ran the same commit after 0.13.0 shipped
and showed that a claim about the present, frozen into a pinned
commit, cannot tell a reproducer whether the code or the calendar
failed. Konrad Gruszka mapped the Decision Record and Effect Extract
field by field onto his own format and measured the D1 pair on it.
Iman Schrock corrected the two boundary sentences and read the frozen
fixture with an adapter written for that document's verifier.</t>
      <t>The rule of <xref target="boundary-rule"/> was named as one rule by Henri
Sirkkavaara, after he found and closed its state form in Vaara's own
consistency checker and read the unordered clocks of <xref target="binding"/> as
the same failure a third time. Pablo Etcheverry paired the two
implementation cases, Vaara's third verdict and the companion's
undelivered refusals, as two shapes of one bug, and that pairing is
how the section describes them.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
jcll2WdyMMn7bdl+KCN6K/n+X+SWcYJriDmtb7jCRY3jezFiKDmhCr9vXSKm
LVFuNyCJU50K93YzEJCEUl7EyLC//3Wz+AfvnhSXRBeDCeBZtg5NabVaty9E
sF25TeVvDPyeEz9fl7FeDweSMvwsJpJDmGNHWtHxfUCWbNkd2J2ommIGv6Ga
d+4JkbmNaKarPWzkhpFr7vYpxjpOyPbPskTYPSuzxDKJnjZSovad6UHSbPGW
BKPRBu/2efAWmfKyxjwv+B9BCteZVTBCHlhye1O33XY9uL6m5jmOMU61A/he
psR46KavgNFrx/sDbb+jZM3yHNglSR3gGcpUszqW6EMZNyu6z9BLPfSC5vUq
xbuAiyIqv1msB2sZAZfphfpp10wki+DWb65YCX7T3nvxSKREYzqYv/XsL96I
D7liS3N2EhTKAgAP9/7Eu7lqtkmWF1OyKpsUJmU3annBSZ0IdXEHQMY1a3gm
C0Q4BNxUvMZWoeLShyeShyYR71gWULmqgJ3aFY2T8RIIZTTtWK3LBAz1mzVR
y49SK12j8qsM0Yc9agy509swO/RSOoaIppGEtujPV21x3TDmRBcZ0aG2e6lk
A8l2eKrpP6eGmXmjiWi0Sr6fS3tQ53zEV2RcII3BudW0L7K0/l4sYhGba3lj
+qteVfd4jJZCD1d7+pCo2nNLK2yLR0v5dXRLjf1jeJop/E64JgFduBT32PBF
WypfcKWtAozNpUUrGRXOWiv4qa5S+Cs8KXvaegG7AXUUKaQq90GSTZqqWiQ7
2SBYp5i0ZopwSBqB9zyh6qLkImFD8Nn/zOQbp005wXnfe8ekg6Jh3IoIESkC
E0fedLdy3qm+YCpPm/navH1hmoQjfNxz7jLUqyAYYbqmLlp1+A0DdpbUHIJe
cl0RiP9kvtCRBpeOXpQ+7jThi/7KyHSG2PEPPTwk+yo2rIu/clW6oBpvg0sn
l9tjNNgBO8iLUlU/k9wbvU32y9tvbLE7CYACatHYLKluFCsrXP54zJ1HX65a
+3Ms+1bZF8KwJlg0vEj2ayWtA9S25RY8Q3Ry8+N66R0lfcglUUl8meiX4Jwc
hSKNghLpaIuUciyuJ8kuEvYeqwqVUyocbOJAFz0xwSdAJ/+UmlEso3hb2Xvg
jrEmtdBkQplp80XKmL3d6TuApCyPmxOq0LmWmSjjez9qaH4XZWxslLiWzr2l
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
1UH4/wEkVEixxvgAAA==

-->

</rfc>
