From 979692c81cc90d8b804140965ac3bc2ceabb9467 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 25 Sep 2026 00:21:02 +0000 Subject: [PATCH] lgj-abi: compile against current lance-graph main; pin test tile explicitly lance-graph main added ExecError::ExtentOutOfRange and ExtentUnsupported (raised only by execute_extent over a partial extent). This file always executes the whole population, so both join the arms that would be a bug here. Without them lgj-abi does not compile against lance-graph main. group_sum's tiled-vs-reference test now uses an explicit 8-word tile instead of tile_words_for, so the default tile (a performance setting, 256 words after lance-graph #1281) cannot decide whether the fixture spans several tiles. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01GXUahz73MZxtxWcfpHp9dG --- native/lgj-abi/src/exports.rs | 7 ++++++- native/lgj-abi/src/exports/tests/group_sum.rs | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/native/lgj-abi/src/exports.rs b/native/lgj-abi/src/exports.rs index 15558d5..f02e961 100644 --- a/native/lgj-abi/src/exports.rs +++ b/native/lgj-abi/src/exports.rs @@ -1756,7 +1756,12 @@ fn exec_error_to_status(e: ExecError) -> i32 { | ExecError::BlendNeedsOut | ExecError::TerminalNeedsOut { .. } | ExecError::GateAliasesDst { .. } - | ExecError::RangeOutOfBounds { .. } => LGJ_ERR_ALLOCATION_FAILED, + | ExecError::RangeOutOfBounds { .. } + // Raised only by `execute_extent` over a PARTIAL extent. Every call in + // this file executes the whole population, so reaching either would + // be a bug here, exactly like the arms above. + | ExecError::ExtentOutOfRange { .. } + | ExecError::ExtentUnsupported { .. } => LGJ_ERR_ALLOCATION_FAILED, } } diff --git a/native/lgj-abi/src/exports/tests/group_sum.rs b/native/lgj-abi/src/exports/tests/group_sum.rs index c322b37..51a21a3 100644 --- a/native/lgj-abi/src/exports/tests/group_sum.rs +++ b/native/lgj-abi/src/exports/tests/group_sum.rs @@ -256,7 +256,10 @@ fn the_tiled_executor_and_the_scalar_reference_agree_on_the_lowered_program() { for key in keys { let program = plan_lower::lower_group_sum(&ops, n as u32, key, LANE_VALUES as u16).unwrap(); - let tile = tile_words_for(n as usize); + // An explicit narrow tile, not `tile_words_for`: the default tile + // is a performance setting (256 words since lance-graph #1281) and + // must not decide whether this fixture spans several tiles. + let tile = (n.div_ceil(64) as usize).min(8); let need = scratch_words_for(tile, plan_lower::SLOTS as usize).unwrap(); let mut buf = vec![0u64; need]; let mut scratch = Scratch::over(&mut buf, tile, plan_lower::SLOTS as usize).unwrap();