systemd-restart-on-failure-misses-clean-idle-timeout-exits

Services with idle-timeout logic (e.g., brainstorm.service WebSocket server with 30-min auto-exit) exit cleanly with code 0. Restart=on-failure only restarts non-zero exits, so clean idle-timeout exits cause permanent service death. For always-on semantics, use Restart=always combined with RestartSec=5 to recover from both failure and clean idle exits.