Releases
Every CoreMem release — currently v0.16.1: chronological timestamp filters, metadata pre-filtering, versioned memory by default, and the validated-improvement releases.
[0.16.1] — timestamp filters compare chronologically
ts_after/ts_beforefilters now compare chronologically across mixed naive/aware formats — a naive2024-01-01T23:00:00message was previously excluded byts_after="2024-01-01T02:00:00+00:00"(lexically"23:…" >= "02:…+00:00"). Boundary semantics unchanged; unparseable values fall back to the legacy lexical comparison.pyproject.toml: the wheel now shipsCHANGELOG.md(force-include).- Known limitation: timestamp pushdown into the Chroma scan remains deferred — stored
tsstrings in pre-existing stores keep arbitrary formats; the Python post-filter is chronologically correct, storage-side normalization is a prerequisite for pushing ranges down.
[0.16.0] — metadata pre-filtering
Adopts HybridDB 0.7.0’s search(where=) — equality filters (role, session_id, user_id, agent_id) are pushed into the Chroma query before the vector scan.
- Filtered recall no longer starves: previously a filtered recall fetched top-
max(limit×20, 100)rows unfiltered and post-filtered — ≥100 more-relevant non-matching rows could push the answer out of the window entirely. Demonstrated: 150 same-phrase noise rows made the old path return empty for a session-filtered recall; pushdown returns the target as the top hit. - The Python post-filter remains the authority (defense in depth, unchanged semantics).
[0.15.0] — versioned memory becomes the default
versioned=True is now the default for new stores; HybridDB 0.7.0 floor. Legacy stores unaffected (versioning is create-time only).
[0.14.0] — versioned memory (opt-in)
MemoryCore(path, versioned=True, author=...)— new stores carry aSHA256(prev_hash | op | pk | row_json)chain; opened-on-legacy stores warn and stay un-versioned.- Governance API:
checkpoint_memory,rollback_memory(chain never rewinds),memory_log,memory_history,memory_diff,as_of_memory,verify_memory_chain. - MCP tools:
memory_history,memory_rollback(requiresconfirm=true),memory_verify. - Perf gate (10k messages): ingest +8.2%, recall latency unchanged, storage 1.13× — default flip greenlit for 0.15.0.
[0.13.4] — better default embedder
- bge-small default embedder (+0.010 message recall on full S), CoN reading helper, lever program concluded.
[0.13.2] — filter plumbing, fixed end to end
- Every recall filter honored by every strategy — preference queries, session_cap selection, and fusion no longer leak messages from other sessions.
ingest()returns the stored turn_id; MCP ingest surfaces invalid metadata JSON; use-after-close raises; recall rejects empty queries.- 12 regression tests from a full E2E bug hunt.
[0.13.1] — API polish
- New API:
list_sessions(),delete_messages(),stats(),close()with context manager. - MCP server widened from 5 to 8 tools; CLI gains
statsanddelete.
[0.13.0] — validated defaults
- 4k bundles + evidence-first ordering — 0.678 answer accuracy vs 0.608 at 16k, ~60% less context.
- Preference union + temporal decomposition folded into the default episodic path (+0.033 / +0.037 session recall on S).
ingest_many()— batch ingestion 4.3× faster (550 messages: 49.9s → 11.5s).session_capopt-in documented tradeoff.
Full history
The complete changelog lives in the repo: CHANGELOG.md (back to v0.12.x and the graph-traversal experiment that was parked).
Source of truth for this page: CoreMem · open-assistants-lab/CoreMem