Files
dev-skills/decisions/75-tail-in-one-agent.md
T
av b287cdf71f resolve: хвост задачи собран в один агентский запуск
Архивация change и синк документации уходят одному агенту одним заданием:
второй шаг читает то, что оставил первый, и платить дважды за сбор того же
контекста незачем. Гейт после правок документов доводит тот же агент, вычитку
языка зовёт сам doc-sync. Коммит и закрытие задачи остаются оркестратору —
они необратимы для учёта. В обслуживании синк тоже ушёл агенту. Журнал —
тема 75.
2026-08-23 15:29:03 +03:00

61 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Шагов в сценарии решения стало девять.** Архивация и синк слились в
седьмой; коммит стал восьмым, закрытие задачи — девятым.