The play/pause toggle ran its start-time checks (beamline state, busy, baton, maintenance) before the pause branch, so when running you could be blocked from pausing if the beamline was in the wrong state or busy. Handle the pause toggle first and return immediately (unconditional), and run the start-condition gates only when starting/resuming from paused. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>