NEXO 7.12.0 — Support snapshot lands and silent reminders stop talking alone
Published 2026-04-29. Minor release over v7.11.8 — adds a generic local runtime diagnostics bundle and closes the last live silent-reminder drift that could still leak orphan assistant text into Desktop.
Generic runtime diagnostics are now one command away
nexo support-snapshot packages the local runtime state that support/debugging work kept rebuilding manually: version and platform metadata, the presence of runtime/core/data/log/config paths, health-check output, and recent tails from event and operation logs. When deeper context is needed, --include-doctor adds the runtime doctor report too.
The silent-reminder contract now reaches the live Protocol Enforcer path too
The earlier 7.11.8 hardening fixed the canonical templates, but the live reminder source still had one remaining drift path: map-driven reminders coming from tool-enforcement-map.json could still carry the older one-line Do not produce visible text. copy. In practice, a model could execute the silent tool call and then append visible text such as Esperando... even though no new operator message had arrived.
What changed
tool-enforcement-map.jsonnow upgrades startup, smart-startup, heartbeat, reminders, diary, stop, task-close, and compaction prompts to the explicit whole-turn silence contract.src/enforcement_engine.pydefensively upgrades any legacy silent reminder before enqueueing it, so older wording cannot slip back in from a stale map entry.src/support_snapshot.pyandsrc/cli.pyadd the new local diagnostics command without crossing the open-source/commercial boundary.
Result
Support and debugging work now have one generic local snapshot command, and background reminder turns stop leaking orphan assistant continuations into Desktop when there is no fresh operator message.
Validation
pytest -q tests/test_support_snapshot.py tests/test_enforcement_silent_contract.py tests/test_tool_enforcement_map_silent_contract.py tests/test_enforcer_restart_required_gate.py
12 passed
Full changelog entry → · src/support_snapshot.py · src/enforcement_engine.py