Skip to content

Commit eeddfe9

Browse files
committed
B-META R2 fixes: reconcile slice() RoleKeySlice destructures across workers
B-fix-slices changed slice() return type from (usize, usize) tuple to RoleKeySlice struct. Subsequent workers (B-fix-triangle, B-fix-parser via trajectory.rs tests, markov_bundle tests) used the old tuple destructure. This commit threads the new struct fields (slice.start, slice.stop) through all consumers. Tests: 289 pass on lance-graph-contract; 66 pass on deepnsm; 8 pass on the integration_role_alignment test (THE test that should have blocked PR #279).
1 parent 3e9d25a commit eeddfe9

2 files changed

Lines changed: 20 additions & 12 deletions

File tree

crates/deepnsm/src/markov_bundle.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,8 @@ mod tests {
259259
fn bundle_does_not_rotate_subject_dims_outside_subject_slice() {
260260
// SUBJECT-only window: every sentence has a single SUBJECT token
261261
// whose content_fp is all 1.0 across the SUBJECT slice.
262-
let subject_len = GrammaticalRole::Subject.slice().1
263-
- GrammaticalRole::Subject.slice().0;
262+
let subject_len = GrammaticalRole::Subject.slice().stop
263+
- GrammaticalRole::Subject.slice().start;
264264
let sent = WindowedSentence {
265265
tokens: vec![TokenWithRole {
266266
content_fp: vec![1.0; subject_len],
@@ -269,7 +269,9 @@ mod tests {
269269
};
270270
let traj = fill_and_bundle(Kernel::Uniform, 5, sent);
271271

272-
let (s_start, s_stop) = GrammaticalRole::Subject.slice();
272+
let _slice = GrammaticalRole::Subject.slice();
273+
let s_start = _slice.start;
274+
let s_stop = _slice.stop;
273275
// SUBJECT slice should be non-zero (positive after normalization).
274276
let subject_sum: f32 =
275277
traj.fingerprint[s_start..s_stop].iter().sum();
@@ -296,8 +298,8 @@ mod tests {
296298
/// way symmetric kernels can't equalize.
297299
#[test]
298300
fn mexican_hat_bundle_differs_from_uniform_bundle() {
299-
let subject_len = GrammaticalRole::Subject.slice().1
300-
- GrammaticalRole::Subject.slice().0;
301+
let subject_len = GrammaticalRole::Subject.slice().stop
302+
- GrammaticalRole::Subject.slice().start;
301303
let radius = 5u32;
302304
let cap = (2 * radius + 1) as usize;
303305
// Single outlier at position 1 (delta = -4). Uniform weights this
@@ -338,8 +340,8 @@ mod tests {
338340
/// land in a loose [0.5, 1.5] band on a controlled SUBJECT-only window.
339341
#[test]
340342
fn bundle_l2_norm_invariant_to_kernel() {
341-
let subject_len = GrammaticalRole::Subject.slice().1
342-
- GrammaticalRole::Subject.slice().0;
343+
let subject_len = GrammaticalRole::Subject.slice().stop
344+
- GrammaticalRole::Subject.slice().start;
343345
let sent = WindowedSentence {
344346
tokens: vec![TokenWithRole {
345347
content_fp: vec![1.0; subject_len],

crates/deepnsm/src/trajectory.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ pub struct Trajectory {
1111
impl Trajectory {
1212
/// Slice the role band out of the trajectory's fingerprint.
1313
pub fn role_bundle(&self, role: GrammaticalRole) -> Vec<f32> {
14-
let (start, stop) = role.slice();
15-
self.role_bundle_range(start, stop)
14+
let slice = role.slice();
15+
self.role_bundle_range(slice.start, slice.stop)
1616
}
1717

1818
/// Lower-level slice helper retained for test fixtures + callers
@@ -117,7 +117,9 @@ mod tests {
117117
radius: 5,
118118
};
119119
let bundle = t.role_bundle(GrammaticalRole::Subject);
120-
let (start, stop) = GrammaticalRole::Subject.slice();
120+
let _slice = GrammaticalRole::Subject.slice();
121+
let start = _slice.start;
122+
let stop = _slice.stop;
121123
assert_eq!(bundle.len(), stop - start);
122124
}
123125

@@ -134,7 +136,9 @@ mod tests {
134136
fn role_candidates_filters_by_threshold() {
135137
// Codebook of 5 with similarities [0.9, 0.8, 0.4, 0.3, 0.1];
136138
// threshold 0.5 → only the first two pass.
137-
let (start, stop) = GrammaticalRole::Subject.slice();
139+
let _slice = GrammaticalRole::Subject.slice();
140+
let start = _slice.start;
141+
let stop = _slice.stop;
138142
let n = stop - start;
139143
let mut fingerprint = vec![0.0_f32; 16_384];
140144
for v in fingerprint[start..stop].iter_mut() {
@@ -181,7 +185,9 @@ mod tests {
181185
fn role_candidates_top_k_truncation() {
182186
// Codebook of 10 entries all above threshold — top_k=3 must
183187
// return exactly 3.
184-
let (start, stop) = GrammaticalRole::Subject.slice();
188+
let _slice = GrammaticalRole::Subject.slice();
189+
let start = _slice.start;
190+
let stop = _slice.stop;
185191
let n = stop - start;
186192
let mut fingerprint = vec![0.0_f32; 16_384];
187193
for v in fingerprint[start..stop].iter_mut() {

0 commit comments

Comments
 (0)