Skip to content

D-RMAP focus probe and native join over a relationship table; board rows for #1618–#1620 - #1621

Merged
AdaWorldAPI merged 5 commits into
mainfrom
ccr-08f48cec-lbv9l4
Oct 20, 2026
Merged

AdaWorldAPI merged 5 commits into
mainfrom
ccr-08f48cec-lbv9l4

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

This PR has three parts. All the code is probe code in crates/mork-pathmap-probe; nothing is adopted or wired into Quack or R2IL.

1. Focus-bound RelationshipMap probe (D-RMAP-1A §8, src/rmap.rs)

A 256-slot focus over 65 536 identities is bound to an existing index (a sorted run of fact rows, or a PathMap trie). It is prepared into a slot-space CSR, plus a 256×256 bit tile per predicate. 1–3-hop reach runs through the existing mask-risc executor:

  • No gather and no copied fact; address translation happens only in preparation.
  • Out-of-focus targets are reported as escapes, never dropped.

12 tests run against an independent scan oracle; 11 guards are disable-verified. Measured (release, warm cache, medians of 5):

  • Reuse: preparing the focus pays off after about 76, 11 and 1.8 reuses (sparse degree 2, degree 8, dense). These counts are arithmetic from the measured medians.
  • Representation: the tile beats the CSR only on the dense relation.
  • Focus churn: updating the prepared focus loses to a rebuild at k = 256 replaced slots.
  • Thoughts: per-evaluation cost stays flat at 1, 8 and 64 thoughts; each thought's edits take 32 B sparse.
  • PathMap: prefix seek beats the sorted run on sparse relations, but the trie takes 4–6× longer to build, and its keys take at least 3× the bytes.
  • Places: a zero-copy focus mask over the canonical columns takes 20–24 µs, against about 1–2 µs after a 3 KB register copy. The executor's mask gate works per 64-bit word. This trade-off is recorded as open.

2. Native join over a versioned relationship table (Schnellverschluss §7b, src/join.rs)

The Schnellverschluss plan blocked the native arm on "a co-addressed producer for the input shape". JoinTable is such a producer. It lays out R(x, y) and S(y, z) by the slot of y in one shared domain, and each side keeps its own dataset generation:

  • The leapfrog y-level intersection is one mask-risc And over two presence planes.
  • Enumeration reads both sides only at the surviving slot.

Backend::Native now answers in the differential suite, for both set and bag semantics (both upstream indexes are sets). There are 8 new tests, and 7 guards are disable-verified. At n = 50 000:

native PathMap MORK
prepare / build 2.7 ms 14.7 ms 22.9 ms
set answers into a map 7.4 ms 26.1 ms 144 ms
  • Native without the map: streaming the answers takes 0.33 ms, and a bag count 36 µs.
  • Re-preparing one side after its dataset is resealed takes 0.21 ms, against 2.47 ms for the whole table.

Not admitted: the global-to-local binding needs the D-RMAP-1 BIND membrane review. Cyclic bodies (triangle) are not covered.

3. Board rows for #1618, #1619, #1620

The two Codex findings on the board commit were fixed in fcc4bd4c and resolved.

Because this PR now includes code, it needs its own arc entry after it merges.

Checks run locally

  • cargo test --release, with and without --features leapfrog: all green.
  • cargo clippy --all-targets -D warnings, both feature sets: clean. cargo fmt --check: clean.
  • Append-only gate: no protected file shrank.
  • Citation decay: no new findings.
  • Entries and supersession indexes: regenerated.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VyWZYKycy6MoYDxHRVnV5K

PR_ARC_INVENTORY entries for #1618 (post-merge recovery for
#1601-#1617, merged dbe0696) and #1619 (D-RMAP binding palette
generation and the §7 versioning crosswalk, merged 8e004a2), and a
LATEST_STATE section for main after #1619. Contract inventory delta:
none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VyWZYKycy6MoYDxHRVnV5K
@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

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

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a7c7c29e-0b25-45c1-a0be-cc28ebc9e48e
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

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.

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review October 19, 2026 23:05
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 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-10-19T23:07:23.029680Z d8957bd 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: d8957bd6d5

ℹ️ 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 .claude/board/PR_ARC_INVENTORY.md Outdated
Comment thread .claude/board/PR_ARC_INVENTORY.md Outdated
Two Codex findings on #1621, both checked against the plan text:
- #1619: map generation is the sealed RelationshipMap/RelationFacts
  DurableRef only; ThoughtCommitId applies to palette generation alone
  (D-RMAP-1A §7.3).
