* fix(mcp,extraction): a daemon whose install changed exits; grammar-load failures are never stored (#2335, #2336)
A daemon that outlived an upgrade loaded grammars lazily from an install
that no longer existed, and stored every file its watcher re-indexed as a
zero-node row under the file's new content hash: no hash-based sync ever
revisited those rows, and `codegraph status` called the index up to date.
- The daemon checks its own package.json every 30 s
(CODEGRAPH_DAEMON_INSTALL_CHECK_MS, 0 turns it off) and exits once the
file is gone or carries another version, so the next session starts a
daemon from the current install.
- A result whose grammar failed to load (`parser_error`) is never stored:
the file keeps its previous data and the next sync or index retries it,
and a row an older engine stored that way is re-indexed even though its
hash matches. The tag-based CFML path reports a missing grammar with the
same code.
- A launcher whose own install was deleted no longer crashes on the spawn
error of the daemon it tried to start.
- `codegraph status` and `status --json` (filesNeedingReindex,
filesWithParseErrors) report indexed files whose symbols are missing
although their content is current (#2336), and `files --json` carries
each file's recorded errors.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(mcp): a session whose own install changed never claims the writer lock (#2335)
A daemon now exits once its install is upgraded or removed, and nobody
holds the writer slot for a successor at that point. Its sessions run the
same replaced code and serve themselves in-process the moment it goes; one
that found the slot free claimed it as its writer even though its engine
could not load (a real npm upgrade: "Cannot find module
'./sqlite-adapter'"), and so kept a daemon from the current install from
starting. Such a session now falls back read-only and says to restart it.
Also adds the CHANGELOG entries for the install check and grammar-load
failures (#2335) and for the status report (#2336).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>