Skip to content

D-DYNBAG-0: XLOG probe through Quack → mask-risc, gated by the bind store - #1906

Merged
AdaWorldAPI merged 8 commits into
mainfrom
ccr-85acaff0-oszq40-dynbag0
Nov 1, 2026
Merged

AdaWorldAPI merged 8 commits into
mainfrom
ccr-85acaff0-oszq40-dynbag0

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Stacked on #1905 (dr::MapTable). Merge #1905 first. Until then this diff also shows its commits.

What

The XLOG probe (crates/xlog-relcomp-probe) no longer calls ndarray::simd folds directly. This is the layering fix in plan d-dynbag-holographic-bags-v1.md §17.

  • Quack → mask-risc. Each side of q(Y) :- r(X,Y), s(Y,Z) is one Quack Query, lowered and run by mask-risc execute_into:

    • support = Agg::ScatterOrU32 per side, then mask_and;
    • bag count = Agg::GroupReduce { Local(y), Count } per side, then a checked product.

    Two direct ndarray::simd calls remain, and neither is a fold: mask_and (an elementwise alias) and checked_binary_i64. The latter is TRACKED as MISSING-3, because mask-risc cannot yet combine two i64 sinks elementwise.

  • native::Intake. Y is looked up once per tuple, under a MapTable frame. Every query re-checks that frame and reads the lanes without looking anything up again. This closes MISSING-5.

  • bag_count_admitted. Execution starts from the MethodBinding the BindStore admitted. The method must be Population::Bag, and each AlgebraRef word must have a reading from the caller (MISSING-1 is solved probe-local). It refuses:

    • a retracted route, which produces no binding;
    • a stale frame;
    • a word the caller gave no reading for;
    • a Distinct method.
  • p(X, Z) stays refused at admission, so a q(Y) result is never offered for it (gate 6, now pinned).

  • native::support and native::bag_count keep their public signatures, so gate_b.rs and litho.rs remain the oracles (scalar enumeration, XLOG's RIR walk, and the DR64 register differential).

Validation

  • All tests were written before the implementation. The new API failed to compile until it existed.

  • cargo test --release in the probe: every suite green (one #[ignore], already there before this PR).

  • cargo clippy --release --all-targets -- -D warnings: clean.

  • Disable runs, each red:

    disabled result
    Count swapped for Max litho 3 red
    backward side dropped from support gate_b 5 red
    population check 1 red
    map frame check 1 red
    unread word accepted 1 red
    intake frame not re-checked 1 red
    a lookup per query 1 red

Plan §17.7 has the gate-by-gate status. Still open: the cost columns, MISSING-1/2/3/4 in their owner crates, and crates/lance-graph-xlog (D-XLOG-NATIVE-4).


Generated by Claude Code

A LocalMap is now read only under the frame it was sealed under; the
coordinates revision is derived from the held maps (tile id + map digest),
not passed in. Stored selections (D7') wait on O4. Design: plan §1e.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
…YNBAG-0, step 1)

support = ScatterOrU32 per side + mask_and; bag count = GroupReduce Count per
side + checked_binary_i64 (TRACKED, MISSING-3). No ndarray fold word left in
native.rs. Public API unchanged; gate_b / litho stay the oracles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
…-0, step 2)

bag_count_admitted runs only from an admitted Bag method whose words the
caller reads (MISSING-1, probe-local) and from DR's Y map read under the
caller's MapTable frame; a stale frame, an unread word, a Distinct method, or
a retracted route (no binding) leaves nothing to run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
…-0 gate 3)

Queries read the intake's lanes and re-check its frame; no lookup after
intake (MISSING-5 test). bag_count_admitted now runs over an Intake.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
@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: 4cf9ba78-a20e-4ec9-96a0-a5183d25ca4c
  • 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

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review November 1, 2026 02:15
@AdaWorldAPI
AdaWorldAPI merged commit cbc9099 into main Nov 1, 2026
12 checks passed
@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-01T02:16:03.430729Z dc2099b 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.

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