@@ -32,6 +32,20 @@ This is the prioritized forward plan. The per-iteration security audits
3232 macOS-version warnings are cosmetic.
3333
3434### Shipped this cycle
35+ - ✅ ** Iteration 21 — Unify single & batch ingest into one lifecycle (data-integrity, 2026-06-16).**
36+ ` ingest_batch ` had silently diverged from single ingest — it skipped near-dedup,
37+ fact-contradiction resolution, relationship extraction, the ` on_post_ingest ` hook, and
38+ deferred plugin side-effects, so batching N memories was materially weaker than N single
39+ ingests. Both now share ` prepare_ingest ` → ` near_dedup_check ` /` reinforce_existing ` → store →
40+ ` finalize_ingest ` ; plugin pre-ingest runs before the dedup hash (fixed batch's reversed
41+ order); batch near-dedup covers stored + intra-batch siblings; contradiction context is
42+ queried fresh per memory (memory N sees memory N-1's facts). Also made
43+ ` store_memories_batch ` atomic (all-or-nothing) — a failed INSERT used to commit a partial
44+ set, leaving the index/event-bus/sync/finalize processing ghost memories. Codex-reviewed
45+ design + adversarial Rust review (caught the ghost-memory bug). New ` test_ingest_parity.rs ` ;
46+ full workspace green. This also closes the Iteration 17 "batch per-item privacy" follow-up's
47+ sibling gaps. Distribution: Dockerfile defaulted to MCP-stdio entrypoint for Glama/MCP
48+ registry; awesome-mcp-servers PR rebased clean (#8145 , supersedes conflicted #7989 ).
3549- ✅ Frecency ranking in ` retrieval.rs ` (P2) — access frequency + recency boost, tested.
3650- ✅ CI restored to green; sync + fact/preference/contradiction integration tests revived.
3751- ✅ Privacy enforcement relocated to the context boundary (above).
0 commit comments