Случаи, на которых мы потеряли время. Записаны, потому что через месяц никто не вспомнит, а ошибка повторится.
Что видели. Испорченные файлы в скачанных образах, сломанный системный python, падения инструментов с невнятными ошибками. Сутки искали изъяны в своём коде.
Что было на самом деле. Деградировавшая карта microSD в дешёвом картридере. Данные портились при записи и чтении, но никаких признаков неисправности система не подавала.
Урок. При необъяснимом падении инструмента сначала перекачать образ, потом искать ошибку в коде. И не держать рабочее хозяйство на машине, которая может тихо испортить что угодно.
Что видели. Агент падал шесть раз подряд с кодом -5. Проверка «claude отвечает?» показывала версию и говорила, что всё хорошо.
Что было. Испорченный при скачивании исполняемый файл: версию печатал, на настоящем запросе падал.
Урок. Живость проверяется настоящим запросом, а не показом версии.
Что видели. Мониторинг сообщил о недоступности ex-bazar, снаружи сайт тоже не открывался.
Что было. Сбой у серверов имён dinahosting, около сорока минут. Сайт работал всё это время и отвечал по адресу.
Как отличить. Could not resolve host — не разрешилось имя, до сервера дело не дошло. Если бы лежал сервер, была бы другая ошибка. Проверять стоит с нескольких независимых точек.
Побочная находка. У мака в настройках сети остался сервер имён из сети Robomarkt, доступный только через туннель. После отключения VPN он не вернулся к прежнему — и сайты не открывались уже по собственной причине, независимо от хостинга.
Что видели. Агент раз за разом сообщал «claude отчитался, но заявки нет».
Что было. В правилах devsystem значилось «на этапе каркаса пишем прямо в main» — агент честно так и делал, а обвязка ждала заявку. В другой раз агент отказывался работать, решив, что он в интерактивной сессии: формулировка правила это допускала.
Урок. Когда обвязка говорит, что работы нет, сперва посмотреть, что агенту вообще разрешено правилами.
Что видели. После обычного перезапуска агенты оказывались на версии двухдневной давности.
Что было. В настройках запуска у каждой службы указана запасная версия на случай, если переменная не задана. agentctl её задаёт, а docker compose up — нет.
Урок. Обновлять и перезапускать только через agentctl. Запасные версии держать в согласии с текущей.