NEXO 7.15.1 — runtime audit cleanup and morning briefing locks

Published 2026-05-07. Patch release over v7.15.0 — closes deploy and runtime gaps found after the shared Brain/Desktop audit.

Self-audit drains real backlog volume

The daily self-audit no longer processes only five repeated or loose clusters per pass. Prevention and formalization loops now use a shared batch limit of 50, with a regression test pinning every relevant cap.

Hook history is bounded on update and during use

hook_runs retention now compares numeric timestamps and trims old rows plus excess history. The update migration applies the same cleanup so existing installations converge without manual database work.

Codex startup reads stop looking like drift

Normal pre-startup reads of NEXO calibration and project atlas files are ignored by runtime discipline checks. Real untracked work remains visible, but healthy Codex bootstraps stop creating false diagnostic noise.

Email and morning automations use product-level routing

The email monitor now selects its automation tier from message complexity instead of treating every email as high effort. Morning briefings use an atomic lock by local date and recipient, so scheduler and daemon paths cannot race into duplicate sends.

Validation

python3 -m pytest -q
python3 -m py_compile src/hook_observability.py src/db/_schema.py src/doctor/providers/runtime.py src/script_registry.py src/cli.py src/scripts/nexo-email-monitor.py src/scripts/nexo-morning-agent.py src/scripts/nexo-daily-self-audit.py
python3 scripts/verify_release_readiness.py

Full changelog entry → · Previous v7.15.0 release