# 72. Письмо уходит агентам: оркестратор ставит задание и читает возврат (2026-08-22) ## Что было `code-resolve` вёл задачу и писал её сам. В одном контексте лежало всё: выбор сценария, вызов `opsx:propose`, разметка, ревью дизайна, чекпоинт, `opsx:apply`, правки по находкам триажа, сверка плана прогона с исходом и доклад. Конвейер ревью своё письмо давно отдал — проходы ходят агентами по уставам, — а письмо самого скилла не было вынесено никуда. Цена оказалась не в токенах, а в том, что вытесняется. Написание тянет в контекст содержимое тронутых файлов, вывод линтеров и гейта, перебранные варианты правки — всё то, чего в докладе не будет ни строкой. Вытесняются оттуда постановка, критерии приёмки и одобренное на чекпоинте, то есть ровно то, по чему оркестратор и обязан сверять исход. Вытесняются **молча**: доклад остаётся связным, а сверять его уже не с чем. ## Решено **Р265. Спеки, код и правки по находкам ревью пишет отдельный агент.** Оркестратор ставит задание и читает возврат. Перечень закрыт и перечислен в `code-resolve/SKILL.md`: предложение и дельта-спеки (`opsx:propose`), правки спек и дизайна по ревью дизайна, код (`opsx:apply` вместе с гейтом и поведенческой верификацией), правки по находкам триажа, помеченным `инлайн`, и правка оснастки в сценарии обслуживания. **Р266. Довод — контекст, а не разведённость, и путать их нельзя.** Агент пишет по заданию оркестратора и отвечает перед ним; разведён с автором тот, кто работу **судит**, — разметчик и проходы ревью ([тема 41](41-task-sizing-once.md)). Вынос письма не добавляет разведённости ни на грамм и не заменяет собой ни одну проверку. **Р267. Устава у этих агентов нет.** Уставом задаётся **суждение**: что искать и что считать находкой. Здесь суждения нет — работа нормирована скиллами `opsx:*`, конвенциями проекта и находками триажа, и устав стал бы вторым домом того же, разошёлся бы с ним молча. Зовётся агент общего назначения, а всё, чем один прогон отличается от другого, приходит заданием. **Р268. Задание самодостаточно и собирается адресами.** Агент не видел разговора: не знает ни постановки, ни сценария, ни того, что одобрено. Поэтому в задании лежат корень проекта, ветка и база диффа, постановка или её текст дословно, критерии приёмки, идентификатор change, что читать, границы правки и признак готовности — зелёный гейт, а при наблюдаемом поведении ещё и верификация. **Находки уходят дословно, вместе с оракулом**: пересказ теряет как раз оракул, агент чинит то, что понял, гейт зеленеет, а в отчёт уезжает «исправлено». **Р269. Возврат — не длиннее экрана, и диффа в нём нет.** Что сделано, адресами тронутого; исход гейта и чем он прогнан; что не удалось; вопросы, если по заданию их не разрешить. Возврат с диффом отменяет экономию в момент возврата — то есть делает вынос бессмысленным. **Р270. Возврату на слово не верят, и дифф за агентом для этого не перечитывают.** Верят независимым артефактам: зелёному гейту, отчёту триажа, ревью следующего шага. Основание то же, по которому конвейер не верит прозе прохода, — её написал тот, кто мог и пропустить. **Р271. Артефакты, написанные для человека, оркестратор читает сам.** `proposal.md` и `design.md` нужны ему на чекпоинте, и это его работа, а не переполнение контекста: они и написаны для того, кто спек не читал. **Р272. Разведка в перечень не попадает вовсе.** Её письмо — записка в документы канона и записи задач, то есть тот самый текст, из которого собираются чекпоинт вариантов и доклад. Отданный агенту, он вернулся бы пересказом — и пересказ пришлось бы держать в контексте вместо оригинала. **Р273. Правило про контекст, а не про полномочия.** Агент упал, вернул не то или не понял задания — задание повторяется с дописанным; не вышло и во второй раз, оркестратор делает сам и **говорит это строкой доклада**. Стопом это не является: прогон стоил дороже, чем должен, и это факт для человека. ## Следствия **С250. Доклад получил обязательную строку** — шаг письма, сделанный не агентом, с причиной. Иначе нарушение правила неотличимо от его соблюдения, а дороже всего здесь стоит именно молчаливый возврат к старому порядку. **С251. Нарезка — по шагу, а не по файлу.** Нарезка по файлам разводит одну правку по разным контекстам, и сходиться она будет в гейте, то есть после. Повторный проход того же шага — новое задание: агент прежнего не помнит. **С252. Состав гейта в обслуживании снимает оркестратор, и снимает до правки.** Сверка «до и после» уезжает в его доклад, а снятое тем же, кто правил, сверкой не является: агент вернёт получившийся состав и назовёт его исходным. **С253. Раскладка не повышалась.** Правило живёт в прозе плагина — в скилле `code-resolve` и его справочниках — и в скелеты, уезжающие в репозитории проектов, не попадает. Признак тот же, что у снятого «интейка» ([тема 71](71-language-model-popular-science.md)): версия нужна тогда, когда меняется то, что уезжает в проект.