resolve: письмо вынесено агентам, журнал — тема 72

Спеки, код и правки по находкам ревью пишет отдельный агент: оркестратору
оставлены задание, возврат, чекпоинт, сверка плана с исходом и доклад.
Заведён раздел «Кто пишет» в SKILL.md, переписаны шаги 2, 4, 6, 7 решения и
шаги 2, 4 обслуживания, у разведки названо, почему исполнителей нет.
This commit is contained in:
av
2026-08-23 07:56:15 +03:00
parent e5dc0a1a39
commit 813345192d
7 changed files with 268 additions and 30 deletions
@@ -0,0 +1,89 @@
# 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)): версия нужна тогда, когда
меняется то, что уезжает в проект.