resolve: хвост задачи собран в один агентский запуск
Архивация change и синк документации уходят одному агенту одним заданием: второй шаг читает то, что оставил первый, и платить дважды за сбор того же контекста незачем. Гейт после правок документов доводит тот же агент, вычитку языка зовёт сам doc-sync. Коммит и закрытие задачи остаются оркестратору — они необратимы для учёта. В обслуживании синк тоже ушёл агенту. Журнал — тема 75.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# 75. Хвост задачи — один агент: архивация и синк вместе (2026-08-23)
|
||||
|
||||
## Что было
|
||||
|
||||
Хвост сценария решения шёл четырьмя вызовами подряд: `opsx:archive`,
|
||||
`av-dev:doc-sync`, `av-dev-git:commit`, `av-dev:task-track`. Первые два —
|
||||
письменная работа, и оба уже уходили агентам ([тема 72](72-writing-delegated-to-agents.md)),
|
||||
но **разными запусками**: два задания, два возврата и пауза оркестратора между
|
||||
ними.
|
||||
|
||||
Замер по прогонам в проекте transcriber 22–23 августа: архивация 5 минут, синк
|
||||
документации 14 минут, паузы оркестратора между шагами хвоста — около 3 минут на
|
||||
прогон. В соседней сессии те же два шага, отданные одному агенту, заняли один
|
||||
запуск на 29 минут вместо двух.
|
||||
|
||||
## Решено
|
||||
|
||||
**Р287. Архивация и синк уходят одному агенту, одним запуском.** Второй шаг
|
||||
читает ровно то, что оставил первый: `opsx:archive` вливает дельты в актуальные
|
||||
спеки, `av-dev:doc-sync` сверяет с ними документы канона. Разнесённые по двум
|
||||
заданиям, они дважды платят за сбор одного и того же контекста.
|
||||
|
||||
**Р288. Порядок внутри задания назван, а не выведен.** Сначала `opsx:archive` с
|
||||
`openspec validate --strict` перед ним, затем `av-dev:doc-sync`. Синк по
|
||||
неархивированному change сверял бы документы с дельтами, которых в актуальных
|
||||
спеках ещё нет.
|
||||
|
||||
**Р289. Гейт после правок документов доводит до зелёного тот же агент.** Многие
|
||||
проекты проверяют документы гейтом, и красный гейт остановил бы коммит следующим
|
||||
шагом — то есть отказ обнаружился бы у оркестратора, которому чинить его нечем
|
||||
без второго задания.
|
||||
|
||||
**Р290. Коммит и закрытие задачи агенту не отдаются ни в одном сценарии.**
|
||||
Закрытие удаляет запись задачи и правит индексы, коммит уезжает в историю — оба
|
||||
необратимы для учёта. Оркестратор делает их сам, уже сверив план прогона с
|
||||
исходом; правило необратимого ([тема 72](72-writing-delegated-to-agents.md), Р268)
|
||||
остаётся в силе целиком.
|
||||
|
||||
**Р291. Чек-лист синка — единственное исключение из «возврат не длиннее экрана»**
|
||||
([тема 72](72-writing-delegated-to-agents.md), Р269). Он приходит целиком и целиком
|
||||
уезжает в доклад: тронутые документы поимённо, нетронутые — одной строкой с общей
|
||||
причиной. Сжатый своими словами, он теряет принуждённое отрицание, ради которого
|
||||
шаг и существует.
|
||||
|
||||
**Р292. В обслуживании синк тоже уходит агенту.** Там он главный шаг сценария и
|
||||
идёт без архивации — change у обслуживания нет по построению.
|
||||
|
||||
## Следствия
|
||||
|
||||
**С261. Требование принуждённого отрицания переехало в задание.** Раньше оно
|
||||
адресовалось оркестратору, который звал `doc-sync` сам; теперь его обязан нести
|
||||
текст задания — иначе возврат придёт перечнем тронутого, а тронутое без
|
||||
нетронутого неотличимо от невыполненного шага.
|
||||
|
||||
**С262. Вычитку языка отдельным запуском больше не зовут.** `av-dev:doc-sync`
|
||||
зовёт `doc-wording` сам, по пачке правленых документов; в задании она не
|
||||
называется, потому что правило живёт в том скилле.
|
||||
|
||||
**С263. Шагов в сценарии решения стало девять.** Архивация и синк слились в
|
||||
седьмой; коммит стал восьмым, закрытие задачи — девятым.
|
||||
Reference in New Issue
Block a user