Архивация change и синк документации уходят одному агенту одним заданием: второй шаг читает то, что оставил первый, и платить дважды за сбор того же контекста незачем. Гейт после правок документов доводит тот же агент, вычитку языка зовёт сам doc-sync. Коммит и закрытие задачи остаются оркестратору — они необратимы для учёта. В обслуживании синк тоже ушёл агенту. Журнал — тема 75.
61 lines
4.9 KiB
Markdown
61 lines
4.9 KiB
Markdown
# 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. Шагов в сценарии решения стало девять.** Архивация и синк слились в
|
||
седьмой; коммит стал восьмым, закрытие задачи — девятым.
|