скелеты канона догнали канон 12: спринт, версия, чужая проверка
Аудит четырьмя сабагентами показал систематическую дыру: механика правилась, а описывающее её вовне — нет. Дороже всего скелеты: они уезжают в проект. - слоты спринта в скелете CLAUDE.md стали слотами груминга, имена взяты у groom, а не выдуманы заново — журнал версии 12 их уже назвал - "canon": 11 в двух образцах стал плейсхолдером: литерал протухал третий раз подряд, а незамещённый плейсхолдер ломает разбор громко - обещание, что docs.py проверяет форму openspec/config.yaml, снято из трёх мест; владелец назван полным именем, с оговоркой об отсутствии плагина - adopt ставил в гейт проекта один шаг из трёх; соседские ставятся по следу присутствия, следа нет — строка доклада - битая ссылка на tasks/ROADMAP.md из скелета паспорта Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
# Паспорт проекта
|
||||
|
||||
Зачем это и для кого. [architecture.md](architecture.md) отвечает «как
|
||||
устроено», [tasks/ROADMAP.md](tasks/ROADMAP.md) — «в каком порядке», паспорт —
|
||||
устроено», [tasks/ROADMAP.md](../tasks/ROADMAP.md) — «в каком порядке», паспорт —
|
||||
«зачем и для кого».
|
||||
|
||||
## Цель
|
||||
@@ -401,8 +401,9 @@ severity стоит здесь, а не выводится каждым прох
|
||||
|
||||
- **Основная ветка:** <имя>
|
||||
- **Необратимое** (спрашивается у человека всегда):
|
||||
- **Общий станок** — какая проверка, покраснев, врывается в замороженный спринт:
|
||||
- **Ориентир по размеру спринта:** 5–8 задач, ориентир а не закон
|
||||
- **Что считается сломанным** — какая красная проверка обгоняет развитие,
|
||||
то есть останавливает текущую работу:
|
||||
- **Ориентир по размеру порции:** своё число, если замерялось
|
||||
- **Что такое «сделана»:** пайплайн проекта пройден + критерии приёмки проверены
|
||||
поимённо
|
||||
|
||||
@@ -424,17 +425,26 @@ severity стоит здесь, а не выводится каждым прох
|
||||
документов. Проект без конвейера каталога `openspec/` не имеет вовсе, и образец
|
||||
файла, которого у него нет, в скелетах канона лежал бы мёртвым грузом.
|
||||
|
||||
Канон о нём всё ещё **высказывается**, но только в одну сторону: `docs.py check`
|
||||
проверяет форму, **если каталог есть**, и молчит, если его нет. Что именно
|
||||
проверяется — [canon.md](canon.md), раздел `openspec/config.yaml`.
|
||||
**Форму не проверяет и `docs.py`** — с канона 10 он о файле молчит вовсе.
|
||||
Проверяет её тот же владелец: скилл `av-dev-code:openspec`, команда
|
||||
`openspec.py check`. Плагина конвейера в проекте может не быть — тогда форму не
|
||||
смотрит никто, и это строка доклада, а не поломка. Что канон о файле всё же
|
||||
говорит (единственный дом, а не форма) — [canon.md](canon.md), раздел
|
||||
`openspec/config.yaml`.
|
||||
|
||||
## `docs/.pm.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"canon": 11
|
||||
"canon": <текущая версия>
|
||||
}
|
||||
```
|
||||
|
||||
`<текущая версия>` подставляет `init` или `adopt`, целым числом; берётся она из
|
||||
`docs.py version` (строка «канон скрипта»), а не из памяти. Литерал здесь
|
||||
протухает при каждом повышении канона, поэтому его тут и нет: незамещённый
|
||||
плейсхолдер ломает разбор JSON громко, а отставшее число дало бы дрейф молча.
|
||||
|
||||
Плюс `"migrations": "<путь>"`, если есть БД. Ключа `"tasks"` здесь **нет**:
|
||||
настройки каталога задач переехали в свой файл `<каталог задач>/.tasks.json`,
|
||||
потому что ведёт их другой плагин. Состав ключей — [canon.md](canon.md).
|
||||
|
||||
Reference in New Issue
Block a user