This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+12 more
Summary
AI summaryUpdates New API, Upgrade notes, and Replication & lifecycle across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds first-class record-to-record link capabilities (supersedes, advances, contradicts, supports, questions, derived_from). Adds first-class record-to-record link capabilities (supersedes, advances, contradicts, supports, questions, derived_from). Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Feature | Medium |
Introduces new API methods: record_with_links, link, unlink, linked_records, recall_with_links, reify_supersedes_links. Introduces new API methods: record_with_links, link, unlink, linked_records, recall_with_links, reify_supersedes_links. Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Feature | Medium |
Adds link-aware recall that demotes superseded records and surfaces linked supporters/contradictors. Adds link-aware recall that demotes superseded records and surfaces linked supporters/contradictors. Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Feature | Medium |
Adds automatic schema migration from v30 to v31, creating record_links table and covering indexes. Adds automatic schema migration from v30 to v31, creating record_links table and covering indexes. Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Feature | Low |
Adds idempotent link/unlink operations with UNIQUE constraint for replication safety. Adds idempotent link/unlink operations with UNIQUE constraint for replication safety. Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Feature | Low |
Adds `forget()` handling that marks links as broken when source or target is forgotten, preserving audit trail. Adds `forget()` handling that marks links as broken when source or target is forgotten, preserving audit trail. Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Feature | Low |
Adds `reify_supersedes_links()` one‑shot conversion from legacy metadata.supersedes to real Supersedes links. Adds `reify_supersedes_links()` one‑shot conversion from legacy metadata.supersedes to real Supersedes links. Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Feature | Low |
Notes deferred follow‑up items: `relate()` phantom‑entity prerequisite and windowed orphan/leak audit helper. Notes deferred follow‑up items: `relate()` phantom‑entity prerequisite and windowed orphan/leak audit helper. Source: llm_adapter@2026-05-30 Confidence: low |
— |
| Bugfix | Low |
Ensures `correct()` preserves record links when correcting text/metadata. Ensures `correct()` preserves record links when correcting text/metadata. Source: llm_adapter@2026-05-30 Confidence: high |
— |
| Refactor | Low |
Refactors design based on adversarial redteam (gpt‑5.5, deepseek‑chat) and code‑grounding investigations. Refactors design based on adversarial redteam (gpt‑5.5, deepseek‑chat) and code‑grounding investigations. Source: llm_adapter@2026-05-30 Confidence: high |
— |
Full changelog
First-class record-to-record links — the deepest ask from the yantrikdb-agi gap analysis (Phase 1 XC1 / Phase 2 Proposal 2). Records can now express supersedes / advances / contradicts / supports / questions / derived_from relationships to each other, atomically with the write, and those links are visible to recall.
Implemented across #53 (substrate) + #55 (recall + Python bindings); design record in docs/record_link_model_rfc.md (#52).
Additive — no behavior change
Existing paths (record(), recall(), correct()) are byte-identical. The link surface is entirely new opt-in methods, so there is no behavior change and no feature flag — a deployment carries the link model dormant until something calls a *_with_links method.
New API (engine + Python)
record_with_links(text, links=[{"target_rid": "...", "link_type": "supersedes"}], ...)— record a memory and attach linkslink(source_rid, target_rid, link_type)/unlink(...)linked_records(rid, direction="both", link_type=None)— traversal;contradictsis bidirectionalrecall_with_links(query, top_k, expand_links=N, ...)— link-aware recall: supersedes-demotion (a stale, superseded record is demoted) + budget-capped neighbor surfacing, via a relation-aware polarity mapreify_supersedes_links()— one-shot conversion of the legacymetadata.supersedes = "<rid>"convention into realSupersedeslinks (upgrade step)
Link types: advances / supersedes / contradicts / supports / questions / derived_from / custom:<name>.
The headline correctness win
Before: A supersedes B, you query something close to B → the engine returned stale B and never surfaced A. Now: recall_with_links(query_near_B, expand_links=1) demotes B and surfaces A above it. contradicts surfaces the contradictor without an endorsing relevance halo; supports pulls in a linked supporter even when it's semantically far from the query.
Schema
Migration v30 → v31: adds the record_links table + two covering indexes. Additive, forward-only, no data transform. Runs automatically on first open.
Replication & lifecycle
link/unlinkop kinds; idempotent apply on followers (UNIQUE + INSERT OR IGNORE); leader HLC carried.forget()marks linksbroken_source_forgotten/broken_target_forgotten(audit-trail), never deletes.- v0.7.20
correct()synergy: in-place correction preserves the rid, so a record's links survive a correction for free.
Design provenance
This release went through adversarial redteam (gpt-5.5, deepseek-chat) + three code-grounding investigations before implementation. The redteam reshaped the design materially — notably proving that recall integration is a correctness requirement (not a ranking nicety) and surfacing relation-aware scoring. The full A/B/C alternatives analysis, decisions, and changelog are in the design-record RFC.
Deferred to follow-ups
relate()phantom-entity prerequisite (#56) — rid endpoints currently mint phantomunknownentities; independent hygiene, no correctness impact.- Windowed orphan/leak audit helper — the trader postmortem proved the existing oplog-presence "orphan" metric is a compaction artifact, not a leak; the replacement windowed check is a small follow-up.
Upgrade notes
- Additive; safe to adopt. Schema v31 migration is automatic + forward-only.
- Existing
correct()/recall()/record()callers need no changes. - To change a record's embedding, continue using
forget()+record()—correct()and the link model are text/metadata/relationship-level. - Server-mediated deployments (yantrikdb-server) pick this up on their next engine pin bump; the MCP tool surface for the link methods lands with that bump.
Stats
1530/1530 lib tests pass. cargo fmt --check --all + cargo clippy --all-targets clean. Python bindings verified locally against a real interpreter.
🤖 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]