NEXO 7.20.1 — local memory service recovery
Published 2026-05-12. Patch release over v7.20.0.
Why this release exists
The Local Context service must behave like a resident memory worker: if one cycle crashes or a process disappears, the next cycle must recover automatically. v7.20.1 fixes a real-world stall where a repeated cycle error was followed by an orphaned lock, leaving the Desktop Local Memory panel apparently alive but no longer advancing.
What changed
- Dead lock recovery. The service now checks whether the PID in
local-index.lockis still alive and removes the lock immediately when the process is gone. - Version-mix fallback. If the service entrypoint loads an older API that does not accept live-reconcile limits, it falls back to the older
run_once(limit, process_limit)call instead of failing every minute. - Visible diagnostics. Unrecovered service-cycle failures now appear in local-memory status until a later cycle succeeds, while normal users still see non-technical recovery language.
Validation
python3 -m pytest tests/test_local_index_service_runtime.py \
tests/test_local_context.py::test_live_reconcile_marks_deleted_file_without_full_rescan \
tests/test_local_context.py::test_live_reconcile_discovers_new_file_in_known_directory \
tests/test_local_context.py::test_default_roots_add_new_mounted_volumes_incrementally \
tests/test_local_context_cli.py::test_local_context_cli_indexes_and_queries -q
# 8 passed