Skip to content

D-RU-6 lab: graph_walking over co-addressed RMAP tiles vs walk_mask - #1647

Merged
AdaWorldAPI merged 4 commits into
mainfrom
ccr-0455e606-wmtsor
Oct 21, 2026
Merged

AdaWorldAPI merged 4 commits into
mainfrom
ccr-0455e606-wmtsor

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Operator-authorized lab probe for D-RU-6 (d-relalg-unified-v1.md §8, §10, §14 U6). Lab only. No production path changes, and this PR is not an ADMISSION B demonstration. D-RU-6 stays Queued/Lab. Please don't merge on green CI alone.

What it is

crates/crepe-plan-probe/examples/walk_tile.rs is a separate example. It evaluates crepe's graph_walking program (Walk(x,z,len) for len in 0..=50, NoWalk, set semantics, least fixpoint) over 256-slot RMAP foci and 256×256 Boolean tiles. walk_mask (#1637, #1642) runs beside it as the measured baseline.

Reuse, not a new engine:

  • mork-pathmap-probe::rmap::{Focus, Witness, Refusal, tile_addr};
  • a mask-risc Ternlog program for the tile product;
  • tile_gemm::BitMat::compose as an independent kernel oracle;
  • walk_mask's oracles, fixtures and executor. walk_mask.rs is compiled in as a module, and its only change is pub(crate) on the items reused; it has no behaviour change and its 8 tests still pass.

How it runs:

  • Hop: a predicated Boolean tile product. For each coordinate y, C |= broadcast(row y of A) & spread(bit y of each row of B). Every address is a loop coordinate.
  • Paging: more than 256 nodes are paged across foci, and cross-page edges are counted.
  • Refusals: too many foci, a scope that misses reached ids, a stale witness (focus generation, facts or seal), and any program containing MaskOp::Gather are all refused.

