Repository navigation
crepe-plan-probe: walk_mask tuple oracle, UNCHECKED above oracle size, CI fixtures - #1642
Conversation
…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
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
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. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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())); |
There was a problem hiding this comment.
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 👍 / 👎.
…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
Follow-up to #1637. Lab only; nothing in a production path changes.
What changes
Walk(x, z, len)andNoWalk(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.ORACLE_MAX_N(512) neither oracle runs, and the table printsUNCHECKED. Before, it compared the mask result with itself at n = 1024.#[test]fixtures live in the example. The workflow now runscargo test --example walk_mask. The release benchmark is still not run in CI.MAX_PATH_LEN, both inclusive and exceeded;0..nthat are not nodes;The table also reports:
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)
(l+1) % 51. Every count stays the same, the tuple set does not.MAX_PATH_LENexclusivemax_path_len_is_inclusiveword_boundariesThe first row is the case a count-only check cannot see.
Benchmark (release, 4 cores, load ≈ 1)
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