- #1618: at dbe0696 the thought-palette binding still keyed only
  MapPaletteId; #1618 added the map generation to the tile key and a
  palette generation to MapPalette. The binding change is #1619's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VyWZYKycy6MoYDxHRVnV5K
Merges main (#1620, dca8e7b) into the #1621 branch and resolves the
LATEST_STATE conflict by keeping #1620's own section, now marked merged,
under a new "main after #1620" section. Adds the PR_ARC_INVENTORY entry
for #1620, including the corrected cost figure (1.6x shared vs rebuilt,
not 110x). Entries index regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VyWZYKycy6MoYDxHRVnV5K
@AdaWorldAPI AdaWorldAPI changed the title board: record #1618 and #1619 board: record #1618, #1619 and #1620 Oct 19, 2026
Measures the D-RMAP-1A §6 economics on a probe, with nothing adopted:
a 256-slot focus over 65 536 identities, bound to an existing sorted
run or PathMap trie, prepared into a slot-space CSR and a 256x256 tile
per predicate, and evaluated through the existing mask-risc executor.
No gather, no copied fact, no new opcode, store or CE64 field; address
translation happens only in preparation, and out-of-focus targets are
reported as escapes rather than dropped.

- crates/mork-pathmap-probe/src/rmap.rs: SortedRun, Focus, Csr, Tile,
  ThoughtDelta, incremental rebind, place focus masks and register
  lanes, membership planes for postings, witness refusals.
- boundary.rs: SpogTrie (PathMap, p|s|o) and PostingTrie.
- tests/rmap.rs: 12 tests against an independent scan oracle; 11
  guards disable-verified.
- examples/rmap_cost.rs: amortization at N = 1..1 000 000, churn
  k = 1..256, 1/8/64 thoughts, bytes.

Measured (release, warm, medians of 5): break-even reuses 76 / 11 /
1.8 for sparse degree 2 / degree 8 / dense; the tile beats CSR only on
the dense relation; incremental rebind loses at k = 256. Recorded in
D-RMAP-1A §8, STATUS_BOARD D-RMAP-1A-P and a board entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VyWZYKycy6MoYDxHRVnV5K
The Schnellverschluss native arm was blocked on "a co-addressed producer
for the input shape". This adds one as a probe: JoinTable lays R(x, y)
and S(y, z) out by the slot of y in one shared domain, each side tied
to its own dataset generation. The leapfrog y-level intersection becomes
one mask-risc And over two presence planes; enumeration reads both sides
only at the surviving slot, so no operand is read at a position taken
from another's values. Not admitted: the global-to-local binding still
needs the D-RMAP-1 BIND membrane review, and nothing is wired into Quack
or R2IL.

- src/join.rs: JoinDomain, Side, JoinTable (prepare, prepare_star,
  replace_side, check), JoinExec (joint, answers, for_each_answer,
  bag_count), filter planes per thought.
- boundary.rs: Backend::Native answers through the table, for set and
  bag semantics.
- tests: 8 join tests and native arms in the differential suite against
  the nested-loop oracle; 7 guards disable-verified.
- examples/join_cost.rs: native vs PathMap vs MORK on the cost.rs
  fixtures and a heterogeneous one.

Measured at n = 50 000: prepare 2.7 ms (PathMap 14.7, MORK 22.9); set
answers 7.4 ms (26.1, 144); bag count 36 us; reseal of one side 0.21 ms
vs 2.47 ms for the table. Cyclic bodies are not covered. Recorded in the
Schnellverschluss plan §7b, D-RMAP-1A §8.8a, STATUS_BOARD D-MPS-8 and a
board entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VyWZYKycy6MoYDxHRVnV5K
@AdaWorldAPI AdaWorldAPI changed the title board: record #1618, #1619 and #1620 D-RMAP focus probe and native join over a relationship table; board rows for #1618–#1620 Oct 20, 2026
@AdaWorldAPI
AdaWorldAPI merged commit fcd1f60 into main Oct 20, 2026
1 check passed
AdaWorldAPI pushed a commit that referenced this pull request Oct 20, 2026
Arc entries for #1621-#1626 and a LATEST_STATE section; four ISSUES rows
that each gather one blocker's several names (admission, recursion
driver, retraction provenance, DurableRef/ThoughtCommitId); a correction
for the stale D-RMAP-2 "not run" index line; the Haiku run ledger; and
D-RMAP-2 §5a-AMX re-measured on a second AMX host.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
AdaWorldAPI added a commit that referenced this pull request Oct 20, 2026
board: catch up #1621–#1626, one row per duplicated blocker, D-RMAP-2 AMX re-run
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