хвосты после снятия спринтов: четыре штуки

resolve судил готовность записи глазами — текст писался до того, как
появилась команда ready. Теперь зовёт её через av-dev-tasks:tasks, а
отказ читает исходом «не доведена». Это ровно тот случай, где машина
дешевле и точнее, а цена ошибки отложенная.

canon.md всё ещё говорил, что невзятой запись делает sprint take.

REMAINING перечислял три опоры против совпадения приёмщика с
исполнителем, включая SPRINT.md под git. Опор осталось две, и третья не
заменилась, а исчезла: у приёмки больше нет момента. Записано как есть.

frontmatter.py: устаревший путь review-pipeline/SKILL.md в комментарии.

В план добавлена дыра, которую открыло снятие сессии: двух агентов
канона на живом проекте больше не зовёт никто, кроме adopt и upgrade.
This commit is contained in:
av
2026-08-09 16:53:20 +03:00
parent 4a56753f0b
commit df5af47dc3
5 changed files with 30 additions and 15 deletions
+8 -4
View File
@@ -121,10 +121,14 @@ check` сверяет версию, но не то, что миграционн
Граница объявляется вслух в каждом отчёте — это единственная защита от
«соблюдено» на проекте с тремя лишними файлами.
**Приёмщик и исполнитель совпали.** Граница «пайплайн не закрывает задачу» снята
сознательно (решение P); три защиты из раздела «Стимулы» держатся теперь текстом,
а не механикой. Реальные опоры — сохранённый отчёт триажа, `SPRINT.md` под git и
`reopen`. Это записано в самом скилле, а не спрятано.
**Приёмщик и исполнитель совпали, и опор стало меньше.** Граница «пайплайн не
закрывает задачу» снята сознательно (решение P); защиты держатся текстом, а не
механикой. Реальных опор было три, осталось две: сохранённый отчёт триажа и
`reopen` (индексы под git показывают закрытие, потому что оно коммитится
отдельным коммитом учёта). Третья — приёмка шагом сессии — ушла вместе со
спринтами: у неё больше **нет момента**, и происходит она только тогда, когда
что-то бросилось в глаза на груминге. Это записано в самих скиллах, а не
спрятано.
**Копия правила в шаблонах проекта.** `adr/README.md` и `review.md` уезжают в
репозиторий и обязаны там что-то говорить, поэтому правило канона в них
+5
View File
@@ -71,6 +71,11 @@
сам разбор. Наблюдение к первому прогону: **не выродился ли шаг 4 в
«оставить как есть»** — признак тот, что доклад не называет ни одного
движения с доводом
- [ ] `av-dev-docs:canon` больше не имеет момента для двух своих агентов.
`doc-consistency` и `doc-code-drift` звались шагом сессии раз в спринт;
сессии нет, груминг их звать не вправе (чужой плагин), и на живом проекте
их теперь не зовёт **никто**, кроме `adopt` и `upgrade`. Момент называет
их владелец — решить, какой
## 3. Калибровка — блокирует переезд jellybit
+14 -8
View File
@@ -79,15 +79,21 @@ description: "Решить одну задачу от постановки до
Ничего из этого не задано — попроси у вызывающего и остановись; сам в беклог не
лезь и приоритеты не интерпретируй: что делать дальше, решает не этот скилл.
**Запись, не готовая к работе, в работу не берётся.** У типа `research` это
проверяемо и потому обязательно: нет непустого раздела **«Вопрос»** — это не
разведка, а сырьё, и его сперва доводят до вопроса. Скажи это исходом и назови,
чего не хватает; штурмовать сырьё за автора — не работа этого скилла.
**Запись из каталога сперва проверяется на готовность, и проверяет её машина.**
Вызови Skill `av-dev-tasks:tasks` и попроси прогнать `ready <слаг>`: он смотрит
тип, цель у `feature`, пустой ли раздел вопросов и собраны ли разделы схемы
типа. Судить это глазами нельзя — ровно тот случай, где машина дешевле и точнее,
а цена ошибки отложенная: недостающие критерии приёмки обнаружатся на приёмке,
когда сверять уже не с чем.
У остальных типов схему держит `av-dev-tasks` (обязательные разделы, не меньше
двух критериев приёмки). Прочитай запись и, если видно, что схема не выполнена,
скажи это строкой — но работу не останавливай: у типов действия пробел лечится
по ходу, а у разведки без вопроса лечить нечего.
**`ready` отказал — это исход, а не препятствие для тебя.** Скажи, чего не
хватает, и остановись: дописывать чужую запись за автора не твоя работа, а у
сырья (`research` без раздела «Вопрос») и дописывать нечего — там сперва нужен
вопрос. Исход — «не доведена», с названной причиной.
Плагина `av-dev-tasks` в проекте нет или задача пришла текстом — прогонять
нечего. Тогда прочитай постановку сам и скажи строкой, что готовность машиной не
проверялась; работу при этом не останавливай.
## Две ветки
+2 -2
View File
@@ -393,10 +393,10 @@ kebab-case.** Причина не эстетическая: имя файла с
и второй её экземпляр разошёлся бы с первым (он и разошёлся: канон успел
объявить цель у `fix` запрещённой, хотя она там необязательна).
Схема требуется **к взятию в спринт**, а не к заведению: беклог пополняется чаще,
Схема требуется **к взятию в работу**, а не к заведению: беклог пополняется чаще,
чем разбирается, и требование на входе выгоняло бы в заметки то, что должно
лежать задачей. Запись, не собравшая разделы своего типа, — законное состояние
беклога; невзятой её делает `sprint take`.
беклога; невзятой её делает `tasks.py ready`.
Отдельного типа для незаполненной записи нет: «ещё не описано» — состояние, а не
род работы, и называется оно **`research` без раздела «Вопрос»**. Такая запись в
+1 -1
View File
@@ -42,7 +42,7 @@ from pathlib import Path
OK, DRIFT, USAGE, ENV, INTERNAL = 0, 1, 2, 3, 4
# Дом раскладки — «Модель по проходу» в review-pipeline/SKILL.md; здесь её
# Дом раскладки — «Модель по проходу» в av-dev-code/skills/review/SKILL.md; здесь её
# механизация. Порядок цветов — порядок стоимости прогона.
PALETTE = {"sonnet": "green", "opus": "yellow"}