v0.3.0¶
Release Date: 2026-08-24
Highlights¶
- Durable SQLite/Ent-backed implementation of
consolidate.Store, so signals and root causes survive across process runs - sqlite-vec similarity search (
NearestRootCauses) over persisted root cause embeddings, pure Go with no cgo - Roadmap scoped to the full signals → clustering → proposed roadmap items vision across six new phases
Added¶
Persistent Store¶
store/sqlitepackage:Signal,RootCause, andSignalRootCauseLinkEnt schemas, with embeddings excluded from the relational tables and stored separately in sqlite-vecvec0tablessqlite.Storeimplementingconsolidate.Store(SaveRootCause,GetRootCause,ListRootCauses,LinkSignal,GetLinkedSignals), plusSaveSignal/GetSignalfor full signal persistencesqlite.Store.NearestRootCausesfor embedding similarity search via sqlite-vecvec0KNN queries, with configurableDistanceCosine(default) orDistanceL2metricssqlite.Open(dbPath string, opts ...Option)withWithEmbeddingDimension(required) andWithDistanceMetricoptions; safe to call repeatedly against an existing, populated database file- Signal↔RootCause links use a dedicated join table rather than a
root_cause_idcolumn onSignal, sinceLinkSignalcan be called beforeSaveSignalis ever called for that signal — a column would silently no-op the link - Ent row writes and vec0 embedding writes are sequenced (row first) rather than sharing a transaction, so a partial failure is safe to repair via a retried, idempotent
Save*call
Tests¶
- Table-driven SQLite store tests against real temp database files (no mocking): round-trip save/get for signals and root causes,
ListRootCausesfilter behavior,LinkSignal/GetLinkedSignalsincluding reattachment, fingerprint-based upsert idempotency, schema-recreate-is-safe on reopen, andNearestRootCausesKNN ordering/topK correctness
Documentation¶
- Added Storage guide covering
store/sqliteusage, wiring intoconsolidate.Pipeline, and similarity search - Marked Phase 6 (durable signal store) complete; added Phases 7-12 scoping the remaining gaps to the full signals → clustering → proposed roadmap items vision: proposed opportunity bridge into
omniroadmap(Phase 7, in progress in a downstream repo), additional ticketing sources, incremental attach via similarity search, rubric-driven RICE/MoSCoW scoring, opportunity promotion to real items, and agentic code-analysis fix synthesis - Added an Ent codegen convention to
CLAUDE.mdfor regeneratingstore/sqlite/ent
Dependencies¶
- Added
entgo.io/entandmodernc.org/sqlite(withmodernc.org/sqlite/vec) for the SQLite/Ent store — both pure Go, no cgo required - Bumped
github.com/santhosh-tekuri/jsonschema/v6from 6.0.2 to 6.0.3
Breaking Changes¶
None. store/sqlite is a new, additive package; existing providers, metrics, and consolidate APIs are unchanged.
Installation¶
Migration Guide¶
From v0.2.0¶
No code changes are required for existing users of omnisignal.Provider, metrics, or consolidate without a store. To adopt durable persistence:
- Open a store:
st, err := sqlite.Open("omnisignal.db", sqlite.WithEmbeddingDimension(n)), wherenmatches your embedder's output vector length. - Pass it to the pipeline:
consolidate.NewPipeline(consolidate.WithStore(st), ...). - Call
st.Close()when done;st.NearestRootCauses(ctx, embedding, topK)is available for corpus-scale similarity search independent of the pipeline.
Full Changelog¶
See CHANGELOG.md for the complete list of changes.