From a4f5faae47bfa4818d2325a18a83a1225f62866b Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Tue, 4 Aug 2026 09:32:52 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20ADR=20=D0=BE=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B5=D0=B7=D0=B4=D0=B5=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D0=B9?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Заведена запись ADR-2026-08-04: пайплайн и ревью переехали в av-dev-pipeline и av-dev-pm, причина — расхождение копий между jellybit и healthlog и переиспользуемость пайплайна. - Упразднение прохода idiom записано отдельным последствием со ссылкой на «Перестали проверять сознательно» в docs/review.md. --- ...DR-2026-08-04-review-pipeline-to-plugin.md | 97 +++++++++++++++++++ docs/adr/README.md | 1 + 2 files changed, 98 insertions(+) create mode 100644 docs/adr/ADR-2026-08-04-review-pipeline-to-plugin.md diff --git a/docs/adr/ADR-2026-08-04-review-pipeline-to-plugin.md b/docs/adr/ADR-2026-08-04-review-pipeline-to-plugin.md new file mode 100644 index 0000000..1676fb4 --- /dev/null +++ b/docs/adr/ADR-2026-08-04-review-pipeline-to-plugin.md @@ -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//review/` остаётся единственным + артефактом того, что реально проверялось. +- `−` Проектная специфика теперь **обязана** быть в `docs/review.md`. Пустой или + устаревший раздел там больше не компенсируется вшитой в промпт конкретикой — + проход просто спросит общее вместо частного, и это будет незаметно. +- `−` Появилась внешняя зависимость сборки процесса: без подключённого + маркетплейса `av-dev-skills` пайплайн и ревью недоступны. Шаг `canon` в + `task gate` по той же причине краснеет внятно, когда `docs.py` не найден. diff --git a/docs/adr/README.md b/docs/adr/README.md index c3670d5..2de2851 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -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) | — |