Harness engineering: ты же сам проверил, утвердил и пропустил дальше

Почему тот, кто делал работу, не может её принять: гейт между проходами, промпты для проверяющего и честная цена цепочки.

Агент, который писал текст, сам поставил ему «принято». Все пункты чек-листа были закрыты, статус в шапке стоял правильный. На следующий день я прочитал и отклонил работу целиком. С кодом всё устроено ровно так же: тот же агент пишет и проверяет. Спорить пришлось не про сам файл, а про проверку. Автор и проверяющий были одним агентом с одной инструкцией, поэтому агент закрывал чек-лист и пропускал результат дальше. Формально всё сходилось. По сути проверки не было. Harness — это обвязка вокруг модели: правила, роли, права на запись, журнал прогонов. Не текст запроса, а то, что стоит вокруг него. Я разбираю эту обвязку по частям, и здесь речь про одну часть, которая называется гейтом. Дальше я буду говорить не «агент», а проход , потому что важно не то, сколько у вас окон чата, а сколько раз работа проходит через модель со своей инструкцией. Проходов три. Управляющий раздаёт задачи и ветвится по вердикту. Исполняющий правит рабочие файлы. Проверяющий читает только переданные пути и пишет вердикт. Контур одинаков для кода, документа и конфига. Субагенты за последний год стали штатным механизмом в Cursor, Claude Code и Codex. Разводить проходы при этом почти никто не разводит, и получается, что один и тот же чат делает работу и он же объявляет её готовой. Ломается в такой конструкции три вещи. Вердикт ставит тот, кто делал. Факт между шагами живёт в переписке, поэтому следующий проход узнаёт о нём с чужих слов. Два прохода правят один файл, потому что зоны никто не разделил.…