Tests: 23 (8 of them are the baseline's)

  • Tuple sets equal ascent, crepe and walk_mask on: mixed lengths {1,2,3,5,7}, cycles, alternative path lengths, zero-length and over-length edges, ids that are not nodes, and 255/256/257/300 nodes across foci. Also the benchmark generator over two foci, and a sparse graph over three.
  • Recursion depth: a chain that needs ≥ 200 iterations (230 measured), and a zero-length 200-ring that terminates.
  • Kernel: the tile product against BitMat::compose.
  • Negative tests: a stale witness, an incomplete focus (cap and scope), a wrong path length (counts equal, the tuple oracle catches it), and an unauthorized gather.

CI gains cargo test --example walk_tile. The benchmark itself is not run in CI.

Disable runs (all red, each reverted)

Disable Red
admit lets Gather through the gather test
witness check removed the stale test
escape refusal removed the scope test
page cap removed the cap test
length bound exclusive 6 tests
cross-page products dropped 2 tests
spread reads y ^ 1 ≥ 8 tests
decode shifts a length ≥ 8 tests

Measured (release, 4 vCPU, load < 1.3, medians of 7)

fixture foci mask count-only ms tile count-only ms tile/mask mask + decode ms tile + decode ms tile/mask oracle
edges(128) 1 0.43 0.72 1.7× 4.14 4.54 1.1× equal
edges(256) 1 1.28 1.32 1.0× 15.8 18.2 1.2× equal
edges(512) 2 3.07 8.95 2.9× 68.3 74.7 1.1× equal
edges(1024) 4 12.7 72.0 5.7× 277 384 1.4× UNCHECKED (tile = mask)
chain(230) 1 7.43 27.6 3.7× 16.8 33.6 2.0× equal
mixed(256) 1 8.65 80.0 9.3× 298 568 1.9× equal
  • Time split for the tile path. Tile count-only covers every phase except decoding. At edges(1024) the phases are, in ms:

    attest validate bind project recurse count decode
    0.84 < 0.001 0.80 1.74 67.6 0.16 318

    Binding costs about 4.7% of the count-only time; recursion costs 94%.

  • Memory. Resident growth was measured as VmHWM in a fresh process per cell. In-process heap counting is impossible here because PathMap enables jemalloc as the global allocator. At edges(1024), count-only resident growth is 14.2 MiB for walk_mask and 2.2 MiB for tiles. Only non-empty tiles exist: 1.28 MiB, against 19.1 MiB of dense planes. Decoding erases the difference: 50.7 vs 44.9 MiB.

  • Value-derived reads at edges(1024): walk_mask execution makes 419,230. The tile path makes 0 in execution, 83,846 codebook lookups in preparation, and 4.04M codebook decodes in decoding.

Verdict. Co-addressed execution removes the value-derived reads but does not keep the mask approach's speed. It is 1.0–9.3× slower count-only and 1.1–2.0× slower end to end. End to end looks closer only because tuple decoding dominates both engines. The loss is reported as measured: no measured cost was optimized away.

ADMISSION B classification

Step Classification
attestation, codebook build same-table sequential scans, counted
slot resolution one frozen-codebook lookup per edge endpoint, keyed by the edge's own value. This is the shape the ruling admits, but the witness is the probe-local rmap::Witness digest, not the attested sorted key the ruling names. Not demonstrated.
edge tiles projection of the same table
recursion co-addressed. Demonstrated (refusal guard, disable-verified).
decoding frozen-codebook decoding, counted

Board

  • New entry D-RU-6-LAB-1 (entries/2026-10-21-d-ru-6-tile-walk-probe.md).
  • The D-RU-6 row stays Queued/Lab and now carries the benchmark requirement (refs D-RMAP-2 §5b, crepe-plan-probe: walk_mask tuple oracle, UNCHECKED above oracle size, CI fixtures #1642). Plan §8 carries the same requirement.
  • The entries index is regenerated; the supersession index is unchanged.
  • No new D-id.
  • Not touched: D-CMR-1, relalg normalize, its rewrite catalogue, mork-pathmap-probe sources. File ownership is claimed on EXO-50.

Open

  • A contract-level attestation for the codebook, before any ADMISSION B claim.
  • Whether a block-sparse co-addressed product can close the count-only gap without a value-addressed read.
  • Identity-scale paging (65,536 nodes) is not measured.

Generated by Claude Code

…MAP tiles

walk_tile.rs evaluates crepe's graph_walking program (Walk(x,z,len) for
len in 0..=50, NoWalk) over 256-slot RMAP foci and 256x256 Boolean tiles,
against walk_mask (#1637, #1642) as the measured baseline.

- Reuses rmap::{Focus, Witness, Refusal, tile_addr}, a mask-risc Ternlog
  program per coordinate for the tile product, tile_gemm::BitMat as an
  independent kernel oracle, and walk_mask's oracles and fixtures (the
  baseline file is compiled in as a module; walk_mask.rs only gains
  pub(crate) on the items reused, no behaviour change).
- Phases timed apart: attestation, witness validation, identity
  resolution and focus binding, projection, recursion, count-only,
  decoding. Value-derived reads reported by origin.
- More than 256 nodes: paged across foci, cross-page edges counted; more
  foci than allowed, or a scope that misses reached ids, is refused.
- Refusals tested: stale witness (focus, facts, seal), incomplete focus,
  a wrong path length (counts equal, oracle differs), a program with
  MaskOp::Gather.
- Chain fixture needs >= 200 iterations; a zero-length ring terminates.

Lab only. Not an ADMISSION B demonstration: the binding uses a
probe-local witness, not the attested sorted key the ruling names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
…nt; CI step

- walk_tile.rs: count-only end-to-end and resident memory (count-only and
  with decode, both engines, fresh child process per cell; PathMap's
  jemalloc rules out a counting allocator); a sparse three-focus fixture
  replaces edges(520) so the debug-build oracles stay fast in CI.
- CI runs cargo test --example walk_tile.
- Board: entry D-RU-6-LAB-1 with the measurements, disable runs and the
  ADMISSION B classification; D-RU-6 row stays Queued/Lab with the
  benchmark requirement (refs D-RMAP-2 §5b, #1642); plan §8 carries the
  same requirement.

Measured: tuple sets equal ascent, crepe and walk_mask; execution reads no
value-addressed position; the binding witness is probe-local, so
ADMISSION B is not demonstrated. Count-only the tile path is 1.0-9.3x
slower, end to end 1.1-2.0x slower; count-only resident memory is 6.4x
smaller at 1024 nodes.

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

coderabbitai Bot commented Oct 21, 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: 6619723c-8052-46e8-804c-8f75c57702cc
  • 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 21, 2026 01:03
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 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-21T01:05:38.841444Z ce4997a 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: ce4997a6dd

ℹ️ 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/crepe-plan-probe/examples/walk_tile.rs Outdated
The only conflict was .claude/board/entries/README.md, a generated file:
taken from main and regenerated with entries_index.py --write.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
An id in the scope that no edge names became a node and got Walk(id,id,0)
and NoWalk pairs the program and both oracles omit. The codebook is now
the edge endpoints, intersected with the scope. Test:
a_scope_id_in_no_edge_is_not_a_node.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
@AdaWorldAPI
AdaWorldAPI merged commit c3563e3 into main Oct 21, 2026
13 checks passed
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