Skip to content

YantrikDB

v0.7.10 Bugfix

This release fixes issues for SREs watching stability and regressions.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agent-memory ai-agents anthropic claude-code cognitive-memory database
+12 more
embeddings hnsw knowledge-graph llm llm-memory mcp memory persistent-memory python rust semantic-memory vector-db

ReleasePort's take

Light signal
editorial:auto 13d

The has_embedder() function now correctly detects Python‑provided embedders in pyo3 bindings, resolving a false negative issue.

Why it matters: Patch to v0.7.10 immediately for projects using pyo3 bindings that rely on accurate embedder detection; the fix resolves a critical false‑negative bug.

Summary

AI summary

Fixed has_embedder() to correctly detect Python‑provided embedders.

Changes in this release

Bugfix Medium

has_embedder() now checks both Rust and Python embedder slots, fixing false negative for Python‑set embedders.

has_embedder() now checks both Rust and Python embedder slots, fixing false negative for Python‑set embedders.

Source: llm_adapter@2026-05-21

Confidence: high

Full changelog

Closes yantrikos/yantrikdb-hermes-plugin#4 — alienos 2026-05-13.

The bug

The pyo3 wrapper stores embedders in two separate state slots:

| Slot | Set by | Used by |
|------|--------|---------|
| self.inner.embedder (Rust) | engine's set_embedder() via with_default(), auto_attach_bundled_embedder(), set_embedder_named() | db.embed() (Rust-native fast path) |
| self.embedder (Python) | pyo3 set_embedder(obj) accepting any PyObject with .encode(text) | embed_text() fallback (Python bridge) |

embed_text() tries Rust first, falls back to Python — so both paths work end-to-end. But has_embedder() only checked the Rust slot, returning False for a caller who attached a Python embedder via set_embedder(...). record_text() / recall_text() still worked; the asymmetry only bit precondition checks that called has_embedder() directly.

The Hermes plugin's embedded.py startup does exactly that — it raises YantrikDBError on not self._db.has_embedder() right after calling set_embedder(Model2VecEmbedder(...)). Users had to manually patch out the check to unblock initialization. alienos filed the bug with a clear repro.

The fix (~5 LOC, pyo3 binding only)

fn has_embedder(&self) -> PyResult<bool> {
    let db = self.get_inner()?;
    Ok(db.has_embedder() || self.embedder.is_some())  // ← OR added
}

Now functionally equivalent to "can embed_text(...) succeed?" — the actual question any caller is trying to answer.

What's unchanged

  • NO engine code changed
  • NO production data path changed
  • set_embedder(), set_embedder_named(), with_default() unchanged
  • 1422 lib tests pass

The regression class isn't unit-testable from Rust (needs Python harness to construct PyObject embedder); engine-side tests already cover the Rust path which was never broken. Plugin-side will exercise the fix on next pip install --upgrade yantrikdb after PyPI catches up.

🤖 Generated with Claude Code

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track YantrikDB

Get notified when new releases ship.

Sign up free

About YantrikDB

All releases →

Related context

Earlier breaking changes

  • v0.7.20 `correct()` now mutates in place, preserving rid and adding revision history (BREAKING CHANGE).
  • v0.7.9 Pure-additive; existing engines keep English models on v0.1.0.

Beta — feedback welcome: [email protected]