Skip to content

D-RU-6 lab: arm A′ (walk_mask with a dirty-frontier skip) and the chain sweep - #1652

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

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

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

This is a lab probe; nothing in it is ready for production. D-RU-6 stays Queued/Lab, and A′ is a gather path, like A. The operator set the order of steps on EXO-50:

  1. Build A′ first.
  2. If C still beats A′ on long chains with oracle checks, sweep chain length, fan-out and the number of foci.
  3. Only attest the codebook if a convincing region survives the sweep.

What this adds

This PR adds crates/crepe-plan-probe/examples/walk_dirty.rs as a fourth arm. It compiles C, which compiles B and A, so all four arms run on the same graphs and are checked against the same oracles. Arm A itself is unchanged; walk_mask.rs, walk_tile.rs and walk_sparse.rs only gain pub(crate) on items the new arm reuses.

A′ is A's loop with two switches, and each can be measured on its own:

  • skip_clean: each delta plane keeps a bitmap of its non-zero rows. An adjacency bit whose delta row did not change costs nothing.
  • touched_only: only the rows the hop wrote are updated, and only rows that held a delta are cleared. The whole-buffer fill, andnot, any and or sweeps go away.

With both switches off, A′ is A. A test checks this: the tuples are equal, and so is the number of value-addressed row reads.

The example also has a --sweep mode. It builds a chain of len nodes and gives each node fan - 1 extra edges to a node up to 8 positions ahead.

Results

Times are release builds, medians of 5. All checked points match ascent and crepe.

Fixture A′both vs A, count-only C vs A′both, count-only C vs A′both, end to end
chain(230) 0.77× 0.81× 0.71–0.94×
chain(700), UNCHECKED 0.52× 0.57× 0.79–0.82×
edges(512) 0.55× 3.0× 0.92–1.09×
cyclic(300) 1.82× 2.0× 1.9–2.1×

At chain(700), A′ and C perform exactly the same number of row operations: 225,650. A′ still scans 14.6 M adjacency words, because it visits every row x. That loop order is the gap that remains.

Sweep, C vs A′ end to end:

  • Fan-out 1: C wins at 384 nodes (0.79×) and 512 nodes (0.95×), both oracle-checked, and at 768 nodes (0.81×, UNCHECKED). At 256 nodes the two are at parity (0.98×).
  • Fan-out 2 or 4: C loses on every checked point (1.05–1.21×) except one at 0.98×. This holds even where C wins count-only, because decoding dominates once the graph branches.

Recommendation: defer the codebook attestation. The only region C still wins is unbranched chains of at least 384 nodes. A pull-form A′, which walks the dirty rows through a reverse adjacency, would test whether loop order alone explains that last gap. It is listed as open, not built.

The full tables are in .claude/board/entries/2026-10-21-d-ru-6-dirty-frontier.md: all four switch settings, work counts, memory and the sweep.

Tests and disable runs

The new arm adds 8 tests, for 46 in the example including A, B and C's 38. Among them:

  • tuple-set equality for all four switch settings;
  • the switch-effect checks;
  • a check that an all-dirty frontier masks nothing.

Each disable run below was committed first and then reverted.

Disable Red
dirty bitmap never refreshed 7 tests
written rows not recorded 7 tests
skip mask read from the wrong length 7 tests
the "off" variant secretly skips 6 tests
length bound exclusive 3 tests
old delta rows not cleared the cleared-buffer check

The row-clear disable stayed green on the first try. A stale bit cannot change the answer, because it is already in walk and new &= !walk removes it. A test-only check that new is clear at the start of each iteration now catches it.

CI gains cargo test --example walk_dirty. The benchmark and the sweep are not run in CI.

There is no merge on green alone. Coordination happens on EXO-50.


Generated by Claude Code

…pdates

Two switches, each measurable on its own; both off is A's loop, asserted by
equal tuples and equal gather counts. A is unchanged; walk_mask, walk_tile
and walk_sparse gain only pub(crate).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
A missing row clear cannot change the answer (stale bits are already in
walk), so only this check sees it; disable-verified.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
A′ (walk_mask with a dirty-frontier skip) does not remove C's chain lead;
the sweep confines C's end-to-end win to unbranched chains of >= 384
nodes. Recommendation: defer the codebook attestation. D-RU-6 stays
Queued/Lab.

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: 5542d518-21a6-4a1d-93de-b29bfe461993
  • 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 07:26
@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-21T07:35:32.140269Z 705dcca 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 21, 2026

Copy link
Copy Markdown

Add Carrot credits or activate Agent usage billing to use Autofix

@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: 705dcca20a

ℹ️ 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_dirty.rs Outdated
Comment thread crates/crepe-plan-probe/examples/walk_dirty.rs Outdated
Comment thread .claude/board/entries/2026-10-21-d-ru-6-dirty-frontier.md Outdated
…rs; finer sweep (codex)

End to end for A and A′ now times the fixpoint without the counts, as B's and
C's e2e() do. chain_fan draws extra successors without replacement and the
sweep reports the distinct fan-out it built. The sweep adds 192, 230 and 320
nodes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
# Conflicts:
#	.claude/board/entries/README.md
Two sweep runs with distinct fan-out and like-for-like end-to-end timing.
C's end-to-end win over A' holds on unbranched chains from about 192
nodes, not 384 as first stated; branched cases mostly lose. Recommendation
unchanged: defer the codebook attestation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
@AdaWorldAPI
AdaWorldAPI merged commit 75d4d16 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