diff --git a/.claude/board/entries/2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md b/.claude/board/entries/2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md index ea83f36a3..7632cdcdf 100644 --- a/.claude/board/entries/2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md +++ b/.claude/board/entries/2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md @@ -1,4 +1,4 @@ -# D-RMAP-DIR-1 round 2: when 256-slot focus geometry beats compiled closure (2026-10-20) +# D-RMAP-DIR-1-R2: round 2, when 256-slot focus geometry beats compiled closure (2026-10-20) **Status:** MEASURED, lab only; nothing promoted. **Basis:** `crates/dir-rmap-probe` (`tests/equivalence.rs` 11/11; `examples/bench.rs`, 4 runs at 8,000 users plus 1 at 65,000). Plan `d-rmap-dir-1-membership-closure-focus-v1.md` §9. diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index bbc63a231..153e4e244 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -39,7 +39,7 @@ exactly one of them, never both. | 2026-10-20 | `D-TGA-SLOT-AXIS` | thoughts are 64 slots, and the slot number is CE64's witness pointer | [2026-10-20-d-tga-slot-axis-witness-pointer.md](2026-10-20-d-tga-slot-axis-witness-pointer.md) | | 2026-10-20 | `D-RPR` | | [2026-10-20-d-rpr-consolidation-1624.md](2026-10-20-d-rpr-consolidation-1624.md) | | 2026-10-20 | `D-RPR-1` | | [2026-10-20-d-rpr-1-handoff-lab-demo.md](2026-10-20-d-rpr-1-handoff-lab-demo.md) | -| 2026-10-20 | `D-RMAP-DIR-1` | | [2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md](2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md) | +| 2026-10-20 | `D-RMAP-DIR-1-R2` | | [2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md](2026-10-20-d-rmap-dir-1-round-2-focus-geometry.md) | | 2026-10-20 | `D-RMAP-DIR-1` | | [2026-10-20-d-rmap-dir-1-membership-closure-focus.md](2026-10-20-d-rmap-dir-1-membership-closure-focus.md) | | 2026-10-20 | `D-RMAP-2` | | [2026-10-20-d-rmap-2-tile-gemm-cell.md](2026-10-20-d-rmap-2-tile-gemm-cell.md) | | 2026-10-20 | `D-RMAP-2-AMX` | | [2026-10-20-d-rmap-2-amx-tier.md](2026-10-20-d-rmap-2-amx-tier.md) | diff --git a/.claude/plans/d-rmap-dir-1-membership-closure-focus-v1.md b/.claude/plans/d-rmap-dir-1-membership-closure-focus-v1.md index 86537b3d9..bf83cc976 100644 --- a/.claude/plans/d-rmap-dir-1-membership-closure-focus-v1.md +++ b/.claude/plans/d-rmap-dir-1-membership-closure-focus-v1.md @@ -245,6 +245,13 @@ Per evaluation, warm, ns, 8,000 users: - Composite membership is a cheap question. F's gain over B+ stays at 1.7–2.9× across every focus size, because the number of questions is at most 256. - Conjunctions multiply questions as the focus grows. F gains 2.4–5.4× up to 64 groups, then the question loop dominates, and past L1 the mask form loses (§9.3). +**At 65,000 users** (one run; the same fixture shape, so more distinct pairs per focus) the pattern holds and sharpens: + +- 64 groups (956 conjunctions): F is 3.3× faster than B+ (391 vs 1,291 ns). +- 256 groups (8,160 conjunctions, 255 KiB of masks): F's mask form is 2.1× slower than B+ (23.9 vs 11.1 µs); the slot-bit form is 1.2× faster (9.1 µs). +- Composite membership: F is 1.8–2.8× faster at every focus size. +- Sweep at 1,495 groups: B+ 218 ns, F 70 ns, F+users 57 ns. The F+users table here is 2 MiB, at the edge of L2, and still costs nothing extra per evaluation. + ### 9.5 Constraints 3 and 4: preparation accounting and amortization **Preparation at 64 focus groups, 8,000 users** (W5a, composite fixture). Each phase alone; allocations are counted by a global counting allocator.