The spawnSync parent had no signal handlers, so SIGINT killed it immediately while the supervisor kept running in the background. The shell prompt came back before the daemon had actually drained. Install no-op SIGINT/SIGTERM handlers so spawnSync waits for the supervisor's graceful exit.