Skip to content

v0.15.4 — Apache-2.0

Choose a tag to compare

@spranab spranab released this 19 Aug 01:07
· 53 commits to main since this release

YantrikDB is now Apache-2.0. AGPL was buying protection against a hosted-service competitor while costing every commercial evaluation that ends at legal review. The moat is the ecosystem — engine, server, MCP, plugin, packs — not the licence.

Apache-2.0 rather than MIT because a patent has been filed: §3 grants patent rights explicitly and its retaliation clause terminates the licence of anyone who sues over patents. Using this implementation carries no patent exposure; an independent reimplementation of the methods is outside that grant.

Releases through v0.15.3 remain available under AGPL-3.0.

Also in this release

A Python embedder can no longer silently open a store it did not build (#117, #138). The engine already refused a same-dimension, different-digest swap in its own set_embedder, but Python embedders never reached that path — both the constructor and the pyo3 set_embedder stored the object on the wrapper, so every query and write was encoded by an object the engine had never seen.

Measured on 0.15.3 before the fix: open accepted, recall returned similarity 0.595 against vectors built by a different model, writes accepted. That number is the point — cosine distance between two unrelated spaces still looks like a weak-but-real match, so nothing in the response told the caller the answer was meaningless.

Both surfaces are now gated. An embedder declares identity via a fingerprint or digest attribute; a mismatch or an undeclared identity is refused when the store has recorded provenance. allow_unverified_embedder=True is the documented escape hatch, and a store with no recorded identity is not gated — BYO-embedder users keep working.

Upgrading

No migration. If you attach your own embedder to an existing store, either set .fingerprint to the store's recorded digest, call reembed(), or pass allow_unverified_embedder=True.