Skip to content

YantrikDB

v0.10.0 Breaking

This release includes 3 breaking changes for platform teams planning a safe upgrade.

✓ 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

auth rbac breaking_upgrade

Summary

AI summary

Updates Write-path hardening, Python error surface, and Durable idempotency across a mixed release.

Changes in this release

Feature Medium

`record()`, `record_text()`, and `record_batch()` accept idempotency keys.

`record()`, `record_text()`, and `record_batch()` accept idempotency keys.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Medium

`recall()` now excludes superseded results by default; set `include_superseded=True` to restore history access.

`recall()` now excludes superseded results by default; set `include_superseded=True` to restore history access.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Medium

`record_text` and `record_batch` normalize blank namespaces to `default`.

`record_text` and `record_batch` normalize blank namespaces to `default`.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Medium

Typed exceptions added: Backpressure, IdempotencyConflict, InvalidIdempotencyKey, ProvenanceInconsistent, RecallContended, CorrectionDeferredDuringReembed, BatchDeferredDuringReembed (all subclass RuntimeError).

Typed exceptions added: Backpressure, IdempotencyConflict, InvalidIdempotencyKey, ProvenanceInconsistent, RecallContended, CorrectionDeferredDuringReembed, BatchDeferredDuringReembed (all subclass RuntimeError).

Source: llm_adapter@2026-07-17

Confidence: high

Feature Medium

Replicated batch writes carry idempotency identity to followers.

Replicated batch writes carry idempotency identity to followers.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Medium

Oplog wire format v2 carries embedding bytes for byte‑deterministic sync across peers.

Oplog wire format v2 carries embedding bytes for byte‑deterministic sync across peers.

Source: llm_adapter@2026-07-17

Confidence: high

Feature Medium

Anti‑laundering chokepoint enforces confidence basis for `source=inference` claims of `kind=fact/observation`.

Anti‑laundering chokepoint enforces confidence basis for `source=inference` claims of `kind=fact/observation`.

Source: llm_adapter@2026-07-17

Confidence: low

Feature Low

Idempotent writes with same key + identical payload return original RID without additional writes or metric changes; different payloads raise `IdempotencyConflict` containing the existing RID.

Idempotent writes with same key + identical payload return original RID without additional writes or metric changes; different payloads raise `IdempotencyConflict` containing the existing RID.

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

Confidence: low

Feature Low

Cross-surface digests treat identical payloads under one idempotency key as the same write across `record()`, batch items, and `record_text`. Digest for `record_text` excludes engine‑generated embeddings to prevent conflict spoofing.

Cross-surface digests treat identical payloads under one idempotency key as the same write across `record()`, batch items, and `record_text`. Digest for `record_text` excludes engine‑generated embeddings to prevent conflict spoofing.

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

Confidence: low

Feature Low

Anti-laundering chokepoint blocks `source=inference` claims of `kind=fact/observation` unless a confidence basis is provided, enforced on all write surfaces (record, batch, record_with_rid, metadata_merge, links-after-record).

Anti-laundering chokepoint blocks `source=inference` claims of `kind=fact/observation` unless a confidence basis is provided, enforced on all write surfaces (record, batch, record_with_rid, metadata_merge, links-after-record).

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

Confidence: low

Feature Low

Host‑capability failures (e.g., fallback ONNX embedder) raise plain `ValueError` rather than engine‑generated exceptions.

Host‑capability failures (e.g., fallback ONNX embedder) raise plain `ValueError` rather than engine‑generated exceptions.

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

Confidence: low

Bugfix Medium

RAII savepoints close #91-class leaks; oplog entries atomic with their rows (closes #94).

RAII savepoints close #91-class leaks; oplog entries atomic with their rows (closes #94).

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

`__version__` now reads distribution metadata instead of a hardcoded string.

`__version__` now reads distribution metadata instead of a hardcoded string.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Write-path hardening implements reserve → commit → publish flow; eliminates orphan writes and crash windows.

