Skip to content

v0.2.0

Choose a tag to compare

@katsut katsut released this 30 Jul 03:36
· 11 commits to main since this release
447a5bb

Temporal reads grew up in this release: full valid-time history for many-edges, interval-valued answers ("when was", not just "as of"), live-maintained rule verdicts, bounded cold starts via changelog compaction, and a vector index that notices when its quantizers stop fitting the data.

Since v0.1.1:

  • Valid time for many-cardinality elements — each element of a many-predicate carries its own valid-time interval; close ends one element's interval (history stays sliceable), and point / expand accept valid_at for as-of reads over both cardinalities. Late-arriving values cannot resurrect an ended element. (D23)
  • timeline op (#203) — the interval form of as-of: the full valid-time timeline of one predicate, or of a value derived through a chain of one-predicates ({"op":"timeline","subject":1,"hops":["member-of","manager-of"]} → sorted {value, valid_from, valid_to} segments). Agrees with the point-wise valid_at composition at every instant, by construction. Also an MCP tool.
  • Changelog compaction (#175) — POST /compact persists the full fold state as a snapshot and truncates the covered WAL (old prefix archived). Cold start becomes snapshot-load + tail replay; as-of reads keep answering across the boundary, byte-identically. Measured on a live database: WAL 7.77 MB → 21 B. (D24)
  • Conformance rule expressiveness (#204) — distinct_from: a must-differ derived path (a self-approval ban is one line); condition equals now accepts the documented object forms ({"node": N}, …), so rules can be scoped to a subgraph anchor.
  • Incremental conformance maintenance (#202) — conformance_watch keeps a stored rule's verdicts current in O(touched) per write via support-set tracking (one upstream write re-judges exactly the subjects whose derived paths run through it); conformance_changes returns old→new verdict diffs behind a cursor. Property-tested equal to full re-evaluation after every event; measured 106×–1,812× cheaper than per-poll re-evaluation at 1K–100K subjects. (D26)
  • Vector index drift detection (#200) — training records a quantizer-fit baseline and every add updates the live fit; rebuilds reuse the trained quantizers (skipping k-means) until the drift ratio or corpus growth says otherwise, and training samples now span the whole corpus instead of the oldest prefix. /stats exposes the fit numbers. (D25)
  • Container images carry OCI labels (#193); Docker quickstart leads with the published image.

Details and honest limits: docs/DECISIONS.md D23–D26. API shapes: SPEC.md.

Install: cargo install stromadb · docker run -p 7687:7687 ghcr.io/katsut/stromadb:latest