CI for csaxs_bec / test (push) Successful in 1m52s
A Ctrl+C during lsamrot/fsamroy/osamroy rotation leaves the cached user_setpoint at the target even though the axis never finished moving (stop() halts the motor mid-move). The next scan then wrongly concluded "no rotation required" from setpoint equality alone, leaving LamNI's air bearings unclamped (confirmed via galil show all) and the beamline unable to scan until the setpoint was nudged manually. lamni_rotation() now also requires lgalil_is_air_off_and_orchestra_enabled() before skipping, since that flag only goes true once the Galil #CENROT sequence (air-clamp plus centering) has fully completed. flomni_rotation()/omny_rotation() use a readback-vs-tolerance check instead, since those axes have no air-bearing clamp step. Along the way, fixed lgalil_is_air_off_and_orchestra_enabled() itself: it did bool(socket_put_and_receive(...)) directly on the raw Galil reply string, which is always truthy, so it could never report anything but True. Confirmed via HW testing in LamNI.