Write-path hardening implements reserve → commit → publish flow; eliminates orphan writes and crash windows.

Source: llm_adapter@2026-07-17

Confidence: low

Bugfix Low

`record_with_rid`'s previously unrecoverable orphan write is now prevented; both row and operation are committed atomically or neither occurs.

`record_with_rid`'s previously unrecoverable orphan write is now prevented; both row and operation are committed atomically or neither occurs.

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

Confidence: low

Full changelog

Item 4 (Reliability) is complete: all 13 trace contracts implemented and release-blocking. This release was validated as a coordinated train — yantrikdb-server (2,118 tests) and yantrikdb-mcp (consumer-simulation gate + full suite) each built and tested the exact release rev before this tag existed. The mutual review is the product.

Durable idempotency (trace T07: repetition is not corroboration)

  • record(), record_text(), and record_batch() accept idempotency keys. Same key + identical payload = the ORIGINAL rid, zero writes — no stats advance, no certainty change. Same key + different payload = typed IdempotencyConflict carrying the existing rid. Claims are durable, immutable, and commit atomically with the write they guard.
  • Cross-surface digests: an identical payload under one key is the same write via record() or a batch item; record_text's digest excludes the engine-generated embedding, so embedder drift can never fake a conflict.

Anti-laundering chokepoint (trace T06)

  • source=inference cannot claim kind=fact/observation without raised confidence basis — enforced at every write surface: record, batch (atomic whole-batch refusal), record_with_rid at Origin admission, correct(metadata_merge), links-after-record. Admitted (replicated) applies are deliberately not re-gated: one chokepoint, at origin ingress.

Write-path hardening

  • Every writer now runs reserve → commit → publish: capacity failures surface before a single durable byte, and the crash windows between rows, ops, and vectors are gone — including record_with_rid's previously UNREPAIRABLE orphan (a kill between row and op lost the op forever; now kill-proven both-or-neither).
  • RAII savepoints (#91-class leaks closed), oplog entries atomic with their rows (#94 closed), replicated batch writes carry their idempotency identity to followers.

Behavioral changes — read this if you consume recall

  • recall() now excludes superseded results by default (include_superseded=True restores history access). Current-by-default is the correct default for agent context; as yantrikdb-mcp put it during validation: the outcome that matters is correct, current context after restart and correction, not raw recall volume.
  • record_text / record_batch now normalize blank namespaces to default — as record() has since v0.7.23.

Python error surface

  • Typed exceptions: yantrikdb.{Backpressure, IdempotencyConflict, InvalidIdempotencyKey, ProvenanceInconsistent, RecallContended, CorrectionDeferredDuringReembed, BatchDeferredDuringReembed} — all subclass RuntimeError (existing handlers unaffected); branch retryable-vs-conflict-vs-fatal on type, never on message text.
  • Note the split: a key with a python-side fallback embedder (e.g. ONNX backend) raises plain ValueError — a host-capability refusal from the wrapper, not an engine verdict.
  • __version__ now reads distribution metadata (a hardcoded string had drifted).

The lesson this release keeps

Three workspaces independently converged on it during validation: version pins fail (the version doesn't move), signature checks fail (behavior moves without them), and expert attention fails (a version lie sat in validation stdout and was walked past). Mechanical behavioral contract tests are the only gate that gates. Pin immutable refs, probe features not versions, and declare unsupported capabilities at runtime instead of silently degrading.

Wire-protocol precondition: yantrikdb-server's oplog wire format v2 (their #52) carries embedding bytes so followers apply identical vectors — required for Item 3's byte-determinism to hold across peer sync.

Breaking Changes

  • `recall()` now excludes superseded results by default (set `include_superseded=True` to restore previous behavior).
  • `record_text` and `record_batch` normalize blank namespaces to `default`.
  • Enforced anti‑laundering rule: writes with `source=inference` cannot claim `kind=fact/observation` without a raised confidence basis, causing atomic batch refusal.

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]