Releases: edheltzel/Recall
Releases · edheltzel/Recall
v0.5.0 — SessionExtract SQLite Migration
What's New
SessionExtract SQLite Migration
Migrates SessionExtract's mutable state from race-prone JSON files to SQLite, fixing systemic concurrency bugs.
Root cause fixed: 84 concurrent extractors, 81.7% failure rate, TOCTOU race conditions from JSON file read-modify-write.
New Features
- 4 extraction tables in memory.db: tracker, sessions, errors, locks
- Counting semaphore — limits extractors to 3 concurrent (prevents resource exhaustion)
- Adaptive quality gate — fixes 80% failure rate on short sessions
- SQLite-based locks — INSERT OR IGNORE replaces file-based locks (eliminates TOCTOU)
- PRAGMA user_version migration system — automatic schema upgrades on
mem init
Upgrade Path
Existing installs: git pull && ./install.sh — migrations apply automatically. No manual steps required.
The migration system bridges from the old schema_meta version tracking to SQLite's native PRAGMA user_version. Future schema changes just append to the ordered migration array.
Testing
- 78 new tests (197 total, 0 failures)
- Concurrency tests with Bun.spawn + SIGKILL crash recovery
- E2E integration verifying no real data touched during test runs
Breaking Changes
None. Fully backward compatible. JSON backup files preserved as .bak.