61ac314d59
process.exit стоял внутри try, а снятие замка — в finally. Выход обрывает процесс немедленно, и до finally дело не доходило никогда. Замок оставался лежать после каждого удачного прохода, и следующие полчаса и run.js, и keepalive.js молча уходили со словами «робот уже работает»: задание клиента ждало в очереди, а в журнале при этом всё выглядело благополучно. Молчаливый сбой того же класса — «успех» без работы. Ни один из 80 тестов этого не видел: проверялись модуль замка и проход по отдельности, а дыра была ровно в шве между ними. Новый тест bin-lock.test.js запускает bin/run.js настоящим процессом ДВАЖДЫ подряд против портала-обманки: одиночный запуск эту дыру не показывает. Тест сначала упал на обоих утверждениях, после починки зелёный. Было 80 тестов, стало 82. Проверено живьём на рендер-виртуалке: после прохода за заданием и после захода в кабинет замок снят. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>