# 78. Хвост задачи: отражение молча, новое — по слову (2026-08-23) ## Что было Тема 77 привела ревью в соответствие с ролью агента: цикл проверяет корректность и механику, а суждение о замысле стоит там, где решает человек. **Хвост задачи остался прежним.** Шаг 6 писал в документы сам. Синк шёл по чек-листу из десяти строк с принуждённым отрицанием и по сработавшему триггеру заводил ADR, промоутил находку в конвенцию, писал в `research/`, `security.md`, `CLAUDE.md`, журнал дефектов. Человек узнавал об этом **постфактум** — строками чек-листа в докладе, который читают последним и по диагонали. Задачи из урожая ревью к этому времени уже заводились по слову (Р307), а документы — нет: одна и та же работа, «что из найденного переживёт задачу», решалась в двух разных режимах. Вопросов при этом выходило два — про урожай на шаге 5 и про документы на шаге 6, — то есть два переключения человека там, где решение одно. Отдельно стояла **сверка документов**. `av-dev:doc-healthcheck` зовут по наблюдаемому признаку «с прошлой сверки сделан десяток задач», но следа сверка не оставляла и задачи с тех пор не считал никто. Это ровно тот прозаический триггер, измеренная цена которого записана в самом же синке: у ADR такой триггер дал **6 записей на 43 изменения**. ## Решено **Р311. Правки в документы разделены по роду, и спрашивается один род.** Признак проверяемый: **что станет с документом, если правку не сделать**. Станет ложным — это **отражение**, и оно пишется молча. Появится запись или норма, которой не было, — это **новое**, и оно пишется только по слову человека. **Р312. Отражение — документы, описывающие состояние системы.** Это `openspec/specs/`, `database.md` и `architecture.md`. Остальной чек-лист — новое: `adr/`, `conventions/`, `research/`, `security.md`, `passport.md`, `CLAUDE.md` и журнал `review.md` задают норму или хранят память, и разойтись им не с чем, пока в них не написано новое. **Р313. Реплика человеку одна на весь хвост.** В ней и предложения синка, и урожай ревью; вопрос про урожай перенесён с шага 5 на шаг 6. Нового нет — реплики нет, и у большинства задач так и выходит. **Р314. Шаг 6 идёт в три такта, агент запускается в нём дважды.** Первый такт — `opsx:archive` и отражение; второй — реплика; третий — письмо одобренного и задачи из урожая. Вычитку `doc-wording` зовёт `av-dev:doc-sync` **последним тактом, в котором писал**: вернул непустой список предложений — вычитка ждёт третьего такта, список пуст — идёт в первом. **Р315. Конвенция — самое дорогое из нового, и в хвосте она только предлагается.** Её строка становится входом каждого следующего прогона ревью. Механизация правила (шаг 2 промоута: конфиг, сканер, приведение кода к зелёному) в хвост чужой задачи не помещается вовсе — это задача `chore`, заводимая тем же словом, что и сама конвенция. **Р316. Отвергнутое не пишется никуда.** Ни в один документ, ни отдельной записью «от такого-то отказались»: журнала отвергнутого канон не держит, и заведение его было бы ровно тем новым, которого человек только что не заказал. Отказ идёт строкой доклада. **Р317. «По слову» — это по слову, а не вторым вопросом.** Сказанное человеком в этом же прогоне повторно не спрашивается: решение сузить проверки принимает он по определению, ответ разведки одобрен чекпоинтом вариантов, прямая просьба «заведи ADR» и есть слово. Предложение существует ради нового, которое заметил агент. **Р318. Сверка документов оставляет след, а синк его считает.** След — ключ `[healthcheck] last` в `.av-dev.toml`, хеш коммита прошлого прогона; ставит его `av-dev:doc-healthcheck` последним шагом. Счёт — `git rev-list --count ..HEAD -- openspec/changes/archive`, то есть в задачах, доехавших до архива; без openspec считаются коммиты, и это говорится вслух. Строка доклада обязательна всегда, вариантов три: рано, пора, не сверялись ни разу. **Синк сверку не зовёт** — часы на неё тратит тот, кто их оплачивает. ## Следствия **С275. Плановых стопов в сценарии решения два, и оба про решения человека.** Чекпоинт шага 3 решает форму решения до кода, реплика шага 6 — что из найденного переживёт задачу. Между ними прогон идёт сам: инлайн чинится молча, отражение пишется молча. Третий стоп заводить нельзя — прогон, останавливающийся чаще, теряет то время, ради которого выбраны короткие итерации. **С276. Принуждённое отрицание сменило адресата, но не ослабло.** Каждый документ канона по-прежнему назван — правкой, предложением или отрицанием с причиной; изменилось то, что отрицание читает человек и читает его **до** того, как что-нибудь написано. **С277. Сценарий обслуживания почти не спрашивает.** Он двигает факты — команды, шаги гейта, зависимости поимённо, пути, числа настроек, — а факт, разошедшийся с кодом, это отражение по определению. Поводов для реплики у него два: новый запрет в `CLAUDE.md` и сужение проверок в `review.*`, причём второе не спрашивается по Р317. **С278. Признак «десяток задач» стал числом.** Ключ `.av-dev.toml` необязательный и заводится сам первым же прогоном сверки, поэтому версия раскладки не двигается и `upgrade` проектам не нужен. Отсутствие ключа читается однозначно: не сверялись ни разу. **С279. Журнал дефектов теперь зависит от ответа человека.** Запись воспроизведённого дефекта — новое, и молчаливого «да» у неё больше нет. Правило «пишется сразу» сохранено в другом виде: предложение делается **этим** прогоном, отложить его до «когда починим» нельзя ни с чьего согласия. Но человек вправе отказать, и тогда калибровка конвейера по этому дефекту не состоится — цена названа здесь, а не подразумевается. **С280. Отказ нигде не хранится, и похожее предложение придёт снова.** Это прямое следствие Р316 и сознательный размен: журнал отвергнутого сам стал бы каноном, который никто не заказывал. В `av-dev:code-deep-review` разбор устроен иначе — там отказ уезжает в `docs/review.md`, потому что прогон затевается ради разговора и его исход и есть артефакт. **С281. Хвост подорожал только на задачах, где что-то заводится.** Второй запуск агента идёт лишь после непустой реплики; задача без нового кончается первым тактом, и по цене хвост у неё прежний.