Один gate вместо трёх списков команд: репозиторий, в котором агент не спорит с CI
Автор перебрал четыре репозитория MLOps Coding Course специально под работу AI-агентов: удалил больше 900 строк конфигов и glue-кода, а статических проверок стало вдвое больше, с четырёх до восьми, и покрытие тестами вышло на 100%. Полезно, если агент у вас уже коммитит: он читает репозиторий целиком и запускает команды неинтерактивно, поэтому любое расхождение между локальными хуками, CI и инструкциями превращается в круги «локально зелено, в CI красно».
- Дублирование команд — главный источник путаницы. В аудите нашли, что второстепенные списки в CI потеряли mise run build, а bake-тест Cookiecutter выполнял все сгенерированные задачи, кроме pytest: шаблон уезжал с CI, который ни разу не прогнал собственные тесты.
- Лечится одним именованным gate: задача mise run all (format → check → test → build), которую вызывают git-хуки на lefthook, GitHub Actions и AGENTS.md. Список шагов может потерять шаг, именованный gate — нет. CI дополнительно проверяет, что рабочее дерево осталось байт-чистым.
- Проза не исполняется: семь вендоренных agent skill-файлов разъехались с апстримом на 183 строки, один всё ещё учил агентов запускать just и pre-commit, удалённые из репозитория месяцами раньше. AGENTS.md задаёт намерение, корректность держат типы, тесты и линтеры.
- Состояние БД в тестах: переход MlflowService на sqlite:///mlflow.db с миграциями для каждого изолированного теста раздул прогон с 34 до 339 секунд. Session-scoped шаблон БД плюс файловое копирование срезали накладные расходы примерно на 60% и оставили тесты на настоящей схеме.
- Через месяц после тега v5.0.0 связка trivy и govulncheck показала 25 уязвимостей в транзитивных зависимостях MLflow. Вместо подавления сканера — явный override-dependencies = ["cryptography>=50"] в pyproject.toml, проверенный в обе стороны: с override прогон и деплой зелёные, без него аудит обязан падать.
- Свести все проверки в одну задачу-gate (mise run all, just all или цель в Makefile) и переписать хуки, workflow в CI и AGENTS.md так, чтобы они вызывали именно её.
- Добавить проверку, что каждая команда, путь и версия инструмента, упомянутые в AGENTS.md и в agent-skills, существуют в репозитории; вендоренные копии удалить в пользу ссылок на источник.
- Если тесты трогают локальную БД, прогнать миграции один раз в session-scoped фикстуру и копировать готовый файл в tmp-каталог для каждого теста.
- Метрика: длительность полного gate и доля агентских попыток, проходящих его с первого раза. У автора полный прогон занимает 1,5–3,5 минуты на восьми сканерах, поэтому быстрые линтеры живут в pre-commit, а полные — в pre-push и CI.