docs(spec): language-neutral behavioral spec for the pipes pipeline - #126
Merged
Conversation
…peline An implementation-free contract for the pipeline: the abstract state and operation model, numbered invariants and liveness properties, the failure model, replay and performance regimes, SLI/SLOs and observability, per-sink interface bindings, the ADRs behind those decisions, and a conformance/TDD plan carrying a prioritized gap register. A cross-reference checker runs in CI so every ID and relative link stays resolvable. Co-Authored-By: Claude Opus 4.8 <[email protected]>
…the prior value The snapshot trigger stored after-images for insert/update, so rolling back a row whose pre-fork value came from a finalized block could only ever restore the earliest unfinalized after-image — the value written over it, not the value it had. Replay now takes, per row, the earliest before-image strictly above the ancestor; a row first seen above the ancestor never existed there and is dropped instead. Co-Authored-By: Claude Opus 4.8 <[email protected]>
… batch The Postgres sink tags every undo record with the batch's last block, so once the client coalesced the finalized bulk with the first unfinalized block, a finalized block's writes carried a tag above the finalized head — and a fork to that head rolled them back, with no re-fetch to bring them home. A sink now asks for per-block delivery via read(), and it is off by default: sinks that carry the block number on the rows themselves (ClickHouse) get one batch per response instead of one per hot block. Co-Authored-By: Claude Opus 4.8 <[email protected]>
mo4islona
force-pushed
the
spec/pipes-behavioral-spec
branch
from
July 20, 2026 11:41
3eecd65 to
32ed558
Compare
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A full conformance-tier spec suite at
spec/— the language-neutral contract for the pipeline, written against the current TypeScript implementation as reference. Intended to let future implementations (Rust first) be built and verified against the same properties and the same persistent/wire formats, so implementations are interchangeable mid-stream.Contents
Review pass (2026-07-19)
An 11-agent spec-vs-implementation audit verified every wire/format/parameter claim against the code and drove a revision:
resolveForkCursorsemantics, including the previously undocumented floor fallback), per-network cursor timestamp units (tron reports milliseconds), head-only (204) handling, the class-T undo mechanism (after-image trigger, not before-image), and body-stall retryability.coveragestate map / straddle refusal are marked contract-target (they live in unmerged PR fix(parquet): name files for the block range they cover #123); the traceability matrix is re-pinned to this branch's mainline basea739500, and the coverage row corrected from C to U ⚠ (GAP-17).Coverage gate
Docs-only change — no runtime code touched, so there is no coverage diff to report. The spec's consistency checker is now committed (
spec/check-spec.mjs) and CI-enforced on spec changes (.github/workflows/spec.yml): 428 IDs, 0 dangling references.🤖 Generated with Claude Code