некорректная проверка входных данных операциями
одной из причин некорректной работы операции перемешивания было то, что проверки текущей координаты были вынесены в overriden метод start(), что отключало штатное поведение -- запуск таймера таймаута в случае успешной проверки или вылета с ошибкой если ошибка
для этого есть метод begin() -> bool, который видимо был введен позже, и не у всех операций используется
надо определить start() у уровня AbstractSerialOperation как final и переделать у наследников использование begin()