Skip to content

YantrikDB

v0.9.4 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

Affected surfaces

breaking_upgrade

Summary

AI summary

Updates Fix, Root cause, and https://github.com/yantrikos/yantrikdb/issues/62 across a mixed release.

Changes in this release

Bugfix High

Fixes cold-tier recall: decompress embeddings before scoring, prevents NaN similarities.

Fixes cold-tier recall: decompress embeddings before scoring, prevents NaN similarities.

Source: llm_adapter@2026-07-14

Confidence: high

Bugfix Medium

Guard against NaN similarities in cosine_similarity for degenerate vectors.

Guard against NaN similarities in cosine_similarity for degenerate vectors.

Source: granite4.1:30b@2026-07-14-audit

Confidence: low

Full changelog

v0.9.4 — hotfix

Fixes #62: cold-tier recall scores were silently wrong — garbage similarities always, and a chance NaN that poisoned the response-level confidence.

Root cause (two compounding defects)

  1. archive() stores cold-tier embeddings zstd-compressed in the same column hot rows use for raw f32 — and the recall read path never decompressed (decompress_embedding had exactly one call site: hydrate). Every recall scoring path that touched a cold record reinterpreted compressed bytes as floats. The cold tier has been silently unscoreable in recall since compression was introduced; #60''s panic fix is what made it visible as a wrong number instead of a crash.
  2. consolidate::cosine_similarity — the function recall actually scores through — still carried the pre-#60 NaN-blind guard (== 0.0).

Fix

  • decompress_if_cold() (zstd magic check) after decrypt in both durable embedding readers, mirroring hydrate(). Previously-affected records self-heal on the next read — no per-record hydrate ritual needed.
  • The #60 guard ported into cosine_similarity (!(norm > 0.0)): degenerate vectors degrade to finite 0.0 similarity, never NaN.
  • Defense: the index rebuild scan also decompresses cold-format blobs if tier drift ever routes one there.

Credit: reported by @blue-mtn-dog with line-level root-cause analysis, verified exact on every claim — their second such report.

Published to PyPI (pip install -U yantrikdb) and crates.io.

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.9.3 `recall_demand` isolation is namespace‑keyed and disabled on encrypted databases, purging legacy rows via migration.
  • 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]