<?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.40 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dogru-cedulon-streaming-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Cedulon Streaming">Cedulon Streaming Reconciliation: Continuous Completeness for Agent Spend</title>
    <seriesInfo name="Internet-Draft" value="draft-dogru-cedulon-streaming-00"/>
    <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
      <organization>VERAX TEKNOLOJI LIMITED SIRKETI</organization>
      <address>
        <postal>
          <country>Turkey</country>
        </postal>
        <email>e.dogru@cedulon.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="26"/>
    <area>sec</area>
    <keyword>Cedulon</keyword>
    <keyword>reconciliation</keyword>
    <keyword>streaming</keyword>
    <keyword>completeness</keyword>
    <abstract>
      <?line 42?>

<t>Cedulon defines a batch reconciliation audit: given a window of spend
receipts, epoch checkpoints, and an authenticated rail extract, a
verifier proves completeness after the fact. Agent fleets
that spend continuously need the same property as a live signal: a
conscience that runs beside the payments rather than behind them. This
document proposes a streaming profile: short half-open micro-epochs, an
incremental checkpoint cadence, a watermark that separates provisional
from final findings, and rules for late-arriving settlements. The goal
is that "the books are balanced" becomes a continuously maintained,
externally checkable state instead of a periodic report. This is an
extension proposal to the Cedulon core document; its normative language
is provisional and the companion implementation does not implement it
yet.</t>
    </abstract>
  </front>
  <middle>
    <?line 58?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Batch audits answer "was last week clean?". Operators of continuously
spending agents ask a different question: "is this fleet clean right
now, and if not, which settlement broke it?" The gap between the two
is not a new primitive; it is cadence. The core Cedulon objects
(receipts, checkpoints, extracts) already chain and total; this
profile shortens their windows, defines when a window may be judged,
and names the states a finding passes through as evidence arrives.</t>
      <t>This document is an extension seed for the Cedulon core specification
<xref target="CEDULON"/>. It is not an IETF working-group item, its keyword usage
is provisional, and the reference implementation does not yet
implement it. It is published to define the shape of the mechanism
early and to invite review.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt>Micro-Epoch:</dt>
        <dd>
          <t>A half-open window <tt>[startMs, endMs)</tt> of fixed short duration
(seconds to minutes) carrying an incremental checkpoint, contiguous
with its neighbors and covering the receipt chain with no gaps.</t>
        </dd>
        <dt>Watermark:</dt>
        <dd>
          <t>A timestamp <tt>finalizedUpToMs</tt> before which the verifier has received
the authenticated rail extract covering every closed micro-epoch.
Windows entirely below the watermark are final; windows above it are
provisional.</t>
        </dd>
        <dt>Provisional Finding:</dt>
        <dd>
          <t>A reconciliation finding raised in a window not yet below the
watermark; it <bcp14>MAY</bcp14> be resolved by evidence that arrives before
finalization.</t>
        </dd>
        <dt>Final Finding:</dt>
        <dd>
          <t>A finding in a finalized window. It does not change; late evidence
cannot erase it, only annotate it.</t>
        </dd>
      </dl>
    </section>
    <section anchor="streaming-model-provisional">
      <name>Streaming Model (provisional)</name>
      <ol spacing="normal" type="1"><li>
          <t>Receipts and checkpoints follow the core profile unchanged; only
the epoch duration shrinks. Consecutive micro-epochs <bcp14>MUST</bcp14> be
contiguous and half-open, and every chained receipt <bcp14>MUST</bcp14> fall in
exactly one micro-epoch.</t>
        </li>
        <li>
          <t>The rail extract is consumed as an authenticated append-only feed
segmented by the same windows. A window is eligible for
finalization only when its extract segment is complete and
authenticated.</t>
        </li>
        <li>
          <t>The streaming verifier maintains, per window: matched pairs,
unmatched settlements, unmatched receipts, and checkpoint totals.
Findings in windows above the watermark are Provisional; when the
watermark passes a window, its findings become Final and the
window's verdict is immutable.</t>
        </li>
        <li>
          <t>A settlement arriving for an already-final window is itself a
finding (late-settlement), because a complete authenticated extract
for that window had already been presented. One of the two extract
presentations is wrong, and the conflict is the evidence.</t>
        </li>
        <li>
          <t>The current watermark, the head checkpoint hash, and the count of
open provisional findings form the fleet's live conscience tuple;
publishing it (for example to a transparency log at a fixed cadence)
lets outside parties observe that the books were continuously
balanced without seeing individual trades.</t>
        </li>
      </ol>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Streaming changes when judgments are made, not what is judged; the
core trust analysis applies. The new surface is the watermark: an
operator who can stall the extract feed keeps windows provisional and
delays Final findings. Deployments <bcp14>SHOULD</bcp14> bound the distance between
wall clock and watermark and <bcp14>SHOULD</bcp14> treat a stalled watermark as an
availability finding in itself; silence, here too, is evidence. A
late-settlement conflict reveals that two inconsistent extracts were
presented; resolving which party misbehaved requires the extract
signatures, which is why unauthenticated feeds cannot finalize
anything.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CEDULON" target="https://github.com/dogrucanemek-alt/cedulon">
          <front>
            <title>Cedulon: An Audit Layer for Agent-to-Agent Commerce (work in progress)</title>
            <author initials="E. C." surname="Dogru" fullname="Emek Can Dogru">
              <organization/>
            </author>
            <date year="2026" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 160?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This seed accompanies the Cedulon core document and its companion
implementation at <eref target="https://github.com/dogrucanemek-alt/cedulon">https://github.com/dogrucanemek-alt/cedulon</eref>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AAA=

-->

</rfc>
