NEXO 7.9.21 — LaunchAgent repair race hardening

Published 2026-04-24. Patch release over v7.9.20.

v7.9.21 closes the installed-runtime gap found while validating v7.9.20 on a live Mac. The product had synced the correct LaunchAgent plist, but a follow-up repair could still call launchctl bootstrap while macOS considered the job already loaded, producing the generic Bootstrap failed: 5 error.

What is fixed

LaunchAgent reload now boots out jobs by label and plist path, then bootstraps the expected plist. If macOS still reports an already-loaded race, NEXO verifies that launchd is actually serving the expected plist before treating the repair as successful. If modern bootstrap fails for a real reason, the updater falls back to legacy launchctl load -w and reports the concrete failure.

Why it matters

This is the fleet-safety layer behind self-healing updates. A customer install should not need manual launchd cleanup just because a previous sync already loaded the correct job. At the same time, NEXO must not hide real failures by blindly accepting any bootstrap error.

Verification

Regression coverage includes runtime power LaunchAgent reload behavior, doctor repair, and update reload tests. Release validation also runs release artifact sync before publication.

Full changelog entry →