Skip to content

lance-graph-xlog: one resident hypercube as XLOG's execution context (probe, D-XLOG-NATIVE-7) - #1911

Merged
AdaWorldAPI merged 7 commits into
mainfrom
ccr-85acaff0-oszq40-hcube
Nov 1, 2026
Merged

AdaWorldAPI merged 7 commits into
mainfrom
ccr-85acaff0-oszq40-hcube

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What

Adds lance_graph_xlog::cube, a single resident context that holds every relation, and view handles into it.

  • Cube::new maps each id in both columns of every relation exactly once, against one shared tile map read under a MapTable frame.
  • scan, bind and join return Copy View handles. Creating a view runs no program and builds no row.
  • Three terminals compute results:
    • support: two ScatterOrU32 programs, then mask_and.
    • bag_count: two GroupReduce Count programs, then a checked product.
    • materialize_rows: the only place tuples are built.
  • Every terminal re-checks the frame.
  • Lanes are stored per relation, not per join orientation. Any relation can join any other on either column without new lanes, new lookups or a new index.

This is the experiment from the session's correction: replace the machine under XLOG's CUDA-facing API, rather than speeding up its operators one relation at a time. The comparison with Amendment E (#1910) and the XLOG-side seam census are in .claude/board/entries/2026-11-01-xlog-resident-hypercube-context.md.

Tests (crates/lance-graph-xlog/tests/cube.rs)

  • Parity with the per-call support / bag_count across five bound shapes.
  • All 36 joins (relation pair × column pair over three relations) match an enumeration oracle, and LocalMap::lookups() is unchanged after intake.
  • Laziness: composing 50 joins runs 0 programs. A support then runs exactly 2 programs and builds 0 rows.
  • Unmapped bound: a bound outside the map short-circuits its side.
  • Randomised differential, 300 cases, checking bag count, support and rows.
  • Refusals: stale frame, foreign view, a bound on the join column, and a terminal applied to a non-join.

Each guard was broken on purpose and its test went red:

  • bound ignored;
  • wrong join column;
  • frame check skipped;
  • materialize_rows ignoring the bound.

Not in this PR

Recursion, union and difference as views; more than one tile; n-ary relations; the CudaBuffer::View variant and a provider that needs no CUDA device in the XLOG fork; per-node cost measurements.


Generated by Claude Code

@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: db3a08ef-2efb-4253-9827-e9aba56b2027
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review November 1, 2026 03:09
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-01T03:10:16.212948Z 696a1f5 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 696a1f5853

ℹ️ 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".

Comment thread crates/lance-graph-xlog/src/cube.rs Resolved
…e probe to D-XLOG-NATIVE-7

An empty map made bag_count fail with TerminalNeedsOut, because mask-risc
refuses a zero-length I64 sink. Both per-side passes now return their empty
result without running a program, and a test covers two empty relations.

D-XLOG-NATIVE-5 was already the bind-store binding entry; the probe takes the
next free id and gets its STATUS_BOARD row. Indexes regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
@AdaWorldAPI AdaWorldAPI changed the title lance-graph-xlog: one resident hypercube as XLOG's execution context (probe, D-XLOG-NATIVE-5) lance-graph-xlog: one resident hypercube as XLOG's execution context (probe, D-XLOG-NATIVE-7) Nov 1, 2026
@AdaWorldAPI
AdaWorldAPI merged commit 3ee4e4f into main Nov 1, 2026
14 of 15 checks passed
AdaWorldAPI pushed a commit that referenced this pull request Nov 3, 2026
Cites d-xlog-native Amendment E (#1910) as the decided route: assimilate
into lance-graph-xlog, polyfill the callers, CubeCL over ndarray only for
the residue; CudaBuffer plumbing is not ported. Records that the
device-less provider / CudaBuffer::View idea (#1911) is OPEN and that the
"Amendment F" cited by cube.rs:2 and the D-XLOG-NATIVE-7 entry is absent
from the plan. Adds the per-crate caller-surface count toward E's open
census.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X6y3drwKSE2zSgoexheLFX
AdaWorldAPI pushed a commit that referenced this pull request Nov 3, 2026
Removes the Amendment F written in f94c20a: it backfilled an
experiment's scope as an architectural decision. d-xlog-native-v1.md is
back to its pre-F text.

The three citations of a never-written Amendment F (cube.rs:2,
tests/cube.rs:1, the D-XLOG-NATIVE-7 entry header) now point to the
D-XLOG-NATIVE-7 entry and PR #1911. Doc comments only; no code changes.

D-XLOG-WIRE: Amendment E stays the decision of record. The device-less
provider and CudaBuffer::View are a non-authoritative research
possibility. The provider-call count is an inventory, not a migration
mandate. Cube::closure / closure_wide are not equivalent to xlog-cube's
host-row recursive SCC evaluation.

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