Тимлід відкриває пул-реквест і спершу читає довгий коментар моделі. Місяць тому компанія купила ліцензію ШІ на кожного розробника або ввімкнула такого рев’юера відразу в усіх репозиторіях. За цей місяць ніхто не записав, чи швидше доходить перше людське рев’ю, чи менше багів команда ловить після релізу, чи менше тікетів повертається через порожні критерії. Розробники закривають коментар, не читаючи його. Тимлід усе одно витрачає на цей текст час, який раніше йшов на саму зміну в коді.

Поруч уже стався гостріший випадок. Хтось вставив у чат вендора пароль від бази, токен доступу і лист клієнта, бо так швидше було пояснити баг. Згенерований тест викликає функцію і очікує значення, яке вона повертає зараз, разом із помилкою. Збірка лишається зеленою. Компанія рахунок за ліцензії вже оплатила, а на планерці тимлід інших цифр не називає.

Де береться шум, якщо ліцензію вже купили

Команда поставила модель поруч із процесом, а не всередину одного етапу. У команди вже є тікет із критеріями приймання, пул-реквест, рев’ю за власним чек-листом, тести на змінений код, нотатки до релізу і тег. ШІ не отримав жодної з цих ролей. Команда сказала моделі просто допомагати, і модель почала переписувати тікет, коментувати назви й додавати тести, які нічого не ловлять.

Команда не назвала власника цього кроку. Коли коментар хибний, ніхто не міняє правило, за яким модель його написала. Розробник бачить, що частина порад порожня, і перестає читати всі підряд. У цій купі губиться і той коментар, який справді вказував на пропущений пункт чек-листа.

Базових чисел до покупки теж ніхто не зняв. Час до першого рев’ю, баги за тиждень після релізу і повернені тікети можна було порахувати ще до ліцензій. Тимлід їх не записав, тож через місяць він порівнює результат лише з відчуттям, що тексту стало більше.

Промпт і налаштування лежать у браузері однієї людини або в її приватній нотатці. Новий розробник цей файл не бачить, бо файла немає. Тимлід не може прийняти зміну промпта так само, як зміну в збірці.

Окремо команда бачить зелену перевірку, хоча модель промовчала. Цей випадок розібрано в матеріалі коли перевірка ШІ в запиті на злиття пропускає помилки, і тут той механізм не повторюється. Людина все одно має прочитати шлях, куди зайде зміна: про це десять ознак, що сайту потрібен розбір коду.

Один етап, один репозиторій, два-чотири тижні

Тимлід обирає один етап, де біль уже видно, і до кінця пілота не чіпає решту. Кандидатів чотири, у роботу береться один. Критерії приймання в тікеті: модель пропонує рядки, людина з команди затверджує ті, що лишаються. Рев’ю пул-реквеста за чек-листом, який команда вже має: модель називає пункт, якого немає в зміні, і не вигадує новий список. Пропуски в тестах на зміненому коді: модель називає гілку або випадок без тесту і не комітить тест, який лише повторює поточне значення функції. Нотатки до релізу: модель збирає чернетку із закритих тікетів, автор релізу править текст до публікації.

До старту в репозиторій лягають три речення, які команда може прочитати вголос. Що крок робить: у цьому репозиторії перевірка перелічує пункти чек-листа, яких немає в зміні. Чого вона не робить: не схвалює пул-реквест, не переписує тікет і не чіпляється до назв. Хто затверджує: автор закриває справжній пропуск, або рев’юер пише, що позначка хибна, і ставить своє ім’я та дату.

У той самий файл команда пише, що модель має право бачити. Код пілотного репозиторію і текст тікета. Не бойову базу, не листи клієнтів, не паролі від бази і не токени доступу. Репозиторії поза пілотом у цей список не входять. Якщо для промпта потрібен рядок із лога, розробник вирізає секрети до того, як рядок піде з його машини. Розробник не вставляє дамп із бою в чат вендора, навіть якщо хоче зробити це лише один раз.

Пілот триває два-чотири тижні і лише на цьому репозиторії. У перший понеділок ту саму перевірку не вмикають на всіх сервісах. Другий репозиторій стане окремим пілотом тоді, коли в першого з’являться цифри, а не тоді, коли прийде наступний рахунок.

Цифри тимлід знімає в день старту і в день кінця, одні й ті самі. Скільки пул-реквест чекає на перше людське рев’ю. Скільки багів команда знайшла за тиждень після релізу в цьому репозиторії. Скільки тікетів повернули через порожній критерій приймання або пропущений пункт чек-листа. Якщо жодна цифра не зрушила, крок вимикають або звужують те, що моделі дозволено казати. Другий етап заради того, щоб ліцензія «окупилась», не відкривають.

Промпт, чек-лист, який бачить модель, і налаштування перевірки лежать у репозиторії під версіями, поруч із кодом, який вони судять. Зміна промпта йде окремим пул-реквестом із автором. Розробник, який прийде наступного місяця, читає той самий файл, що й модель. Промпт, який живе лише в чужому чаті, тимлід не може ні переглянути, ні відкотити.

Перевірка або зупиняє злиття, коли модель не відповіла чи знайшла названий пропуск, або в самому коментарі написано, що це порада і злиття вона не блокує. Зелений значок на помилці моделі команда не називає контролем якості. Як зібрати перевірку, яка не пропускає мовчання моделі, описано в сусідньому матеріалі, і цей текст туди не заходить. Наступний етап стартує лише після того, як одна цифра зрушила і люди досі читають позначки. Ліцензії для тих, хто не чіпає пілотний репозиторій, чекають, поки другий репозиторій повторить результат.

Що лишається після однієї зустрічі

За одну зустріч спеціаліст розкладає шлях, яким зміна вже йде від тікета до тега, і разом із тимлідом обирає перший етап за конкретним болем, а не за меню вендора. Спеціаліст записує на одну сторінку етап, три правила, список даних, які моделі можна показувати, назву репозиторію, дати пілота і цифри, які порівняють у кінці. На тій самій зустрічі першу перевірку можна покласти в репозиторій: промпт у файлі, а завдання або зупиняє злиття, або прямо підписане як порада.

Ця сторінка і є план впровадження. Це не новий продукт і не чат на сайті. Послуги закривають такий прохід по коду, який команда вже випускає. Перед тим як відкривати другий етап впровадження, варто почати з технічного аудиту та рев'ю коду вашого робочого репозиторію. Роботи лишають кожен результат біля своєї операції. Якщо потрібна ця сторінка, надішліть етап, який болить, чек-лист, яким команда вже користується, і чи вміє поточна перевірка ШІ зупинити злиття. Паролі, токени доступу і дані клієнтів у лист не кладіть.