chronomemory Changelog¶
All notable changes to the chronomemory ESDB engine. Available on PyPI.
[0.2.4] — 2026-06-23¶
Fixed¶
- O(1) WAL append (
_append_wal): replaced the O(n²) full-rewrite strategy with a directopen("a")append. WAL format is unchanged; all existing WAL files are fully compatible. - Stale
.wal.tmpcleanup onopen(): any.wal.tmpleft by a crashed ≤ v0.2.x process is silently removed before acquiring the write lock.
Added¶
conftest.pyCI reliability hook: guarantees the CI "Check for test failures" step has valid pass/fail data even when Python crashes during JUnit XML write on Windows Server 2025.
[0.2.3] — 2026-06-23¶
Added¶
- Cross-platform single-writer file lock (
events.wal.lock) — prevents concurrent writes. - Chain validation warning on
open()—RuntimeWarningif WAL hash chain is broken. - WAL auto-compaction threshold (
max_wal_events) — keeps WAL size bounded. __del__safety net —ResourceWarningif store is GC'd while open.open()idempotency — double-open is a no-op.EsdbBridgeper-operation lock release — releases write lock immediately after each call.- 18 new production-hardening tests.
Fixed¶
_WriteLock._try_clear_stale()WindowsOSErrorhandling for stale lock detection.
[0.2.2] — 2026-06-22¶
Changed¶
EsdbIdunified toString-typed ID — full bidirectional Python↔Rust WAL replay. All existing WAL files remain compatible.
[0.2.1] — 2026-06-22¶
Changed¶
- Rust↔Python record schema alignment —
RecordKind,RecordStatus,EdgeTypenow serialise with Python-compatible lowercase strings. Fixesquery(kind="fact")on Rust-written WALs. - Serde aliases for Python vocabulary (
"deprecated","tombstone", etc.).
[0.2.0] — 2026-06-22¶
Added¶
- Production hardening: file locking, auto-compaction,
__del__safety, startup performance test.
[0.1.8] — 2026-06-22¶
Fixed¶
_append_wal()Windows hash-chain corruption on dual-open pattern.
[0.1.3] — 2026-06-11¶
Fixed¶
- Hash compatibility: compact JSON separators in WAL hash computation — aligns Python
json.dumpswith Rustserde_json; fixes cross-language SHA-256 chain verification.
[0.1.2] — 2026-06-11¶
- First public PyPI release. CI cross-compat round-trip (Python↔Rust WAL).
[0.1.0] — 2026-05-18¶
- Initial release:
ChronoStore,ChronoRecord,WalEvent,EsdbBridge. - NDJSON WAL with SHA-256 hash chain.
- 7 OEA anti-hallucination fields (H15–H22).
- Snapshot + WAL tail replay, tombstone semantics, atomic writes.
- Zero runtime dependencies.