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_before filters now compare chronologically across mixed naive/aware formats — a naive 2024-01-01T23:00:00 message was previously excluded by ts_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 ships CHANGELOG.md (force-include).
  • Known limitation: timestamp pushdown into the Chroma scan remains deferred — stored ts strings 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 a SHA256(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 (requires confirm=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 stats and delete.

[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_cap opt-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