What's Changed
- bench(#475): multi-seed confirmation — 73.8% mean over 3 runs, worst seed +9.0 over Zep by @tcconnally in #576
- refactor(integrations): route langgraph/crewai/autogen adapters through the shared client by @tcconnally in #571
- bench(longmemeval): CPST results — Perseus 4.7× cheaper per correct answer, +10 pts accuracy by @tcconnally in #577
- docs(#554): enumerate all retrieval modes in one reference by @tcconnally in #573
- docs(#556): note direct SQL edits need
maintainto reconcile FTS by @tcconnally in #574 - docs: value-first README lead + LongMemEval benchmark section by @tcconnally in #578
- Revise description for Perseus Computing LLC by @tcconnally in #581
- feat(#563,#562): capture --consume/--prune-source + enumeration semantics by @tcconnally in #582
- feat(#551): PraisonAI MemoryProtocol adapter by @tcconnally in #583
- bench(#553): reproducible three-axis temporal benchmark by @tcconnally in #584
- bench(#579,#580): official-CoT answer prompt + offline retrieval coverage diagnostic by @tcconnally in #585
- feat(#562): perseus_vault_scan — deterministic keyset enumeration + query-contract docs by @tcconnally in #586
- bench(#579): official-CoT LongMemEval distribution — 79.0% mean over 3 signed runs by @tcconnally in #587
- diag(#590): version-inversion rate for knowledge-update (free, no-LLM gate) by @tcconnally in #593
- fix(#591): scale_bench.py passes --embedding-model-name (+ --skip-seed) by @tcconnally in #594
- fix(#592): batch embed aborts + surfaces top-level error on persistent backend failure by @tcconnally in #595
- fix(#591): scale_bench --embedding-model-name (501 loop) + verified 100k recall result by @tcconnally in #596
- docs: add recall-accuracy-at-scale benchmark to README (100K hybrid 1.000@5 vs keyword 0.015) by @tcconnally in #597
- bench: commit portable Lambda orchestration kit + 100K recall headline by @tcconnally in #598
- bench: measured Zep + Letta same-box recall comparison by @tcconnally in #599
- bench: refresh 8×H100 fleet throughput at 100K + recall-hold check by @tcconnally in #600
- docs(bench): record 2026-07-12 fleet re-validation + recall-hold note by @tcconnally in #604
- docs: propagate measured Zep + Letta same-box results into READMEs/comparisons by @tcconnally in #606
- docs: standardize Vault MCP tool count as '55+' by @tcconnally in #611
- bench/lambda: harness fixes — llm-model arg, mean-of-N Zep runs, competitor stack bring-up (#607, #608, #609) by @tcconnally in #612
- bench/lambda: terminate verify+retry, incremental recall checkpointing (#602, #603) by @tcconnally in #613
- docs: measured A100 rows (8×40GB + 2×80GB) in agent-economics tables, with GPUs column (#605) by @tcconnally in #615
- perf: bounded concurrent worker pool for batch embedding (#601) by @tcconnally in #616
- perf: bounded-scan pre-rank for the BM25 keyword arm (#589) [needs Lambda measurement before merge] by @tcconnally in #617
- bench: 1M-entity recall scale point (fleet-embedded) by @tcconnally in #618
- #590: event-time supersession-aware recall tiebreak (off by default) by @tcconnally in #621
- #620: serve_fleet.sh — detach daemons so ssh returns; make nginx LB optional by @tcconnally in #622
- #590: correct SUPERSEDE_590 — recall-time reranking is ineffective on current main by @tcconnally in #623
- #588: multi-query expansion (flat N-arm RRF) + date-aware arm (off by default) by @tcconnally in #624
- bench(scale): 1M budget row + #589 scan-cap measurement (keep cap default off) by @tcconnally in #625
- #590: ingest-time analysis — engine already does latest-wins for same-key updates (demo + doc) by @tcconnally in #626
- #619 interim: MIMIR_DENSE_MAX_SCAN — explicit exact-vs-bounded dial for the dense arm by @tcconnally in #627
- #590: --ku-shared-key harness mode + measured close-out (inversion 47.4%→0.0%, KU QA 73.1%→78.2%) by @tcconnally in #628
- #619 step 1: resident sig cache — full-corpus Hamming prefilter for the dense arm (opt-in) by @tcconnally in #631
- perf(recall): cache parsed body_json to avoid re-parse in to_json_expanded by @tcconnally in #643
- perf(recall): add Vec capacity hints for hot-path allocations by @tcconnally in #644
- feat: mimir_recall_batch — server-side multi-query recall with RRF fusion by @tcconnally in #648
- fix(ci): repair grpc build break + model-cache immunity for all build jobs (#649) by @tcconnally in #650
- docs: client-compatibility note for canonical-only tool manifest (#633) by @tcconnally in #645
- bench(1m): skip the no-op serial embed crawl on fully-embedded corpora by @tcconnally in #647
- ci(recall-gate): settle the async auto-embed worker before measuring (#632) by @tcconnally in #646
- fix(embed): explicit --embedding-endpoint outranks the bundled model for query embedding by @tcconnally in #651
- bench(1m): #619 sig-cache A/B artifacts — dense@5 +0.20, hybrid@1 +0.27 at 1M by @tcconnally in #652
- perf(619): partial-select + corpus-scaled rerank pool for the sig cache by @tcconnally in #653
- bench(1m): #619 step-1.5 artifacts — hybrid@1 0.936 at baseline latency by @tcconnally in #654
- perf(619): sig cache defaults to AUTO — engages when the corpus outgrows max_scan by @tcconnally in #655
- audit: reconcile version/tool-count/LongMemEval drift + stale names across metadata & docs by @tcconnally in #656
- docs(readme): use signed 3-run LongMemEval mean (73.8%) in headline by @tcconnally in #659
- perf(619): step 2a — asymmetric sig scoring + flat cache buffer by @tcconnally in #660
- bench(1m): #619 step-2a artifacts — asym Pareto win, hybrid@1 0.948, step 2b GO by @tcconnally in #661
- feat(619): step 2b — int4 ADC refine tier between 1-bit coarse and exact rerank by @tcconnally in #662
- bench(1m): #619 step-2b artifacts — int4 refine flat; the wall is coarse recall by @tcconnally in #663
- perf(619): step 2c′ — resident int4 coarse + 2b refine default OFF by @tcconnally in #664
- bench(1m): #619 step-2c′ artifacts — resident int4 coarse also flat at 0.722 by @tcconnally in #665
- bench(1m): #619 exact-scan ceiling — the shipped default beats it; campaign closed by @tcconnally in #666
- fix: back-compat write flag aliases (#658) + explicit ok on MCP remember (#657) by @tcconnally in #667
- perf(#630): embedding-quantization ladder + pure-1-bit harness flag by @tcconnally in #668
- research(#629): NVFP4 embedding feasibility memo — reframe + no-Blackwell first experiment by @tcconnally in #669
- bench(#630): fold in the measured pure-1-bit row — the rerank does the denoising by @tcconnally in #670
- research(#629): measured — naive Qwen3-0.6B swap loses to nomic-768 at 1M by @tcconnally in #672
- fix(#671): surface db path in health so write/inspect mismatches are self-diagnosing by @tcconnally in #673
- docs(#790): Rovo Dev can't inject hook output — route memory-prep via AGENTS.md by @tcconnally in #674
- bench: commit GAUNTLET ladder + scale artifacts; ignore target-* build dirs by @tcconnally in #678
- feat(#677): readiness probe + self-describing empty recall by @tcconnally in #679
- feat(#675/#676): startup-optimized actionability ranking + hygiene report by @tcconnally in #680
- feat(#681): outcome-weighted recall — efficacy signal feeds ranking by @tcconnally in #686
- feat(#682): history-inclusive temporal recall — surface superseded facts by @tcconnally in #687
- feat(#683): Keystones — mandatory policy rules (vault side) by @tcconnally in #688
- feat(#684): multi-agent scoping — trust tiers + visibility enforcement by @tcconnally in #689
- feat(#685): BEAM — bi-temporal correctness + determinism at scale by @tcconnally in #690
- bench(#685): signed BEAM report — 100% correctness + flat ~22ms latency to 10M by @tcconnally in #691
- docs(#695): CoalWash + Noisegate context-budget composition guide by @tcconnally in #699
- feat(#694): name the typed memory ontology + surface type in context render by @tcconnally in #700
- bench: generate BEAM + same-box sections in gen_benchmark_page.py (#685/#697) by @tcconnally in #701
- docs(#702): remove unbacked insert figure, refresh CLAIMS-AUDIT, correct signed-results wording by @tcconnally in #705
- integrations/noisegate: real captured golden fixture + correct the fabricated docs by @tcconnally in #706
- fix(federate): use OS temp dir instead of hardcoded /tmp for Windows compat by @tcconnally in #707
- feat(context): emit token telemetry for savings chain by @tcconnally in #708
- Implement Timeline-Replay Architecture (Schema Harness Pattern) by @tcconnally in #710
- feat: Chancery audit cross-reference (writ ID in journal) by @tcconnally in #711
- [P0] Make encryption-at-rest explicit, enabled, and recoverable (#712) by @tcconnally in #715
- [P1] Establish reproducible signed release builds and CI gates (#713) by @tcconnally in #716
- Add durable cognition strategy doc by @tcconnally in #727
- docs: memory model design specs (taxonomy, anchors, served-memory, provenance) by @tcconnally in #730
- feat: belief overlay, memory origin/external refs, mimir_promote (#717, #728, #729, #832) by @tcconnally in #731
- ci: Developer ID sign + notarize macOS release and .mcpb binaries by @tcconnally in #742
- docs: structured-truth retrieval specs (policy, provenance, refresh, graph-first, hybrid ranking) by @tcconnally in #743
- docs: synthesis lifecycle specs (hypotheses, abductive graph context, question-conditioned) by @tcconnally in #744
- docs: memory-operations taxonomy + external-source sync contract specs by @tcconnally in #747
- ci(noisegate): anchor golden fixture to checkout-built binary + byte-compare gate by @tcconnally in #749
- fix(stdio): reap orphans by parent death, not idleness (#748) by @tcconnally in #750
- feat(stdio): Windows parent-death detection via OpenProcess liveness (#751) by @tcconnally in #752
Full Changelog: v2.20.2...v2.21.0