Sibling crate ships with HNSW-backed semantic search via SimilaritySearchProvider trait, atomic disk persistence, background indexing, Python bindings, and full documentation.
Adds fossic.similarity.HnswProvider and SimilarityQuery to the Python package, exposing the full HNSW index API including background save scheduling and stream-pattern filtering.
Adds AtomicBool dirty/save_pending fields, storm-prevention via optimistic stamp, and Weak<HnswProvider> drop semantics for background HNSW persistence scheduling.
HnswProvider can now save its HNSW vector index and event-ID mappings atomically to disk and reload them on construction, with corrupt-file recovery and system event emission.
New reference document covering seven canonical patterns for authors of sibling crates and substrate extensions, source-verified against v1.7.1.
HnswProvider fully implemented with stream-pattern filtering, fudge-factor candidate expansion, and 11 integration tests covering all edge cases.
fossic-similarity-hnsw ships as a new sibling crate with HnswConfig, HnswError, and an HnswProvider skeleton implementing the actual SimilaritySearchProvider trait; BackgroundExecutor, TaskKind::Custom, and SystemStreamWriter are now exported from fossic for use by substrate extensions.
All four binding surfaces (Rust, Python, Node.js, Tauri IPC) now have documented bounded-read APIs with cursor resumption, streaming iterators, and SamplingMode; FOSSIC_V1_SPEC updated with canonical type definitions and a Phase 1–5 roadmap.
fossic-tauri v1.1.8 adds 7 bounded IPC commands covering range, correlation, causation, and aggregate reads — each with cursor-resumption support; streaming deferred to v1.2.x.
fossic-node v1.1.7 exposes bounded read methods and streaming async iterables for all three read modes, with TruncationCursor, SamplingMode, and defaultMaxResults/defaultMaxBytes in OpenOptions from the start.
Two new system event types (ProjectRegistered, RelayHeartbeat) emitted to _fossic/system via a new registry.rs module. Substrate-side emit only — consumer coordination (fossic-coordinator) is future work. Python relay.py updated with startup emit and daemon heartbeat thread.
fossic-py gains ReadOutcome (tagged-union), TruncationCursor (opaque), SamplingMode (static constructors), bounded read methods, and three streaming iterator types — full parity with the Rust bounded read and iterator surface from v1.1.3–v1.1.5.
SnapshotPolicy::EveryNSeconds is now live — read_state schedules a background snapshot via the BackgroundExecutor during the next quiescent window; auto_gc_orphans now also schedules an hourly recurring GC task at store open.
Three streaming iterators ship for read_range, read_by_correlation, and walk_causation — each fetches 100 events per internal batch, releases the pool connection before yielding, and is fused so next() after None is always safe.
aggregate_bounded folds events against a budget, clones the aggregator at the cut point to finalize a partial result, and returns ReadOutcome<A::Output> with cursor: None — no resume in v1.1, deferred to v1.2.x.
OpenOptions::auto_gc_orphans (default false) triggers gc_orphaned_snapshots at last-Store-clone drop time, purging snapshots for reducers no longer registered; Arc::strong_count guards against intermediate-clone false-fires.
walk_causation_bounded ships with three sampling modes and level-boundary budget cuts; Rust-side BFS loop replaces recursive CTE to enable natural truncation points without materialising the full result.