This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+12 more
ReleasePort's take
Light signalThe 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 summaryFixed has_embedder() to correctly detect Python‑provided embedders.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| 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
About YantrikDB
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]