Skip to content

D-STO-1 (resident half): owner-stamped batches over resident lanes - #22

Merged
AdaWorldAPI merged 3 commits into
mainfrom
ccr-1d749cc5-q8s5qs
Oct 10, 2026
Merged

AdaWorldAPI merged 3 commits into
mainfrom
ccr-1d749cc5-q8s5qs

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What

hubspo-store::table::Table holds one dataset (tenant × object type, plan §5.5) in memory.

  • Layout: resident U32 / I32 lanes, a live plane (plane 0), and one validity plane per nullable lane. planes() lends them to mask-risc; no read copies a lane.
  • Writes: a Batch (inserts, updates, deletes) is validated as a whole and lands as exactly one new version, or not at all.
  • Ownership: a table accepts only batches written for its own owner (the contract's MailboxId; write on behalf, one writer per mailbox).
  • Refusals: wrong owner, wrong arity, wrong kind, a missing required value, an unknown lane, a deleted or absent row, and a row written twice in one batch (two updates of the same lane, update + delete, delete + delete). Order inside a batch carries no meaning, so a double write is ambiguous.
  • Result: apply() returns Applied { version, first_insert, changed }. changed is the plane that list::refresh (D-QRY-2: active / static lists and membership history as mask programs #20) takes.
  • Ordinals are never reused: inserts append, and deletes clear the live bit and leave the row inert. Static lists rely on this.

Persistence, one Lance version per published batch using P-SPARSE-1's base + sparse delta, is the other half of D-STO-1 and comes next. It will sit behind a feature so this crate's default CI stays fast.

Evidence

  • hubspo-store/tests/table.rs:
    • 60 random batches match a plain model on every lane and plane, with more than 200 updates and 30 deletes over the run.
    • All 12 refusal kinds leave the version, lanes and planes untouched. Each refused batch also carries a valid insert, so a partial apply would show.
  • hubspo-query/tests/store_list.rs runs end to end: catalog → filter compiler → list::refresh, fed by the store's own changed plane. Over 50 batches it equals a full recomputation.

Disable runs; every one went red:

  • owner not checked;
  • deletes missing from changed (red in the store test and in the list test);
  • a delete that keeps the row live;
  • a cleared value that keeps its validity bit;
  • the version not incremented;
  • the conflict check turned off;
  • updates to deleted rows allowed;
  • lane kind not checked.

Workspace fmt, clippy (--all-targets --no-deps -D warnings), tests and hubspo-guards are green locally. No serde in zone 2. Rebased on main after #21; no other HubSPO-rs PR is open.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PPcakjk7ioQsnasmNDtc5z


Generated by Claude Code

hubspo-store::table::Table holds one dataset's records as resident lanes
with a live plane and one validity plane per nullable lane; reads borrow
them. A Batch (inserts, updates, deletes) is validated whole and lands as
exactly one version or not at all, only for the table's owner
(MailboxId, write on behalf). apply() returns the plane of touched rows,
which is what list::refresh takes. Ordinals are never reused.

Tests: 60 random batches match a plain model, lanes and planes alike;
twelve refusal kinds leave the table untouched; a list maintained from
the store's changed planes equals a full recomputation over 50 batches.

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
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPcakjk7ioQsnasmNDtc5z
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@AdaWorldAPI
AdaWorldAPI merged commit d27d1a2 into main Oct 10, 2026
1 check passed
AdaWorldAPI pushed a commit that referenced this pull request Oct 14, 2026
…#22-#25

D-QRY-1 points at the D-CMR set algebra (relalg prototype, #1546),
D-QRY-5 at the D-CMR-5 preimage hop, D-FLOW-1 at graph-flow-lance.
New ask ISS-LG-GRAPHFLOW-LANCE-PATHS; the preflight pin issue is
still open at c21bd165.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPcakjk7ioQsnasmNDtc5z
AdaWorldAPI added a commit that referenced this pull request Oct 14, 2026
board: synergies from lance-graph #1530–#1546, rs-graph-llm #27, spear #22–#25
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