NEXO 7.11.5 — Desktop-managed installs now block the standalone dashboard cleanly

Published 2026-04-28. Patch release over v7.11.4 — same feature set, but one live-runtime contract contradiction removed.

What broke after v7.11.4

v7.11.4 repaired the packaged-runtime parity gaps and then the live runtime exposed one more bug during final validation. The product had two incompatible opinions about the standalone dashboard LaunchAgent on Desktop-managed installs:

The result was a loop with no stable state. If you repaired the install drift by removing the standalone dashboard LaunchAgent, the watchdog failed because it still expected dashboard. If you refreshed the runtime to satisfy the watchdog, the standalone dashboard came back and installation_live degraded again.

The fix

The contract now closes at the product-mode layer itself:

DESKTOP_DISABLED_FEATURES = ("evolution", "dashboard")

def is_cron_blocked(cron_id):
    return clean in DESKTOP_DISABLED_FEATURES and desktop_product_requested()

Before this patch, is_cron_blocked() was effectively a one-off cron_id == "evolution" check. That meant every caller that trusted product-mode — cron sync, watchdog monitor generation, and any manifest filtering path — still saw dashboard as active even though the install doctor said the opposite. v7.11.5 adds dashboard to the same disabled-features contract that already governed evolution, so Desktop-managed installs now have one consistent answer:

Why this is a product fix, not a local workaround

The tempting workaround was to edit the installed runtime by hand or just leave whichever warning looked less bad. That would have been the wrong layer. The contradiction lived in product code, so the fix belongs in the repo, then in a validated release, then in a supported runtime refresh. v7.11.5 is exactly that follow-up patch.

Validation

Targeted regression coverage for the contract change:

pytest -q tests/test_product_mode.py tests/test_cron_sync.py tests/test_doctor.py

125 passed

The full release wrapper also stayed green after the follow-up patch:

scripts/pre-release-verify.sh --release v7.11.5

2321 passed, 2 skipped, 1 xfailed, 4 xpassed

Operational result

On a Desktop-managed host, a runtime refreshed to v7.11.5 no longer oscillates between an installation_live warning and a watchdog FAIL over com.nexo.dashboard. The dashboard contract is stable again.

Full changelog entry → · src/product_mode.py · tests/test_product_mode.py