Problem
On Linux, rerunning install-opencode-marmot.sh overwrites the binaries and service units, runs systemctl --user daemon-reload, then calls systemctl --user enable --now. enable --now starts an inactive unit but does not restart an already-active one.
An existing wn-opencode/wn-agent process therefore keeps running the old executable and old environment after an apparent successful upgrade. This is visible in #830 because a rerun writes the new idle/total timeout environment while the active harness can continue using the old 300-second behavior until manual restart or reboot. The macOS path already bootouts and bootstraps its LaunchAgent.
Expected behavior
After installing/updating and reloading units, restart active systemd user services (while preserving the explicit no-start options). Add an installer test that distinguishes a fresh enable/start from an active-service upgrade.
Scope note
Found while reviewing #830. The upgrade lifecycle bug predates that PR and affects all installer-delivered changes.
Problem
On Linux, rerunning
install-opencode-marmot.shoverwrites the binaries and service units, runssystemctl --user daemon-reload, then callssystemctl --user enable --now.enable --nowstarts an inactive unit but does not restart an already-active one.An existing
wn-opencode/wn-agentprocess therefore keeps running the old executable and old environment after an apparent successful upgrade. This is visible in #830 because a rerun writes the new idle/total timeout environment while the active harness can continue using the old 300-second behavior until manual restart or reboot. The macOS path already bootouts and bootstraps its LaunchAgent.Expected behavior
After installing/updating and reloading units, restart active systemd user services (while preserving the explicit no-start options). Add an installer test that distinguishes a fresh enable/start from an active-service upgrade.
Scope note
Found while reviewing #830. The upgrade lifecycle bug predates that PR and affects all installer-delivered changes.