v2.14.0 — bi-temporal memory + the concurrency/capacity hardening arc
Highlights
Bi-temporal memory (schema v9, 55 tools). Facts now carry a queryable valid-time axis (SQL:2011 APPLICATION_TIME) orthogonal to transaction time: mimir_valid_at, mimir_bitemporal, valid-period filters on recall, valid-time on remember/correct/supersede. Plus GraphRAG community detection (mimir_communities / mimir_community_summary / mimir_global_recall, schema v8), mimir_dream sleep-time consolidation, and recall-first context injection.
The concurrency/capacity hardening arc (#371–#405). A systematic sweep found and fixed seven instances of one defect family — read-decide-write on the bare pooled connection, missing monotonic timestamp bumps, and nested pool draws — every fix shipped with a regression test proven failing against pre-fix code:
- Pool-exhaustion collapse (#397, #387): recall/insert/embed/link each held two pooled connections; at 2× pool oversubscription the server measured 174 req/s with 30-second stalls and failed writes, and wedged at 4×. Now one connection per request: ~4,200 req/s, zero errors on the same load. New
MIMIR_POOL_TIMEOUT_MSknob. - Temporal audit-trail integrity (#371–#381): all four
entity_historywriters now take the IMMEDIATE writer lock before precondition reads and bump timestamps monotonically — no more inverted/zero-width history windows, double snapshots, or backwardsrecorded_atunder concurrency. - Link-graph durability (#382): re-remembering a linked entity no longer erases its edges — remember unions caller links with stored links under the writer lock.
- Efficacy tracking correctness (#385, #391): concurrent
mimir_followcalls no longer lose increments, and a follow stamps exactly one resolved row instead of every workspace's row of that key. - Maintenance safety (#388, #399, #400): cohere's transaction is drop-safe (an error can no longer permanently poison a pool slot); decay_tick skips no-op writes (was 412MB of WAL per tick on a 45MB DB at 100k entities).
mimir_historypagination (#403):limit(default 20) +offset+total— no more multi-MB tool responses from hot keys.- New concurrency CI gate: the pool load test at 2× oversubscription plus four concurrency hammer tests now run on every PR.
Also since v2.13.0: rekey-aad guarded against concurrent rewrites (#386), grpc build lane + error sanitization (#359), migration race fixes (#357/#358), RUSTSEC-2026-0187 cleared (#362).
Full details in the CHANGELOG.
🤖 Generated with Claude Code