Skip to content

crepe-plan-probe: walk_mask tuple oracle, UNCHECKED above oracle size, CI fixtures - #1642

Merged
AdaWorldAPI merged 1 commit into
mainfrom
ccr-0455e606-wmtsor
Oct 21, 2026
Merged

AdaWorldAPI merged 1 commit into
mainfrom
ccr-0455e606-wmtsor

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Follow-up to #1637. Lab only; nothing in a production path changes.

What changes

  1. Tuple oracle. The mask result is decoded into the canonical sets Walk(x, z, len) and NoWalk(x, y). Both sets are compared tuple for tuple with the sets ascent and crepe produce. Decoding runs outside every timed region and has its own timing.
  2. No self-comparison. Above ORACLE_MAX_N (512) neither oracle runs, and the table prints UNCHECKED. Before, it compared the mask result with itself at n = 1024.
  3. CI. Eight #[test] fixtures live in the example. The workflow now runs cargo test --example walk_mask. The release benchmark is still not run in CI.
  4. Fixtures:
    • edge lengths {1,2,3,5,7};
    • cycles;
    • alternative path lengths, with expected sets derived by hand rather than taken from an oracle;
    • MAX_PATH_LEN, both inclusive and exceeded;
    • 64-bit word boundaries (n = 63, 64, 65, 127, 128, 129);
    • ids in 0..n that are not nodes;
    • zero-length edges;
    • the benchmark generator at n = 64.

The table also reports:

  • plane memory (3 × (L+1)·n·⌈n/64⌉·8 bytes);
  • the number of value-addressed row reads.

The module docs state that the hop delta[row(l2, y)] is a gather. That makes this a lab upper bound, not an ADMISSION-B operator.

Disable runs (each reverted afterwards)

Disable Result
Decode each length as (l+1) % 51. Every count stays the same, the tuple set does not. 8/8 red
Make MAX_PATH_LEN exclusive 5/8 red, including max_path_len_is_inclusive
Round the row word count down 5/8 red, including word_boundaries

The first row is the case a count-only check cannot see.

Benchmark (release, 4 cores, load ≈ 1)

n crepe ms ascent ms count-only ms tuple decode ms count vs crepe count vs ascent MiB (×3 planes) row reads oracle
128 12.3 5.3 0.30 4.4 42× 18× 0.3 6,360 sets equal
256 73.4 25.9 1.19 18.1 62× 22× 1.2 26,230 sets equal
512 600 165 2.57 77.0 233× 64× 4.8 104,830 sets equal
1024 – – 7.06 324 – – 19.1 419,230 UNCHECKED

The speed-ups apply to counts only. Turning the planes into tuples (BTreeSet, unoptimized) costs about 30× the count path. At n = 512, count plus decode is about 80 ms, against ascent's 165 ms, which builds its tuples as it runs. That is about 2×, not 64×. Tuple materialization, count-only evaluation, memory and address binding therefore need to be measured separately, as this PR does.

The n = 512 count time is 2.57 ms here and was 1.40 ms in #1637. The row-read counter is one candidate, and run-to-run noise has not been ruled out.


Generated by Claude Code

…size, CI fixtures

Follow-up to #1637. Lab only; no production path.

- The bit planes are decoded into canonical Walk(x,z,len) and NoWalk(x,y)
  sets and compared tuple for tuple with ascent's and crepe's sets.
  Decoding is outside every timed region and timed on its own.
- Above ORACLE_MAX_N (512) neither oracle runs and the table prints
  UNCHECKED, instead of comparing the mask result with itself.
- Count-only time (fixpoint + popcounts) and tuple time are separate
  columns; the count path is checked against the decoded sets.
- The table reports plane memory (3 x (L+1)*n*ceil(n/64)*8 bytes) and the
  value-addressed row reads. The hop is a gather, so this stays a lab
  upper bound, not an ADMISSION-B operator (module docs).
- Eight #[test] fixtures: edge lengths {1,2,3,5,7}, cycles, alternative
  path lengths (hand-derived expected sets), MAX_PATH_LEN inclusive and
  exceeded, 64-bit word boundaries (n = 63..129), ids that are not nodes,
  zero-length edges, the benchmark generator at n = 64.
- CI runs cargo test --example walk_mask; the benchmark is not run in CI.

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

coderabbitai Bot commented Oct 20, 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: 78b9a722-d27f-4f78-9925-5d85e5f7b3b1
  • 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 00:15
@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-21T00:17:40.838665Z 58a6c79 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.

@AdaWorldAPI
AdaWorldAPI merged commit ee03ac0 into main Oct 21, 2026
11 checks passed

@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: 58a6c7985b

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

for _ in 0..REPS {
let s = Instant::now();
out = black_box(f());
out = Some(black_box(f()));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Exclude prior-result drops from tuple timing

When time benchmarks planes.tuples(), assigning the new value to out drops the previous Tuples value before s.elapsed() is recorded. Consequently, eight of the nine samples include destruction of a potentially large BTreeSet, so the median reported as tuple-decoding time also measures deallocation and is not representative of the operation described in the table. Record the elapsed duration before replacing the retained output, or otherwise move the prior result's drop outside the timed interval.

AGENTS.md reference: AGENTS.md:L24-L27

Useful? React with 👍 / 👎.

AdaWorldAPI pushed a commit that referenced this pull request Oct 21, 2026
…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
AdaWorldAPI pushed a commit that referenced this pull request Oct 21, 2026
…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
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