docs: ADR о переезде конвейера ревью в плагины
- Заведена запись ADR-2026-08-04: пайплайн и ревью переехали в av-dev-pipeline и av-dev-pm, причина — расхождение копий между jellybit и healthlog и переиспользуемость пайплайна. - Упразднение прохода idiom записано отдельным последствием со ссылкой на «Перестали проверять сознательно» в docs/review.md.
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# Конвейер ревью и пайплайн задачи переезжают в плагины
|
||||
|
||||
- **Дата:** 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` не найден.
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
| Дата | Запись | Статус |
|
||||
| --- | --- | --- |
|
||||
| 2026-08-04 | [Конвейер ревью и пайплайн задачи переезжают в плагины](ADR-2026-08-04-review-pipeline-to-plugin.md) | — |
|
||||
| 2026-07-24 | [Локальная сборка образа + доставка docker save/load](ADR-2026-07-24-local-image-build.md) | — |
|
||||
| 2026-07-23 | [Конвейер ревью: гейт, generative-проходы и триаж](ADR-2026-07-23-review-pipeline-generative.md) | — |
|
||||
| 2026-07-02 | [Отдельную сущность «тайтл» не вводим](ADR-2026-07-02-no-title-entity.md) | — |
|
||||
|
||||
Reference in New Issue
Block a user