Repository navigation
Knowledge: split-tunnel persistence — sparse append on write, resident fold on read (measured: 0.72 ms) - #1466
Conversation
Sparse append on write (one Lance version per batch, never compacted), fold over resident records on read, Lance read once at replay. HubSPO-rs hubspo-store::log measured history at 0.72 ms against 336 ms scanning Lance. First measured instance of the newest-first-over-append-only and SparseDelta working models; the Alpha types are not touched. Adds the knowledge doc, a board entry (index regenerated), and a line in the CLAUDE.md knowledge list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPcakjk7ioQsnasmNDtc5z
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPcakjk7ioQsnasmNDtc5z
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing (4)
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b3352b9eb7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…use it Lance rebases an Append, so a read-then-append check cannot refuse a concurrent writer (spog-alpha-channel-v1 F6). One writer per log comes from ownership; in-band (cycle, batch_hash) reconciliation stays OPEN. Found by review on #1466. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPcakjk7ioQsnasmNDtc5z
What
Documentation only. Records a measured persistence pattern as a globally available knowledge doc, so the next consumer adopts it instead of re-deriving it.
.claude/knowledge/split-tunnel-sparse-append-resident-fold.mdcovers the pattern, its seven rules, the measurements, the scope, and how to adopt it.(version, owner, op, row, lane, present, value)records, one Lance version per batch. Never updated in place, never compacted.2026-10-10-split-tunnel-sparse-append-resident-fold.md, with the index regenerated (entries_index.py --write;--checkpasses).CLAUDE.mdknowledge list, so the doc is found from the session entry point.Why it belongs here
This is the first measured instance of two working models already on this board:
2026-09-23-stable-row-ids-…;SparseDelta, from2026-10-05-quack-storage-portability.md.It applies the existing cost rule from
2026-09-24-cost-scales-with-dirty-rows-…: one write costs about 10⁶ folds, and a Lance scan is recovery cost.The
Alpha*types are not touched.AlphaOverlaycarries no payload, so this is the persistence half beside it.Evidence
The reference implementation is HubSPO-rs
hubspo-store::log(#23–#25 there), measured in release on 2026-10-10 over 1.2M log records, 1,000 versions and 1,001 fragments:Disable runs there were all red: the resident-version check, installing before replay validates,
commitnot extending the in-memory records, each term of the history program, and the I32 sign bit.Scope: labelled MEASURED for one consumer and carrier shape, and WORKING-MODEL for
NodeRow/ facet payloads, multi-mailbox logs, and in-memory sets larger than memory. Thechanged_coordinatesrepresentation stays open.supersession_index.pyregenerates identically, andcitation_decay.py --since origin/mainreports no new decay.🤖 Generated with Claude Code
https://claude.ai/code/session_01PPcakjk7ioQsnasmNDtc5z
Generated by Claude Code
Summary by CodeRabbit