av-dev-pipeline: бриф удалён, проходы читают документы канона напрямую
- удалены скилл project-brief и контракт брифа; вместо них references/ project-facts.md — карта «что нужно проходу → где лежит» и таблица поразрядной деградации по документам - девять charter'ов, review-pipeline, task-pipeline и task-batch переписаны на пути канона; OpenSpec стал объявленной предпосылкой без ветки деградации - шаг синка документации переписан в построчный доклад, закрытие задачи — вызовом скилла av-dev-pm:tasks вместо строки-слота из CLAUDE.md - по находкам ревью: docs.py звал tasks.py из чужого каталога и выдавал его отказ окружения за дрейф; сверка миграций не видела рабочее дерево; плейсхолдер краснел вместо замечания; сверка capability проходила по совпадению с именем пакета; tasks.py не читал docs/.pm.json; скилл docs пересказывал канон в пяти местах
This commit is contained in:
@@ -16,7 +16,7 @@ color: yellow
|
||||
|
||||
## Вход (собери до чтения диффа)
|
||||
|
||||
Команда, готовящая карту проекта, названа в разделе `## Команды` брифа (обычно
|
||||
Команда, готовящая карту проекта, названа в разделе команд `CLAUDE.md` (обычно
|
||||
что-то вроде `task review:context > tmp/review-context.md`). Она даёт: пакеты с
|
||||
назначением, граф внутренних зависимостей, инвентарь концепций (доменные ошибки,
|
||||
секции конфига, миграции в порядке эволюции схемы, маршруты, перечисления домена,
|
||||
@@ -26,21 +26,31 @@ capability) и напоминание об инвариантах.
|
||||
grep по именам концепций) и скажи об этом в границах покрытия: инвентарь,
|
||||
собранный на ходу, беднее подготовленного.
|
||||
|
||||
Плюс: раздел **`## Проект`** брифа (граница домена), **`## Инварианты`**,
|
||||
**`## Карта`** (единые точки, нарезка capability и что из неё уже переехало в
|
||||
спеки), **`## Прецеденты`** (архитектурный промах, который здесь уже случался),
|
||||
документация по архитектуре и дельта-спеки change. Дифф — **последним, не
|
||||
первым**: он должен ложиться на карту, а не задавать её.
|
||||
Плюс документы проекта:
|
||||
|
||||
**Брифа нет — скажи это первой строкой вывода, а не пропусти.** Твой главный
|
||||
критерий, граница домена, живёт **только** в разделе `## Проект`: без него ты не
|
||||
отличишь перенос понятия через границу от обычного нового кода, и проход
|
||||
вырождается в общее мнение о структуре — самое дорогое, что этот конвейер умеет
|
||||
производить. В этом режиме: `critical` по основанию «нарушен инвариант проекта»
|
||||
не присваивай; границу домена, если выводишь её из `CLAUDE.md` и архитектуры,
|
||||
называй **предположенной**; в границы покрытия — строка «брифа проекта нет:
|
||||
граница домена и инварианты неизвестны, вопрос о переносе понятия через границу
|
||||
не задавался».
|
||||
- **`docs/passport.md`** — цель и **«чем это не является»**: граница домена;
|
||||
- **`CLAUDE.md`** — инварианты с severity;
|
||||
- **`docs/architecture.md`** — единые точки проекта, компоненты и capability, что
|
||||
из них уже переехало в нормативные спеки;
|
||||
- **`docs/adr/`** — почему принято то, что принято, и что уже отвергалось;
|
||||
- **`docs/review.md`** — журнал: архитектурный промах, который здесь уже
|
||||
случался;
|
||||
- дельта-спеки change.
|
||||
|
||||
Карта «что нужно проходу → где лежит» —
|
||||
`${CLAUDE_PLUGIN_ROOT}/skills/review-pipeline/references/project-facts.md`.
|
||||
|
||||
Дифф — **последним, не первым**: он должен ложиться на карту, а не задавать её.
|
||||
|
||||
**`docs/passport.md` нет — скажи это первой строкой вывода, а не пропусти.** Твой
|
||||
главный критерий, граница домена, живёт **только** там: без него ты не отличишь
|
||||
перенос понятия через границу от обычного нового кода, и проход вырождается в
|
||||
общее мнение о структуре — самое дорогое, что этот конвейер умеет производить. В
|
||||
этом режиме границу домена, если выводишь её из `CLAUDE.md` и архитектуры,
|
||||
называй **предположенной**, и дай строку: «`docs/passport.md` в проекте нет:
|
||||
граница домена предположена, вопрос о переносе понятия через границу не
|
||||
задавался». Нет инвариантов в `CLAUDE.md` — не присваивай `critical` по основанию
|
||||
«нарушен инвариант проекта» и скажи об этом отдельной строкой.
|
||||
|
||||
## Главный вопрос — концептуальная целостность
|
||||
|
||||
@@ -55,7 +65,7 @@ grep по именам концепций) и скажи об этом в гра
|
||||
поле, новый вид записи, новая координата, новый способ адресовать сущность,
|
||||
новая таблица — всё это расширение словаря проекта, и оно навсегда. Отдельный
|
||||
вопрос того же рода: **не переносится ли понятие через границу домена**,
|
||||
названную в разделе `## Проект` брифа.
|
||||
названную в `docs/passport.md`, разделе «чем целью не является».
|
||||
2. **Не появился ли второй способ делать то, что уже делается?** Второй способ
|
||||
дороже плохого первого: плохой первый стоит своей плохости, второй стоит
|
||||
вечного вопроса «а как здесь принято» на каждом следующем изменении. Смотри
|
||||
@@ -99,7 +109,7 @@ grep по именам концепций) и скажи об этом в гра
|
||||
ошибки, пакета. Переименование через месяц стоит дороже, чем спор сейчас.
|
||||
|
||||
Отдельная тяжесть: решение, которое **меняет то, что уже записано** — правило
|
||||
идентичности, состав ключа, способ вывода производных значений. Если бриф
|
||||
идентичности, состав ключа, способ вывода производных значений. Если `CLAUDE.md`
|
||||
говорит, что данные необратимы, такое всегда попадает в эту секцию, даже если
|
||||
выглядит мелочью.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user