При обновлении Khomenok Media 30 сентября скрипт сообщил, что файлы загружены, а затем завершился с ошибкой. Среди несовпадений оказались картинки для превью ссылок: их содержимое нужно было проверить отдельно. Этот разбор показывает, как принимали конкретный релиз с участием AI-агентов и какие доказательства потребовали вместо сообщения «готово».
Что вы получите
- Разобрать приёмку реального обновления с участием AI-агентов.
- Отличить дефект результата от ошибки способа проверки.
- Составить условия приёмки для своего AI-задания.
Что именно выпускали
В рассматриваемом обновлении появились четыре самостоятельные статьи, четыре CSV-шаблона, подборки по задачам читателя и поисковая разметка. Сборка содержала 260 публичных страниц, включая 213 страниц мероприятий. Утверждённую фотографию гостя и её кадрирование требовалось сохранить. Это границы одного релиза, а не текущий размер сайта навсегда.
Владелец медиа выбрал задачи и разрешил публикацию. AI-агенты готовили тексты, код и автоматические проверки; результаты отдельных исполнителей затем собирались в общий выпуск. Кейс не описывает независимую приёмку внешним аудитором. Завершение отдельной части ещё не подтверждало, что весь сайт обновлён.
Как разделили выполнение и приёмку
Для каждой части было мало проверить наличие файла. Статья должна была открываться по своему адресу, находиться через навигацию, иметь подходящие источники и не получать случайную ссылку на чужой подкаст. Шаблон должен был скачиваться нажатием кнопки, а не просто лежать в папке сборки. Новые страницы также требовалось включить в карту сайта и разрешённые маршруты аналитики.
Проверки выполнялись на нескольких уровнях. Сначала тесты кода и структуры, затем действия в браузере, после загрузки — обход публичных страниц и сравнение опубликованных файлов со сборкой. Эти проверки отвечают на разные вопросы. Правильный HTML не доказывает, что пользователь сможет нажать кнопку на телефоне. Работающая страница не доказывает, что на сервер попала последняя версия связанного скрипта.
Почему проверка превью завершилась ошибкой
Первая сверка требовала полного совпадения байтов. Для HTML, CSS и JavaScript это полезное требование: отличие может означать старую версию. Но у 30 PNG-превью двоичные данные после доставки отличались от локальных файлов. По одному этому результату нельзя было решить, повреждены изображения или изменилось только их представление внутри PNG.
Изображения загрузили повторно независимым HTTP-клиентом. Они открывались, имели размер 1200 × 630 и совпадали с исходниками по пикселям. Финальная проверка разрешила для PNG только одинаковые размеры и точное совпадение декодированных RGBA-значений, включая прозрачность. Изменённый пиксель, другой размер и HTML-страница ошибки вместо картинки по-прежнему приводят к отказу. Для остальных файлов осталось требование совпадения байтов.
Отдельно встретились устаревший ответ для robots.txt и временные ошибки запросов. Перед повторной записью файлов добавили чтение через другой HTTP-клиент. Это позволило проверить уже опубликованное содержимое, не принимая один неудачный сетевой ответ за доказательство неправильной сборки. Причину каждого промежуточного сетевого сбоя эти протоколы не устанавливают.
Какие результаты остались в протоколах
Основной тестовый запуск завершился результатом 43 passed и 7 subtests passed. В сохранённом локальном браузерном протоколе — 27 проверок новых страниц на ширинах 360, 390 и 1440 пикселей, реальные переходы по задачам, поиск и скачивание четырёх шаблонов. Отдельный регрессионный запуск проверил 24 сочетания существующих страниц и размеров экрана, включая главный экран с гостем.
После публикации полный обход проверил 260 страниц за 476 HTTP-запросов; списки обнаруженных ошибок и предупреждений в этом запуске пусты. Финальная сверка приняла 529 публичных файлов с оговорённым правилом для PNG. Число файлов включает ресурсы и не является числом страниц. Публичная сводка протоколов приложена к материалу.
Эти результаты относятся к указанной версии и выполненным сценариям. Они не доказывают отсутствие любых ошибок, удобство для каждого читателя или рост аудитории. Время работы людей, расходы на модели и коммерческий эффект здесь не измерялись, поэтому выводов об экономии и окупаемости в кейсе нет. Подключение Search Console также не вошло в подтверждённый результат: у существующего Google-доступа не было нужного разрешения.
Как перенести такую приёмку на свою задачу
До начала работы запишите, что именно должен получить пользователь и что нельзя повредить. Для внутреннего AI-процесса это может быть принятый документ, доступный только нужной группе, с верными исходными данными. Для сайта — опубликованный материал с рабочими ссылками и скачиванием. Формулировка «агент выполнил задачу» для приёмки слишком неопределённая.
Попросите исполнителя приложить проверяемые результаты к каждому условию: адрес страницы, результат теста, скачанный файл, сверку чисел. Проверяйте выбранные действия на рабочем сервисе, отдельно от тестового окружения. Запишите, какие сценарии не проверялись и какие зависимости остались недоступны. Не превращайте отсутствие доступа в отметку об успешном подключении.
Заранее определите допустимые преобразования. В этом релизе приняли только побайтово точный текст и код, а для PNG — точное совпадение пикселей. Для финансовой таблицы критерии будут другими: формулы, входные значения и сверка итогов. Послабление нужно обосновать конкретным свойством результата, а не желанием убрать красный статус проверки.
- Зафиксируйте результат для пользователя и неизменяемые части проекта.
- Разделите подтверждение исполнителя и проверку результата.
- Проверьте хотя бы один полный пользовательский сценарий на опубликованной версии.
- Повторно проверьте неожиданное несовпадение другим способом, прежде чем переписывать данные.
- Сохраните версию, протоколы, ограничения и возможность отката.
Что взять в работу
Для следующего AI-задания составьте короткий лист приёмки до запуска: результат, способ проверки, допустимое отклонение, запрет на изменение и условие остановки. В этом релизе готовность подтвердили опубликованные страницы, работающие действия и сверка файлов. Заявление агента о завершении использовалось только как повод начать проверку.
Практический чек-лист
- Опишите результат для пользователя и что нельзя менять.
- Запишите способ проверки каждого условия до запуска.
- Проверьте полный сценарий на опубликованной версии.
- Перепроверьте неожиданное несовпадение независимым способом.
- Сохраните протокол, ограничения и версию для отката.