Repository navigation
D-DR-FOLD lab: A/B/C comparison — gated Arm L, amortized binding, vector×tile - #1945
Conversation
…ctor×tile Lab-only probe (own workspace) over one coordinate space bound by the existing dt64 LocalMap/MapTable. 43/43 checks: oracle parity for every root on ordered and shuffled layouts, deletions with the binding reused, stale/bypass presence refused, duplicate paths (A refuses, C equals the set oracle), scope change refused, disables red. Sweep: vector×tile (ndarray::simd, outside mask-risc) beats candidate- gated Arm L in 54/54 cells; the cause is evaluation direction plus A's whole-lane term, measured by exact load/OR counts. Falsifier: A wins only with a sparse T under dense R/S and a whole-table candidate range. Split-lifetime amortization reaches near-hot cost at ~256 queries per generation. No production change; mask-risc unchanged; no storage I/O. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a1d856578f
ℹ️ 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".
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. |
The b frontier's touched list was cleared before the sum, so C_tiles covered only the c and d frontiers. Ordered 64-root f=16 90%: 36 -> 49 tiles; shuffled: 1,183 -> 1,196. Timings, answers and the 43/43 checks are unchanged (the counter is not read by the fold). Report figures updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
Lab only. No production change. This PR adds the benchmark that was held back from #1941 (the map, docs only, now merged). It is one commit, cherry-picked from fresh
main.Files, all under
.claude/probes/2026-11-03-d-dr-fold/:REPORT-BENCH.mdbench/: its own[workspace], so the root workspace never builds it.mask-risc, dt64 and ndarray are used unchanged. EXO-140 and EXO-46 are unchanged. No storage I/O is measured.
Arms
All three arms use one coordinate space, bound by the existing
dt64::dr::{LocalMap, MapTable}. Every arm answers the same query: for a roota, count the distinctdwith∃b,c. R(a,b) ∧ S(b,c) ∧ T(c,d).Gathers, ending inCount.ndarray::simdwords (mask_or_assign,popcount_batch_u64). No composed relation is formed or stored.Results
Checks: 43 passed, 0 failed. Re-run on current
main(71af59798) before opening.NotFunctional); C keeps set semantics (64 distinct vs 85 as a bag).Gather, and C with the T hop skipped, both give wrong answers, as required.Sweep, 54 cells: C beats A in every cell, by 2.6× to 490×.
a.Falsifier: A wins (0.67–0.85×) only with dense R and S over a sparse T (about 1 % present) and a whole-table candidate range. With 16 roots, A is behind again (4.1×).
B: retiring the pointers on every presence change is FAILED-GATE (≥ 1 ms at 37k rows). The split policy reaches near-hot cost at about 256 queries per generation.
Noise: timings moved a median of 45 % between runs, so the absolute µs values are indicative only. The A/C ordering and the exact operation counts were identical across runs, and only those are relied on.
Recommendation
From the report:
No merge requested.
Generated by Claude Code