{"schema_version":"1.0","service":"Publicasta","type":"article","id":283,"slug":"ai_coding_acceptance_gates_not_eye_review_2026_08_08","title":"Хватит читать AI-код как человеческий линтер. Сначала пишите гейт приёмки","excerpt":"AI-кодинг работает лучше, когда человек заранее задаёт критерии, тесты, ограничения данных и правила остановки, а не героически читает огромный diff глазами.","language":"ru","default_language":"en","canonical_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ru","image":{"url":"https://publicasta.com/storage/projects/8/pages/283/2026/08/f8f1b237-db52-4517-9d9b-e5caecca4ab7.webp","alt":"Рабочий процесс AI-кодинга: критерии приёмки, автотесты и проверки CI"},"publisher":{"id":8,"slug":"ai_practice","name":"AI-практика","url":"https://publicasta.com/ai_practice"},"author":{"name":"Anton R"},"published_at":"2026-08-10T11:12:04+00:00","updated_at":"2026-08-10T11:12:04+00:00","content_markdown":"![Рабочий процесс AI-кодинга: критерии приёмки, автотесты и проверки CI](https://publicasta.com/storage/projects/8/pages/283/2026/08/f8f1b237-db52-4517-9d9b-e5caecca4ab7.webp)\n\n Главная проблема AI-кодинга не в том, что модель пишет слишком быстро. Проблема в том, что команды часто проверяют этот быстрый вывод самым медленным способом: уставший разработчик после генерации смотрит на большой diff глазами и пытается почувствовать контроль. Это выглядит ответственно, но слабее, чем короткий контракт приёмки, написанный до запуска ассистента.\n\n Ревью нужно не отменять, а перемещать туда, где человеческое внимание сильнее. Человек хорошо формулирует поведение, запреты, границы доступа, риски миграции и критерии успеха. Человек плохо симулирует в голове все ветки, гонки, права и ошибки состояния в красиво отформатированном AI-коде. Ровный стиль не доказывает правильную архитектуру.\n\n Практический порядок такой: сначала work order, потом генерация. В нём должны быть цель, разрешённая область изменений, non-goals, критерии приёмки, негативные кейсы, команды проверки и условия остановки. Например, не “сделай JWT login”, а “оставь текущий hashing-сервис, не меняй схему без указанной миграции, отклоняй disabled users, ротируй refresh tokens, проверь replay, rate limit и audit events”. Такой запрос длиннее, зато снимает двусмысленность.\n\n Именно к этому подталкивают современные инструменты. Материалы Anthropic по Claude Code говорят о контексте проекта, инструкциях репозитория и контролируемом запуске команд. Документация GitHub Copilot coding agent описывает работу от issue к pull request, журналы выполнения и человеческое утверждение. Руководства OpenAI по Codex и prompting подчёркивают цели, ограничения и проверку результата. Общий вывод простой: агенту нужна не просьба, а проверяемое задание.\n\n Здесь есть культурная ловушка. В IT долго ценились видимые действия: печатать код, строго смотреть PR, оставлять замечания. А формулирование критериев выглядит как “бумажка”, хотя именно оно теперь часто и есть инженерная работа. Инвариант “заблокированный пользователь не может обновить токен через старую cookie” ценнее, чем ручное чтение helper-функции, которая этот случай пропустила.\n\n Есть и кризис идентичности. Если раньше код был главным символом мастерства, то AI забирает часть рутинной реализации. Роль инженера смещается к декомпозиции, контрактам, тестам, границам доступа и rollback-плану. Это не менее техническая работа. Наоборот, она ближе к ответственности за систему.\n\n Гейты должны быть исполняемыми. Unit-тесты ловят локальную логику, интеграционные тесты — границы, типизация и lint — рутину, security scan — типовые зависимости. Ручный чек-лист нужен для того, что машина видит хуже: продуктовый смысл, приватность, стоимость поддержки, миграционные последствия и возможность отката.\n\n Безопасность нельзя оставлять “на потом”. В промпты легко попадают куски логов, production-похожие данные, секреты или внутренние правила. Команда должна понимать retention, обучение на данных, права инструмента и границы репозитория. В контракте стоит явно писать: не использовать реальные customer records, не добавлять телеметрию без review, не расширять permissions без причины, не вставлять secrets в примеры.\n\n Кому это подходит? Командам, которые уже дают Copilot, Claude Code, Codex или похожим агентам реальные задачи: backend, auth, billing, внутренние панели, миграции, API. Кому лучше притормозить? Командам без тестов, без staging, без политики данных и без rollback. Для них первым AI-проектом должен стать не новый feature, а сама система проверки.\n\n Итоговый сдвиг болезненный, но полезный: разработчик перестаёт быть человеческим линтером для машины. Он становится автором ограничений, по которым система доказывает изменение. Код по-прежнему важен, но в AI-процессе ценность создаёт не количество прочитанных строк, а ясность контракта и качество гейтов.\n\n Хорошая командная привычка — просить ассистента сначала доказать самый рискованный тезис. Если изменение зависит от прав доступа, пусть сначала появится падающий тест. Если от производительности — команда бенчмарка и бюджет. Если от внешнего API — мок отказа, retry-правило и сценарий деградации. Это не бюрократия, а способ не разбирать потом уверенный diff, в котором не задан главный вопрос.\n\n Такой подход хорошо сочетается с обычным review. Разработчик всё равно смотрит архитектуру, читает важные участки и оценивает поддержку. Но он делает это после того, как система уже проверила механические вещи. Меньше театра занятости, больше инженерной ответственности.\n\n Минимальный шаблон можно хранить прямо в issue: цель, scope, запреты, критерии, негативные случаи, команды проверки, владелец review и rollback. Через несколько недель он становится общей привычкой. Новые участники быстрее понимают, что можно поручать агенту, а что требует архитектурного разговора. Старшие разработчики меньше тратят силы на косметику и больше — на реальные границы системы.","available_translations":[{"language":"ar","title":"لا تقرأ كود AI كأنك linter بشري: اكتب بوابة القبول أولاً","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ar","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=ar","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=ar","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ar"},{"language":"de","title":"Lies KI-Code nicht wie ein menschlicher Linter: Schreibe zuerst das Abnahme-Gate","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=de","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=de","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=de","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=de"},{"language":"en","title":"Stop reading AI code like a human linter. Write the acceptance gate first","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=en","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=en","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=en","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=en"},{"language":"es","title":"Deja de leer código de IA como un linter humano: escribe primero el gate de aceptación","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=es","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=es","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=es","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=es"},{"language":"fr","title":"Arrêtez de lire le code IA comme un linter humain: écrivez d’abord le gate d’acceptation","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=fr","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=fr","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=fr","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=fr"},{"language":"pl","title":"Nie czytaj kodu AI jak ludzki linter. Najpierw napisz bramkę akceptacji","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=pl","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=pl","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=pl","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=pl"},{"language":"ru","title":"Хватит читать AI-код как человеческий линтер. Сначала пишите гейт приёмки","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ru","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=ru","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=ru","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ru"},{"language":"zh","title":"别把 AI 代码当成人肉 linter 来读：先写验收 gate","html_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=zh","markdown_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=zh","json_url":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=zh","api_url":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=zh"}],"_links":{"self":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=ru","api":"https://publicasta.com/api/public/v1/channels/ai_practice/articles/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ru","html":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ru","canonical":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08?lang=ru","markdown":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.md?lang=ru","json":"https://publicasta.com/ai_practice/ai_coding_acceptance_gates_not_eye_review_2026_08_08.json?lang=ru","channel":"https://publicasta.com/api/public/v1/channels/ai_practice","channel_articles":"https://publicasta.com/api/public/v1/channels/ai_practice/articles","search":"https://publicasta.com/api/public/v1/search","documentation":"https://publicasta.com/api-docs#reading-publicasta","openapi":"https://publicasta.com/api-docs/openapi.json","llms":"https://publicasta.com/llms.txt"}}