v0.10.0 — integrity, supersedence split, and a critical install fix
If a previous version crashed immediately after install, this release fixes that
migrations/ was missing from the published npm package, so fresh installs of v0.6.0 through v0.9.2 failed with ENOENT: scandir .../migrations on the first command. v0.10.0 ships the migrations and installs cleanly.
This release repairs stored data on first start
Three migrations run automatically when the daemon starts after upgrading:
- 018 removes self-loop supersedence edges and restores sessions that were wrongly marked superseded by a resume-ingest bug (in one production corpus this affected 181 of 185 superseded sessions)
- 019 splits mechanical re-ingest from operator-asserted supersedence: re-parsed transcripts are now
replaced/replaces, andsuperseded/supersedesis reserved for reasoning that was actually overturned - 020 collapses duplicate active facts left by a SQLite supersedence bug (the newest fact per (subject, predicate) stays active)
Run nlm doctor before and after upgrading if you want to see exactly what was repaired.
New
nlm doctor— integrity self-checks over the memory store (self-loops, orphaned statuses, cycles, dangling references, duplicate facts), with--fixfor the mechanically safe repairs. A daily watchdog surfaces violations as Pulse alerts.- Supersedence semantics split — Thread collapses mechanical earlier versions behind an "N earlier versions" affordance; operator-overturned sessions stay visibly dimmed.
- Cycle detection — supersedence chains can no longer form loops (HTTP 400 on attempts).
Fixed
- Recall no longer ranks superseded or replaced sessions into results served to agents
- PostgreSQL: sessions are no longer silently lost when classification fails; BIGINT size comparison no longer re-classifies every file on every tick
- Low-confidence classifications no longer re-classify in an infinite loop; files re-attempt when they grow
- SQLite fact supersedence now collapses all active priors, matching PostgreSQL semantics
962 tests passing. Thanks to a cold-install simulation for catching the packaging bug — it is now part of the release process.