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

4.9 KiB
Raw Blame History

75. Хвост задачи — один агент: архивация и синк вместе (2026-08-23)

Что было

Хвост сценария решения шёл четырьмя вызовами подряд: opsx:archive, av-dev:doc-sync, av-dev-git:commit, av-dev:task-track. Первые два — письменная работа, и оба уже уходили агентам (тема 72), но разными запусками: два задания, два возврата и пауза оркестратора между ними.

Замер по прогонам в проекте 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, Р268) остаётся в силе целиком.

Р291. Чек-лист синка — единственное исключение из «возврат не длиннее экрана» (тема 72, Р269). Он приходит целиком и целиком уезжает в доклад: тронутые документы поимённо, нетронутые — одной строкой с общей причиной. Сжатый своими словами, он теряет принуждённое отрицание, ради которого шаг и существует.

Р292. В обслуживании синк тоже уходит агенту. Там он главный шаг сценария и идёт без архивации — change у обслуживания нет по построению.

Следствия

С261. Требование принуждённого отрицания переехало в задание. Раньше оно адресовалось оркестратору, который звал doc-sync сам; теперь его обязан нести текст задания — иначе возврат придёт перечнем тронутого, а тронутое без нетронутого неотличимо от невыполненного шага.

С262. Вычитку языка отдельным запуском больше не зовут. av-dev:doc-sync зовёт doc-wording сам, по пачке правленых документов; в задании она не называется, потому что правило живёт в том скилле.

С263. Шагов в сценарии решения стало девять. Архивация и синк слились в седьмой; коммит стал восьмым, закрытие задачи — девятым.