NEXO 7.12.2 — automation routing now stays on the motor

Published 2026-04-30. Patch release over v7.12.1 — closes the remaining legacy paths that were still hardcoding or persisting model routing outside the resonance engine.

Legacy task profiles stop deciding model and effort

src/agent_runner.py no longer lets task_profile prefill backend, model, or reasoning effort before resonance resolution. In parallel, src/client_preferences.py now normalizes persisted automation_task_profiles back to empty routing fields, so an old schedule.json cannot keep acting as a silent second source of truth for automation model selection.

Email monitor now matches Deep Sleep and morning-agent

src/scripts/nexo-email-monitor.py stops passing and persisting its private automation_task_profile path. The email daemon now resolves exactly like the clean callers already did: caller id -> active backend -> resonance tier mapping -> concrete (model, effort).

Personal helpers stop injecting a stale default model

src/scripts/nexo_personal_automation.py no longer injects resolve_user_model() into every short text run. Personal scripts now leave model empty unless the operator explicitly overrides it, so their routing is driven by caller and optional tier instead of a helper-side default.

Runtime updates now scrub the last stale email override automatically

src/auto_update.py now removes the retired automation_task_profile field from legacy email runtime config during update. Existing installs therefore converge on the same caller-driven flow without manual cleanup.

Result

Email handling, personal text automation, and updated runtimes all converge on the same routing contract already used by Deep Sleep and morning-agent: caller/tier expresses intent, the selected backend comes from runtime preferences, and the motor resolves the concrete model and effort.

Validation

pytest -q tests/test_client_preferences.py tests/test_nexo_personal_automation.py tests/test_agent_runner.py tests/test_auto_update_cleanup.py tests/test_email_accounts.py tests/test_email_monitor_checkpoints.py tests/test_email_monitor_parser.py tests/test_nexo_agent_run_tier_flag.py

70 passed

Full changelog entry → · src/agent_runner.py · src/scripts/nexo-email-monitor.py · src/scripts/nexo_personal_automation.py