Skip to content

Releases: edheltzel/Recall

v0.5.0 — SessionExtract SQLite Migration

17 Mar 00:11
7c871c2

Choose a tag to compare

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.

v0.4.1

10 Mar 13:03
2b06a38

Choose a tag to compare

First public release, stable enough to share.