Skip to content

v0.10.0 — integrity, supersedence split, and a critical install fix

Choose a tag to compare

@pbmagnet4 pbmagnet4 released this 10 Jun 17:02
· 31 commits to main since this release

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, and superseded/supersedes is 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 --fix for 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.