Files
dev-skills/av-dev-pm/skills/tasks/references/task-research.md
T
avandClaude Opus 5 354a6b03d5 канон 4: слаг подкреплён проверкой, обещанный судья заведён
Оба пункта заметок оказались одним классом: правило записано и никем не
исполняется.

Слаги. canon.md говорил «слаги файлов, capability и задач — английские,
kebab-case» одной строкой в хвосте раскладки, а docs.py имён файлов не
смотрел вовсе. Итог нашёлся в самом плагине: единственный пример ADR в
скилле docs назывался ADR-2026-08-03-ochered-tablicej. Раскладка канона
при этом приглашала к нарушению — в схеме стояли плейсхолдеры <тема>.md,
то есть слово «тема» по-русски там, где надо писать <slug>.

docs.py check теперь смотрит имена: кириллица и не-kebab-case жёстко,
форма ADR-ГГГГ-ММ-ДД-slug.md жёстко, транслит эвристикой, то есть
замечанием. Проверяются docs/conventions, docs/research, docs/adr и имена
capability; каталог задач не трогается — его слаги ведёт tasks.py.

Набор маркеров транслита подобран так, чтобы ложных срабатываний не было
вовсе: выброшены ost (ловит post, cost), sch (schema), ya (yaml), nost
(nostalgia), хвост ii (radii). Цена названа в комментарии —
sostoyanie-partii проходит мимо. Правило, краснеющее на правде, приучает
пролистывать весь блок, и это дороже пропуска.

Агенты. В canon.md есть таблица «Что проверяет машина, а что человек», и
её правая колонка — смысловой дубль, поведение в architecture.md,
протухший факт, достаточность честной строки — три версии описывала
работу, которую никто не делал: скилл canon предлагал агенту судить об
этом самому, то есть проверять то, что он же и писал.

Заведены двое, разрез по глубине — тот же довод, что развёл task-form и
doc-wording. doc-consistency читает docs/ и openspec/, сверяет документы
между собой (факт в двух домах, прямое противоречие, поведение в обзоре
вместо спек, ADR без ссылки на design.md и без парного статуса, число без
провенанса, заглушка вместо честной строки) и зовётся на шаге синка
документации. doc-code-drift читает репозиторий, отвечает на «этот факт
ещё верен» и зовётся раз в спринт на сессии.

Перечень фактов, сверяемых с кодом, закрыт: имя ветки, команды, пути,
зависимости поимённо, настройки с числом, единые точки проекта,
capability, проверяемые инварианты. «Сверить архитектуру с кодом» —
задача без дна, и агент, которому её поставили, выдаёт правдоподобную
труху. Отсюда форма его доклада: начинается таблицей проверенного, а не
находками, — по ней видно, чего он не смотрел.

Карта домов уехала в устав doc-consistency помеченной копией: устав
ссылался на файл плагина, а агент работает в репозитории проекта, где
плагина может не быть. copies.py её сторожит.

Попутно: докстрока copies.py показывала закрывающие маркеры как
<!-- /дом -->, а код требует <!-- /дом: <id> -->. Нашлось первой же
попыткой ими воспользоваться.

DECISIONS тема 28 (ННОО–ХХЦЦ, следствия 105–108).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 10:20:39 +03:00

6.3 KiB

🔬 research — исход работы знание, а не изменение системы

Ответ на вопрос, замер, разведка, проработка сырой мысли. Приёмка — записанный ответ, а не изменённый код.

Общая форма записи (мета, слаг, строка индекса) — task-format.md. Здесь только то, что у этого типа своё.

Схема

Заголовок отвечает на о чём разведка (предмет, а не действие)
Обязательные разделы Вопрос, Куда ляжет ответ
Допустимые сверх того Рамки, Вопросы
Поле места Категория — полка домена беклога
Цель (goal:<слаг>) нет
Индекс BACKLOG.mdSPRINT.md
Берётся в спринт да — но только с заполненным «Вопросом»

Критериев приёмки у research нет, и это не поблажка. Критерии в форме «оракул: тест» разведке натянуты: проверять нечего, пока ответа нет. Её приёмка описывается раздельно — вопрос, на который отвечаем, и место, куда ляжет ответ.

Заголовок формы действия не несёт намеренно. Что делать, ещё неизвестно, и заголовок-действие обещал бы решённость, которой нет. «Подсказка следующего хода», а не «Сделать подсказку следующего хода».

Этот тип вобрал прежний [idea]

Тип idea упразднён. Он значил не род работы, а состояние незаполненности — «первый, второй или третий вопрос теста готовности не отвечается», — а состояние типом быть не может: оно меняется по мере того, как запись дописывают, а тип меняют командой.

Теперь это состояние называется честно: research без раздела «Вопрос» — это сырьё.

сырьё разведка
Раздел Вопрос пуст или отсутствует заполнен
sprint take отказ берёт
Место в секции беклога конец, check --fix сносит туда сам среди прочих
tasks.py list --raw показывает нет

Порядка «по важности» в беклоге по-прежнему нет. Этот порядок производен от типа и заполненности, а не назначен человеком, — потому его и проверяет машина, и потому он не противоречит правилу «порядка нет, есть цель».

Сырьём заводится и сырая функция: «Подсказка следующего хода» — ещё не feature, потому что неизвестно, что именно делать. Работа над ней — думание, и её исход — либо задачи, либо отказ.

Алгоритм

  1. Записать вопрос одной фразой. Не тему, а вопрос: не «Разобраться с выводом в терминалах», а «Какими символами рамки печатаются одинаково в Терминале, iTerm и tmux». Вопроса ещё нет — запись заводится сырьём и лежит в конце секции, пока вопрос не появится.
  2. Назвать, куда ляжет ответ: docs/research/<slug>.md, ADR, тело этой задачи. Место называется заранее, иначе ответ остаётся в переписке, а через квартал разведку заказывают заново.
  3. Ограничить рамками, если разведка может утечь: сколько времени, какие источники, что заведомо вне.
  4. Провести разведку и записать ответ по названному адресу. Числа — с провенансом: с командой или условиями, которыми получены. Число без источника проход ревью обязан читать как условие, а не как замер.
  5. Разложить исход на задачи — если он их родил. Разведка кончается одним из трёх: заведены задачи, записано знание, отказ. Отказ — полноправный исход: «проверили, не проблема» экономит спринт.
  6. Закрытьclose <слаг> --implemented, когда ответ записан. Файл удаляется: запись ответа и есть след, второго не нужно. Ушла без ответа — close --reason, и строка уезжает в REJECTED.md.

Что видит машина, а что человек

check и sprint take смотрят на наличие непустых разделов Вопрос и Куда ляжет ответ, считают сырьё отдельной строкой здоровья и держат его в конце секции. Годность вопроса — человеку: «вопрос это или тема» машина не различает, и check о годности молчит намеренно.

Штурм сырья, дробление исхода на задачи и тест «части мерджатся порознь» — split.md.