Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,22 @@ build, so the ruling additionally binds consolidation as a hard filter
(re-anchor or surgically re-run any finding citing rustynum/symbiont).
Deltalake removal ratified in the same exchange ("we don't need deltalake").

**Drift cleanup executed (same day, on the operator's "absolute no-go"):**
audit result — A1's research report: 0 citations (clean); the Java/Panama
arc: zero involvement (ndarray::simd enforced throughout); merged docs
carried exactly one live symbiont citation (the lotus audit §3 candidate
row, now ⊘-struck) + CLAUDE.md's two symbiont-as-binding-consumer lines
(now ⊘-annotated). Live-code drift found and FIXED:
`lance-graph-cognitive`'s `rustynum_accel` shim was name-only (zero
rustynum dependency — it delegated to `ndarray::hpc::bitwise`); renamed
`simd_accel` (module + file + 11 call sites) and rerouted through the
sanctioned `ndarray::simd::hamming_distance_raw` re-export. Default
compile green; the `wip` feature's pre-existing not-yet-compiling state
carries zero errors naming the rename. Historical provenance comments
("replacing rustynum as of 2026-03-22", ndarray's port-history docs) kept
— the no-go bans USE, not history. Board history entries citing symbiont
stay append-only, superseded by this entry.

**Same-day factual correction (operator-pointed, verified at source):** the
"no DF-54 deltalake exists" premise holds only for crates.io RELEASES
(deltalake-core <= 0.32.4 / DF ^53). delta-io/delta-rs **main** already pins
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -968,7 +968,7 @@ Architecture:

Dependency chain:
ladybug-rs ──► lance-graph-contract (traits)
in-tree ──► lance-graph-contract (planner / callcenter / smb-bridge / symbiont)
in-tree ──► lance-graph-contract (planner / callcenter / smb-bridge; symbiont ⊘ DEPRECATED 2026-08-18, operator no-go)
lance-graph──► ndarray (default dep, with fallback)
```

Expand Down Expand Up @@ -1230,7 +1230,7 @@ YAML card → 23D vector → ThinkingStyle(36) → FieldModulation(7D) → ScanP

```
WHO DEPENDS ON lance-graph-contract:
in-tree — planner, callcenter, smb-bridge, symbiont (the BINDING consumers)
in-tree — planner, callcenter, smb-bridge (the BINDING consumers; symbiont ⊘ DEPRECATED 2026-08-18, operator no-go — dormant excluded crate, never live surface)
ladybug-rs — Planner + CamPq + OrchestrationBridge
(crewai-rust / n8n-rs — EVICTED 2026-06-21, operator-directed; superseded by
ladybug-rs + the in-tree thinking-engine. NO LONGER binding consumers — the
Expand Down
42 changes: 0 additions & 42 deletions crates/lance-graph-cognitive/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/lance-graph-cognitive/src/core_full/fingerprint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ impl Fingerprint {
/// Hamming distance to another fingerprint
#[inline]
pub fn hamming(&self, other: &Fingerprint) -> u32 {
super::rustynum_accel::hamming_distance(self, other)
super::simd_accel::hamming_distance(self, other)
}

/// Similarity (0.0 - 1.0)
Expand Down
4 changes: 2 additions & 2 deletions crates/lance-graph-cognitive/src/core_full/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ mod fingerprint;
mod scent;
pub mod vsa;

pub mod rustynum_accel;
pub mod simd_accel;

pub use buffer::BufferPool;
pub use fingerprint::Fingerprint;
pub use scent::*;
pub use rustynum_accel::{HammingEngine, batch_hamming, hamming_distance, simd_level};
pub use simd_accel::{HammingEngine, batch_hamming, hamming_distance, simd_level};
pub use vsa::VsaOps;

/// Dense embedding vector
Expand Down
4 changes: 2 additions & 2 deletions crates/lance-graph-cognitive/src/core_full/scent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -521,8 +521,8 @@ fn timestamp() -> u64 {
.unwrap_or(0)
}

// NOTE: SIMD-optimized scent scan is handled via rustynum runtime dispatch.
// No compile-time SIMD gates needed — rustynum detects AVX-512/AVX2 at runtime.
// NOTE: SIMD-optimized scent scan is handled via ndarray::simd runtime dispatch.
// No compile-time SIMD gates needed — the ndarray polyfill detects AVX-512/AVX2 at runtime.

#[cfg(test)]
mod tests {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
//! ## Usage
//!
//! ```rust,ignore
//! use ladybug::core::rustynum_accel::*;
//! use ladybug::core::simd_accel::*;
//!
//! let fp = Fingerprint::from_content("hello");
//! let pc = fingerprint_popcount(&fp); // VPOPCNTDQ when available
Expand Down
12 changes: 6 additions & 6 deletions crates/lance-graph-cognitive/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,29 +86,29 @@ pub mod storage {
}

/// Compatibility module mirroring ladybug-rs `crate::core::*`.
/// Modules reference `crate::core::Fingerprint`, `crate::core::rustynum_accel::*`, etc.
/// Modules reference `crate::core::Fingerprint`, `crate::core::simd_accel::*`, etc.
pub mod core {
pub use super::Fingerprint;
pub use super::Embedding;
pub const DIM: usize = super::FINGERPRINT_BITS;
pub const DIM_U64: usize = super::FINGERPRINT_U64;

/// Compatibility shim for rustynum SIMD acceleration.
/// SIMD acceleration shim (renamed from the retired rustynum_accel name, 2026-08-18 operator no-go).
/// Maps to ndarray::hpc::bitwise.
pub mod rustynum_accel {
pub mod simd_accel {
pub fn hamming_distance(a: &[u8], b: &[u8]) -> u64 {
ndarray::hpc::bitwise::hamming_distance_raw(a, b)
ndarray::simd::hamming_distance_raw(a, b)
}
pub fn slice_hamming(a: &[u64], b: &[u64]) -> u64 {
let a_bytes: Vec<u8> = a.iter().flat_map(|w| w.to_le_bytes()).collect();
let b_bytes: Vec<u8> = b.iter().flat_map(|w| w.to_le_bytes()).collect();
ndarray::hpc::bitwise::hamming_distance_raw(&a_bytes, &b_bytes)
ndarray::simd::hamming_distance_raw(&a_bytes, &b_bytes)
}
pub fn batch_hamming(query: &[u8], database: &[u8], vec_len: usize) -> Vec<u64> {
let n = database.len() / vec_len;
(0..n).map(|i| {
let start = i * vec_len;
ndarray::hpc::bitwise::hamming_distance_raw(query, &database[start..start + vec_len])
ndarray::simd::hamming_distance_raw(query, &database[start..start + vec_len])
}).collect()
}
pub fn simd_level() -> &'static str { "ndarray" }
Expand Down
8 changes: 4 additions & 4 deletions crates/lance-graph-cognitive/src/search/hdr_cascade.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ const DEFAULT_INHIBIT: u32 = 5000;

/// Compute exact Hamming distance.
///
/// Uses runtime-dispatched AVX-512 VPOPCNTDQ via rustynum.
/// Uses runtime-dispatched AVX-512 VPOPCNTDQ via ndarray::simd.
#[inline]
pub fn hamming_distance(a: &[u64; WORDS], b: &[u64; WORDS]) -> u32 {
crate::core::rustynum_accel::slice_hamming(a, b) as u32
crate::core::simd_accel::slice_hamming(a, b) as u32
}

/// Compute 1-bit sketch: which chunks differ at all?
Expand Down Expand Up @@ -147,8 +147,8 @@ pub fn sketch_8bit_sum(sketch: &[u8; WORDS]) -> u32 {
sketch.iter().map(|&b| b as u32).sum()
}

// NOTE: All SIMD dispatch is handled by rustynum-core at runtime.
// The hamming_distance() function above delegates to rustynum_accel::slice_hamming()
// NOTE: All SIMD dispatch is handled by ndarray::simd at runtime.
// The hamming_distance() function above delegates to simd_accel::slice_hamming()
// which uses AVX-512 VPOPCNTDQ -> AVX2 Harley-Seal -> scalar POPCNT.
// No compile-time SIMD gates needed.

Expand Down
6 changes: 3 additions & 3 deletions crates/lance-graph-cognitive/src/spo/gestalt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,9 @@ pub fn detect_bundling(
gate: &ndarray::hpc::kernels::SigmaGate,
) -> Option<(BundlingType, u32, u32, u32)> {
// Per-plane Hamming distance
let s_dist = crate::core::rustynum_accel::slice_hamming(center_a_s, center_b_s) as u32;
let p_dist = crate::core::rustynum_accel::slice_hamming(center_a_p, center_b_p) as u32;
let o_dist = crate::core::rustynum_accel::slice_hamming(center_a_o, center_b_o) as u32;
let s_dist = crate::core::simd_accel::slice_hamming(center_a_s, center_b_s) as u32;
let p_dist = crate::core::simd_accel::slice_hamming(center_a_p, center_b_p) as u32;
let o_dist = crate::core::simd_accel::slice_hamming(center_a_o, center_b_o) as u32;

// "Close" = Evidence level or better (2σ below noise)
let close = gate.evidence;
Expand Down
2 changes: 1 addition & 1 deletion docs/lotus/LOTUS-FRONTIER-AUDIT.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ with it.
| `hhtl::NiblePath`, `FAN_OUT=16` | lance-graph core | Production 16-ary router; the doctrine already says *"HHTL is the deterministic PLACE (16-ary); helix is the RESIDUE"* |
| `CurveRuler` stride-4-over-17 | helix | **The shipped comma** — triple-falsified positive (DFT anti-aliasing ev7b; `comma_quorum` N_eff 11.00/12 vs 1.00 without; `comma_awareness`). D-QUANTGATE names it the mandatory quantized-layer phase generator |
| `basin_placement_learning` 75.8% | probe | **Overclaim flag (INFERENCE):** the measured 75.8% is a BINARY split, not 4-ary — `E-BASIN-IS-A-NODE` cites it wider than the measurement supports; re-grade before reuse |
| `symbiont::domino::morton4` | symbiont | Real 4×4 bijective Morton, but SIMD-lane-scoped; not a placement authority |
| `symbiont::domino::morton4` | symbiont | ⊘ STRUCK 2026-08-18 (operator no-go: symbiont DEPRECATED per the #879/#911/#912/#913 arc) — was: real 4×4 bijective Morton, SIMD-lane-scoped, not a placement authority. Not a candidate; kept as census history only |
| thinking-engine `domino.rs` | thinking-engine | FALSE LEAD — name collision, unrelated mechanism |
| Feistel / XorShift mixers | — | ABSENT from the workspace; a comma design needing one imports new code |

Expand Down
Loading