NEXO 7.2.0 — Guardian active by default: G1 enforcer + G3 SSH wrapper + persist hard + F0.6 hardening + adaptive empirical

Published 2026-04-22. Minor release over v7.1.10.

v7.2.0 consolidates three parallel workstreams into a single Guardian-active-by-default train. Every non-ephemeral install gets Guardian in hard mode automatically on the next nexo update — no env vars, no manual activation, no per-install script. The three batches landed via stacked PRs (#261 F0.6 hardening, #258+#259+#260 B8/B9/B10/B11 small fixes + path-constants lazy, #262 G1/G3/G5/persist) and all passed CI end-to-end.

Block K — Guardian roadmap closure

F0.6 hardening

B10 — module-level path constants lazy-evaluated

Four files migrated so monkeypatch.setenv(NEXO_HOME) works mid-run instead of snapshotting at import: src/public_contribution.py, src/tools_sessions.py, src/plugins/recover.py, src/plugins/update.py. PEP 562 __getattr__ keeps legacy attribute access working; the three runtime_root: Path = NEXO_HOME default-argument bugs in update.py are fixed explicitly (the default becomes None + resolve in body). Followup NF-B10-UPDATE-PY-LAZY-CALLSITES-COSMETIC tracks the 77 cosmetic callsites for v7.3.

Small fixes

Release discipline

Pending

Migration

Run nexo update. Everything else happens automatically:

Desktop

NEXO Desktop v0.22.6 remains compatible with Brain v7.2.0 and is not bumped in this release — the MCP external contract did not change. Desktop bumps when its own D-block lands in a future release.

Verification

Full Brain pytest suite green on main post-merge. scripts/verify_release_readiness.py --ci green. scripts/verify_client_parity.py 179 tests + docs + parity passed. All five PRs (#261, #258, #259, #260, #262) passed their own CI end-to-end before squash-merge.