Skip to content

v1.0.5 — conflict edges, opt-in frontier, edge-type priors, cross-process determinism

Latest

Choose a tag to compare

@maeddesg maeddesg released this 20 Jun 17:36

v1.0.5 — conflict edges, opt-in frontier retrieval, edge-type priors, and cross-process recall determinism

This release extends the opt-in memory subsystem and moves it onto SQLiteGraph 3.3.1. Everything is additive and opt-in: default recall stays byte-identical, the retrieval frontier is off by default, and the new conflict edge never changes ranking. Decode is untouched.

Dependency

  • sqlitegraph bumped to 3.3.1 (maeddesg fork @ 80a3168, from oldnordic 3.2.5). 3.3.1 honors multilayer_deterministic_seed (the HNSW level distributor no longer falls back to from_entropy()) and re-elects the HNSW entry point on delete_vector. --features memory now requires Rust 1.89; the lean default build stays on 1.85.

New (all opt-in / additive)

  • CONTRADICTS edge — a third, symmetric edge flagging two notes as in conflict (/contradict, /uncontradict; POST /memory/contradict · /uncontradict). Awareness only: no suppression, no winner. The conflict shows in --explain (⚠ conflicts with #X + conflict pairs); you resolve it with the existing /supersede. Default recall is byte-identical.
  • Opt-in frontier retrieval (--frontier, default OFF) — reserves a few slots (VF_FRONTIER_SLOTS, default 2) for a top hit's DERIVES_FROM-linked evidence (one hop), pulling a supporting premise up next to it; --explain labels seed vs. frontier picks. Unset → pure top-k, byte-identical to before.
  • Edge-type priors — edge types carry categorical roles (no scalar weights): DERIVES_FROM pulls, CONTRADICTS withholds. A frontier candidate that contradicts a seed is held back (the slot goes to the next clean candidate), shown transparently in --explain. The frontier never amplifies evidence a more relevant hit disputes.
  • Cross-process recall determinism (VF_HNSW_SEED) — the HNSW seed is pinned (honored on SG 3.3.1), so two separate processes that build the same store recall byte-identically. Guarded by a new committed integration test that spawns two processes and diffs their recall (ids + bit-exact scores).

Validation

cargo build --features memory 0 new warnings; lib 306 (lean) / 308 (memory); tests/memory.rs 29 (+1 ignored subprocess probe); vf-clide (0.3.4) 115; cargo tree carries no SQLiteGraph/fastembed/ort/rusqlite in the lean build or the client; recall byte-identical with and without edges (tested). Engine 1.0.5, vf-clide 0.3.4.