Skip to content

crepe-plan-probe: ascent as a second oracle for walk_mask - #1637

Merged
AdaWorldAPI merged 1 commit into
mainfrom
ccr-d3ce1263-ied9yh
Oct 20, 2026
Merged

AdaWorldAPI merged 1 commit into
mainfrom
ccr-d3ce1263-ied9yh

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Follow-up to #1634.

What changes

examples/walk_mask.rs now runs crepe's graph_walking program a third way: through the AdaWorldAPI ascent fork (master), added as a dev-dependency. The bit-plane evaluation must give the same Walk and NoWalk tuple counts as both crepe and ascent. Lab only; no production path changes.

Measurement (release, median of 9)

n crepe ms ascent ms bit planes ms vs ascent
128 11.1 4.7 0.29 16×
256 72.5 26.5 1.10 24×
512 520 129 2.42 53×

The crepe column uses the default hasher. crepe's own criterion bench, which uses Fnv, is 7.6 / 41.2 / 290.6 ms. Against that bench, ascent is 1.6–2.2× faster than crepe.

The gap to the bit planes grows with n:

  • ascent joins tuple at a time;
  • the bit planes turn the join into an OR of one adjacency row.

Both macros would need a domain annotation for a dense node range and a bounded length to get this.

Tests

  • The counts are identical across all three engines at n = 128, 256 and 512.
  • Disable run: tightening ascent's length bound to < 50 fails the ascent count assertion.
  • crepe-plan-probe: 38 tests pass. clippy (-D warnings) and fmt are clean.

Generated by Claude Code

walk_mask now also runs crepe's graph_walking program through the
AdaWorldAPI ascent fork (master). The bit-plane counts must equal both
crepe's and ascent's.

Measured (release, median of 9):

| n   | crepe ms | ascent ms | mask ms |
|-----|----------|-----------|---------|
| 128 | 11.1     | 4.7       | 0.29    |
| 256 | 72.5     | 26.5      | 1.10    |
| 512 | 520      | 129       | 2.42    |

The crepe column uses the default hasher; crepe's own Fnv bench is
7.6 / 41.2 / 290.6 ms.

Disable run: tightening ascent's length bound to `< 50` fails the ascent
count assertion.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VncKoyG6JkpsoqhqTGTv3f
@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: 52fbf707-f82a-420c-a906-4ff625e68d86
  • 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 20, 2026 22:15
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 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-20T22:18:27.261349Z a447222 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.

@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown

Add Carrot credits or activate Agent usage billing to use Autofix

@AdaWorldAPI
AdaWorldAPI merged commit 43f711a into main Oct 20, 2026
11 checks passed
AdaWorldAPI pushed a commit that referenced this pull request Oct 20, 2026
…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
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
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