Skip to content

docs(rfc-0014): advance ingest write path to specified - #241

Merged
jensholdgaard merged 5 commits into
mainfrom
rfc0014-specified
Jun 17, 2026
Merged

docs(rfc-0014): advance ingest write path to specified#241
jensholdgaard merged 5 commits into
mainfrom
rfc0014-specified

Conversation

@jensholdgaard

@jensholdgaard jensholdgaard commented Jun 17, 2026

Copy link
Copy Markdown
Owner

RFC 0014 drafted → specified. Finalizes the acceptance criteria + settles the two design questions that shape them.

Settled (maintainer-decided)

  • Rotation force-flush = every partition (incl. sub-threshold low-volume ones; §3.2, RFC0014.3). The clean recovery invariant — a sealed WAL segment is fully published, nothing un-flushed predates it — outweighs the cost of a few small files, which compaction (RFC 0009) consolidates.
  • Hard memory ceiling (§3.4, RFC0014.4): at the limit emit blocks until a flush frees memory, so buffered bytes never exceed the ceiling. Ack is post-WAL, so blocking throttles mining throughput, not durability.

Finalized

  • §5 acceptance criteria RFC0014.1–.6 — greppable, testable, one per hazard/invariant (CLAUDE.md §4 small-file ×2, §3.4 WAL-durability, §3.7 multi-tenancy, + size/age triggers).
  • §6 testing strategy mapped (unit per trigger + ceiling; proptest for no-loss/tenant-isolation; crash-recovery extending the RFC 0008 harness).

Carried into red/green (§7)

Tuning + impl detail: defaults (size target / max_buffer_age / ceiling), early-flush victim selection, the exact RFC 0008 rotation-hook surface, size estimation. Plus the follow-on (server Store wiring + compaction CAS-on-S3 → greens RFC0013.6), out of this RFC's acceptance.

Doc-only; mdbook build verified.

🤖 Generated with Claude Code

Summary by CodeRabbit

Documentation

  • Updated the ingest write path specification to reflect finalized lifecycle status and revised acceptance/verification criteria (“normative scenarios”).
  • Clarified WAL hybrid flush behavior to force-flush all partitions to preserve recovery consistency, even if it results in smaller files.
  • Tightened the memory ceiling to a hard limit that blocks emit until in-flight flushes free memory, with explicit throttling scope after ingestion acknowledgment.

Finalize §5 acceptance criteria (RFC0014.1–.6, greppable + testable per
docs/verification.md §2) and §6 testing strategy, and settle the two
criteria-shaping design questions (maintainer-decided):

- Rotation force-flushes EVERY partition, including sub-threshold low-volume
  ones (§3.2 trigger 3, RFC0014.3) — the clean recovery invariant (sealed
  segment fully published) outweighs a few small files, which compaction
  consolidates.
- The memory ceiling is HARD: at the limit `emit` blocks until a flush frees
  memory, so buffered bytes never exceed the ceiling (§3.4, RFC0014.4). Ack is
  post-WAL, so blocking throttles mining throughput, not durability.

Remaining §7 questions (defaults, early-flush victim, rotation-hook surface,
size estimation) are tuning / implementation detail carried into red/green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jensholdgaard
jensholdgaard requested a review from Copilot June 17, 2026 04:44
@coderabbitai

coderabbitai Bot commented Jun 17, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jensholdgaard, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 18 minutes and 18 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ca6d6c39-147c-40e9-a63d-bc88fbff9478

📥 Commits

Reviewing files that changed from the base of the PR and between b4e69f2 and d039eb6.

📒 Files selected for processing (1)
  • docs/rfcs/0014-ingest-write-path.md
📝 Walkthrough

Walkthrough

RFC 0014 (ingest write-path) is advanced from drafted to specified. The document adds a stage note finalizing two design decisions: WAL rotation force-flushes every partition, and emit blocks at the hard memory ceiling. Flush-policy and backpressure prose are tightened accordingly. Acceptance criteria become numbered normative scenarios, and two open questions are closed.

Changes

RFC 0014 ingest write-path advancement to specified

Layer / File(s) Summary
Lifecycle status and stage note
docs/rfcs/0014-ingest-write-path.md
Status field updated from drafted to specified; Status note paragraph revised; new stage-note block added recording the two settled design decisions and deferring tuning to red/green.
Flush-policy and backpressure semantics
docs/rfcs/0014-ingest-write-path.md
WAL-rotation force-flush trigger updated to require flushing every partition (including sub-threshold low-volume partitions) with recovery-invariant rationale; memory-ceiling section tightened to require emit to block at the hard limit until buffered memory is freed.
Acceptance criteria, testing strategy, and open questions
docs/rfcs/0014-ingest-write-path.md
Acceptance criteria reframed as RFC0014.<m> normative scenarios linked to verification tests; testing strategy aligned; two open questions (force-flush scope, hard-ceiling backpressure) marked resolved; compaction/rotation question removed; tuning items kept open.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • jensholdgaard/ourios#240: Directly precedes this PR — refines the same RFC 0014 flush policy and backpressure semantics that this PR finalizes into the specified stage.
  • jensholdgaard/ourios#65: Both PRs align on WAL contract semantics; this PR's finalized hybrid rotation force-flush and recovery-invariant requirements complement the WAL acceptance-criteria work.

Poem

🐇 Hop, hop, the RFC hops along,
From drafted to specified — now that's a strong song!
Force-flush every partition, small files and all,
Block emit at the ceiling, don't let memory sprawl.
The open questions shrink, the criteria gleam —
One tidy RFC, like a fresh carrot dream! 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: advancing RFC 0014 from 'drafted' to 'specified' status, which is the primary objective of this documentation update.
Description check ✅ Passed The description comprehensively covers the PR purpose, settled design decisions, finalized acceptance criteria, testing strategy, and deferred implementation details. However, it does not explicitly check all template sections (e.g., no explicit 'Related' section with issue/RFC links, no checklist completion).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rfc0014-specified

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Advances RFC 0014 (ingest write path: buffering RecordSink + flush policy) from drafted to specified by finalizing acceptance criteria/testing strategy and recording two maintainer-settled design decisions (rotation force-flush scope and hard memory ceiling behavior).

Changes:

  • Updates RFC status to specified and expands the status note to reflect the “specified” gate.
  • Clarifies flush-trigger semantics for WAL rotation (flush every partition) and tightens the memory-ceiling description to a hard bound with emit blocking.
  • Rewrites §5 acceptance criteria and §6 testing strategy; updates §7 open questions to reflect what’s decided vs carried forward.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread docs/rfcs/0014-ingest-write-path.md

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread docs/rfcs/0014-ingest-write-path.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 7 comments.

Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated
Comment thread docs/rfcs/0014-ingest-write-path.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@jensholdgaard
jensholdgaard merged commit a261dc3 into main Jun 17, 2026
14 checks passed
@jensholdgaard
jensholdgaard deleted the rfc0014-specified branch June 17, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants