From e60f2fffe5b7c71cfa9185c1ed76d6cc1d183df3 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 8 Oct 2026 08:59:42 +0000 Subject: [PATCH 1/2] planner: J follows the strict CE64 ISA from #1407 forward() now returns Result and refuses non-executable codes, so the fixture draws only the five executable mantissas and unwraps the result. Re-verified: the energy-3-bit disable still turns J red. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R --- .claude/board/entries/README.md | 2 +- .../tests/moore_tenant_isa_equivalence.rs | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md index b3c7f5359..4d72ca7c0 100644 --- a/.claude/board/entries/README.md +++ b/.claude/board/entries/README.md @@ -25,7 +25,7 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately opposite directions; the stranding this convention prevents shows up in exactly one of them, never both. -269 entries, 2026-08-06 .. 2026-10-08. +270 entries, 2026-08-06 .. 2026-10-08. | date | entry id | finding | file | |---|---|---|---| diff --git a/crates/lance-graph-planner/tests/moore_tenant_isa_equivalence.rs b/crates/lance-graph-planner/tests/moore_tenant_isa_equivalence.rs index ac3061352..d64a325ac 100644 --- a/crates/lance-graph-planner/tests/moore_tenant_isa_equivalence.rs +++ b/crates/lance-graph-planner/tests/moore_tenant_isa_equivalence.rs @@ -28,8 +28,15 @@ impl Rng { } } +const MANTISSA: u64 = 0xF << 46; + +/// The codes the CE64 ISA executes (Ded +1, Ind +2, Abd -1, Rev +4, Syn +5) +/// as raw 4-bit mantissa nibbles; `forward` refuses every other code. +const EXECUTABLE: [u64; 5] = [0x1, 0x2, 0xF, 0x4, 0x5]; + fn canonical(r: &mut Rng, w: u64) -> u64 { - (r.next() & !W & !EPI5) | (w << 53) | ((r.next() % 24) << 59) + let code = EXECUTABLE[(r.next() % 5) as usize]; + (r.next() & !W & !EPI5 & !MANTISSA) | (w << 53) | ((r.next() % 24) << 59) | (code << 46) } fn tables() -> [Box<[u8; 256 * 256]>; 3] { @@ -53,8 +60,12 @@ fn ops(x: u64, y: u64, t: &[Box<[u8; 256 * 256]>; 3]) -> [u64; 5] { let mut ly = y; ly.learn(x, 0); [ - x.forward(y, &t[0], &t[1], &t[2]).0, - y.forward(x, &t[0], &t[1], &t[2]).0, + x.forward(y, &t[0], &t[1], &t[2]) + .expect("executable code") + .0, + y.forward(x, &t[0], &t[1], &t[2]) + .expect("executable code") + .0, lx.0, ly.0, x.syllogize(y).expect("chain figure").conclusion.0, From c869458d9c7262a8f7594fb032139ad56c6a2c93 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 8 Oct 2026 08:59:54 +0000 Subject: [PATCH 2/2] board: correct moore_tenant test count; J now follows #1407 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EFw2WdKr1oxvaKCJC2ua2R --- .../board/entries/2026-10-08-hhtl-nars-moore-value-tenants.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.claude/board/entries/2026-10-08-hhtl-nars-moore-value-tenants.md b/.claude/board/entries/2026-10-08-hhtl-nars-moore-value-tenants.md index 6bbfb9ba0..7fc6c17b2 100644 --- a/.claude/board/entries/2026-10-08-hhtl-nars-moore-value-tenants.md +++ b/.claude/board/entries/2026-10-08-hhtl-nars-moore-value-tenants.md @@ -40,7 +40,7 @@ goes through `ValueTenant::value_offset()`, no literal offset. ## Tests (A–L) -`moore_tenant.rs` (12 tests: A, B, C, D, E, G ×2, H, I, K, L); +`moore_tenant.rs` (11 tests: A, B, C, D, E, G ×2, H, I, K, L); `cognitive-shader-driver/tests/moore_palette_pairs_lut.rs` (F); `lance-graph-planner/tests/moore_tenant_isa_equivalence.rs` (J, 2 tests: 256 tenants × 8 lanes × 5 ops, 0 divergences on every field except the sign @@ -68,5 +68,3 @@ Disable runs, each red then restored: cannot yet gate a consumer on them the way `bind_register128` does. - No production writer or reader. The production Simpson detector still takes bare edges and cannot refuse a Moore direction (pinned in #1406). -- J uses `forward` as it is on `main`; #1407 (unmerged) changes it to return - `Result`, and J follows when that lands.