Files
dev-skills/av-dev-tasks/skills/tasks/references/task-research.md
T
av b8120d3271 resolve: два сценария вместо одной цепочки — разведка и решение
Разведка была прологом к коду: три шага, чекпоинт вариантов — и вливание в
общую ветку. Своего исхода у неё не было, поэтому и писать в документы проекта
ей было незачем: ответ оседал в design.md будущего change.

- у разведки появился исход: ответ уезжает в документы канона, задачи заводятся
  и уточняются, написанное коммитится, запись закрывается. Кода сценарий не
  пишет вовсе, OpenSpec ему не нужен
- точка входа осталась одна, и сценарий выбирает скилл, прочитав постановку:
  «есть ли очевидный способ решения» видно после чтения записи, и требовать
  этого суждения от вызывающего значит требовать его раньше, чем оно возможно
- оба сценария лежат справочниками и одинаково — solve.md и research.md, — а в
  SKILL.md остались вход, развилка и правила, не зависящие от сценария.
  Асимметрия читалась бы как старшинство: сценарий в теле скилла выглядит
  основным, а в справочнике — оговоркой
- переход между сценариями — событие с названным исходом: решение, упёршееся в
  незнание способа, останавливается; разведка, выбравшая способ, доводится до
  конца, а код идёт следующим прогоном, который запускает человек
- канон 14: у ADR два законных источника. У решения, принятого разведкой,
  design.md нет по построению, и такое решение либо не попадало в adr/ вовсе,
  либо попадало сочинённым заново

Правки по своему же ревью, до коммита:

- версия 14 была неполной — разрез проверки, вход и устав doc-consistency,
  скелеты adr/README.md и template.md по-прежнему требовали ссылку на
  design.md. Агент краснел бы на законной записи; скелеты уезжают в проекты,
  поэтому запись журнала называет их поимённо
- canon.md объявлял себя двенадцатым, пережив версию 13. Литерал был третьим
  домом числа при двух исправных — убран, а не поправлен
- сценарий разведки был недостижим там, где обещал работать: ready требует у
  research оба раздела, включая «Куда ляжет ответ», а сценарий брался назначить
  адрес сам. Адрес назначает автор записи; сценарий — только когда записи нет
- разведка коммитила без гейта, хотя правит документы канона и индексы задач
- при переносе выпало предупреждение про закрытие разведки без записанного
  ответа — возвращено
2026-08-11 11:36:37 +03:00

6.7 KiB

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

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

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

Схема

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

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

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

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

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

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

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

Порядок строк в беклоге назначает человек — это приоритет (правило 4 скилла). Место сырья из него изъято: оно производно от типа и заполненности, а не от чьего-то решения, и потому его проверяет и чинит машина. Приоритетом оно не становится: сырьё не берут вовсе, и место в конце говорит именно это.

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

Алгоритм

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

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

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

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