Skip to content

v2.13.0

Choose a tag to compare

@Lyellr88 Lyellr88 released this 15 Jun 10:42

MARM v2.13.0 focuses on recall quality and long-memory coverage.

Recall now starts with FTS5 BM25, reranks only that bounded candidate set semantically, and falls back to the broader semantic scan only when the keyword path is weak, malformed, or unscoreable. That cuts unnecessary scoring work on exact-term queries without giving up abstract recall when the wording is loose.

This release also fixes a real limitation in the embedding path for long memories. Short entries still use the existing single-vector path. Longer entries are now split into overlapping chunks, scored chunk-aware in both the rerank and fallback lanes, and collapsed back to one parent memory result using the best chunk match. In practice, details near the end of a long memory are much more likely to come back without flooding results with duplicate chunk hits.

Other changes in this release:

  • Added FTS_CANDIDATE_LIMIT with a default of 50 to control how wide the BM25 candidate pool gets before semantic reranking.
  • Tightened recall_scan_truncated so it only reports on the bounded semantic fallback lane, not the primary filter-then-rerank path.
  • Moved long-memory chunk writes off the agent-visible return path and added guards so stale background writers cannot reinsert old chunks after a merge.
  • Added dedicated chunking tests, rerank regression coverage, and a smoke script for end-to-end validation.
  • Updated the core docs and benchmarks for the new recall path and chunked embedding behavior.

This is a performance release, but not just a speed release. The goal was to make recall faster on the common path while making long memories more trustworthy when they matter.