systemctl stop/restart send SIGTERM, whose default disposition kills the process immediately - skipping the shutdown finally: block that cancels tasks and forces both actors safe via their activate(False). Route SIGTERM through the same KeyboardInterrupt path SIGINT already uses, and add stirrer.activate(False) alongside the existing heater.close() as a belt-and-suspenders fallback. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TvgC7oy9MxaA4ZQxXqkNdS