Files
jellybit/docs/adr/ADR-2026-08-04-review-pipeline-to-plugin.md
av a4f5faae47 docs: ADR о переезде конвейера ревью в плагины
- Заведена запись ADR-2026-08-04: пайплайн и ревью переехали в
  av-dev-pipeline и av-dev-pm, причина — расхождение копий между
  jellybit и healthlog и переиспользуемость пайплайна.
- Упразднение прохода idiom записано отдельным последствием со ссылкой
  на «Перестали проверять сознательно» в docs/review.md.
2026-08-04 09:32:52 +03:00

98 lines
8.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Конвейер ревью и пайплайн задачи переезжают в плагины
- **Дата:** 2026-08-04
- **Источник:** `DECISIONS.md` §4 «Границы плагинов» (2026-08-03) и §7
«Раскладка скиллов» репозитория `av-dev-skills`
(`https://git.vakhrushev.me/av/dev-skills.git`). Архивного `design.md` у этого
решения нет: оно принималось в репозитории плагинов, а не change'ем jellybit —
отсюда и отступление от правила «ADR это промоут поверх архивного design.md».
**Не заменяет [ADR-2026-07-23](ADR-2026-07-23-review-pipeline-generative.md).**
Форма конвейера, принятая там (детерминированный гейт первым, двунаправленная
сверка со спекой, слой generative-проходов, обязательный триаж с потолком 7,
храповик «находка → правило → удаление», журнал и калибровка), остаётся в силе
целиком. Пересматривается только **где конвейер живёт и кому принадлежит**, плюс
одно частное следствие — судьба прохода про идиоматичность.
## Решение
Конвейер ревью, пайплайн задачи и пайплайн партии задач перестают быть
артефактами jellybit и переезжают в плагины маркетплейса `av-dev-skills`:
- **`av-dev-pipeline`** — исполнение: SDD-цикл (`task-pipeline`, `task-batch`) и
конвейер ревью с девятью агентами;
- **`av-dev-pm`** — управление продуктом: канон документов (`canon`, `docs`),
задачи и цели (`tasks`), ритуал спринта (`session`);
- **`av-dev-git`** — стиль коммитов.
Из репозитория удалены 11 агентов `jellybit-review-*` (1159 строк) и три скилла
с их справочниками (932 строки). Проектная специфика, которая раньше была
вшита в промпты агентов, теперь приходит из документов канона — прежде всего из
[docs/review.md](../review.md): типовые узлы, типовые ложноположительные,
вопросы к проходам, триггеры профиля, недоступное проверке.
## Почему
Причина словами владельца, из источника:
> «пайплайн можно и переиспользовать в других проектах с более простым подходом
> к управлению»
и разбор, который её подтверждает:
> Пайплайн зависит от **файлов канона и от OpenSpec, а не от плагина**
> `av-dev-pm`. В чужом проекте нужных файлов нет — включается поразрядная
> деградация, и это штатный режим, а не поломка.
Второе: копия конвейера жила не только здесь. Те же скиллы и агенты лежали в
healthlog, и **копии успели разойтись** — правка, сделанная в одном проекте, во
второй не приезжала никогда. Скилл, который правят в двух местах, работает в том
из них, куда заглянули последним; это ровно та болезнь, которую канон лечит
правилом единственного дома, и на процессных артефактах она проявилась раньше,
чем на документах.
Третье: разделение плагинов по симметрии «раскладка и содержимое» —
`canon`/`docs` для документов, `tasks`/`session` для задач — сняло конфликт
владения `docs/tasks/`, из-за которого прежний `av-dev-backlog` и пайплайн
претендовали на один каталог.
## Рассмотренные варианты
- **Оставить копию в проекте, синхронизировать руками.** Отвергнуто фактом:
именно это и делалось, и копии разошлись. Ручная синхронизация двух проектов
не имеет ни оракула, ни момента, когда её обязаны выполнить.
- **Один общий плагин на всё.** Отвергнуто: пайплайн переиспользуем в проекте,
который канон av-dev не ведёт, а канон полезен там, где нет OpenSpec. Один
плагин связал бы их жёстче, чем они связаны по существу.
- **Держать в проекте только агентов, а скиллы вынести.** Отвергнуто: агенты и
есть содержание конвейера; вынести оболочку, оставив начинку, значит получить
ту же расходящуюся копию, только менее заметную.
## Последствия
- `+` Правка конвейера делается один раз и приезжает во все проекты; расхождение
копий структурно невозможно.
- `+` Из промптов агентов ушла проектная специфика — она читается из документов
канона, поэтому обновляется вместе с проектом, а не отдельной правкой девяти
промптов.
- `+` `-2091` строка процессных артефактов в репозитории; репозиторий описывает
jellybit, а не то, как над ним работают.
- `` **Проход `idiom` упразднён.** Поимённая сверка с положениями Effective Go,
Go Code Review Comments и стайлгайдов Uber/Google не задаётся теперь ни одним
проходом; способные части переселены (эксперимент против поведения библиотеки
и драйвера — в `ops`, «не изобретаем ли то, что уже есть в библиотеке» — в
`architecture`). **Различение «идиоматично против распространено» не
спрашивает никто.** Класс обратимый — портит форму кода, не данные. Записано в
[docs/review.md](../review.md) → «Перестали проверять сознательно»; пересмотр —
задача `quality-review-agents`.
- `` Версия конвейера больше не зафиксирована коммитом проекта: обновление
плагина меняет ревью задним числом, и старый прогон не воспроизводится.
Отчёт триажа в `openspec/changes/<id>/review/` остаётся единственным
артефактом того, что реально проверялось.
- `` Проектная специфика теперь **обязана** быть в `docs/review.md`. Пустой или
устаревший раздел там больше не компенсируется вшитой в промпт конкретикой —
проход просто спросит общее вместо частного, и это будет незаметно.
- `` Появилась внешняя зависимость сборки процесса: без подключённого
маркетплейса `av-dev-skills` пайплайн и ревью недоступны. Шаг `canon` в
`task gate` по той же причине краснеет внятно, когда `docs.py` не найден.