скелеты канона догнали канон 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:
@@ -385,7 +385,7 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
| 🔬 `research` | исход — знание, а не изменение |
|
||||
|
||||
**Схемы записи здесь нет намеренно.** Какие разделы тип требует, нужна ли ему
|
||||
цель и берётся ли он в спринт — скилл `av-dev-tasks:tasks`, раздел «Тип
|
||||
цель и берётся ли он в работу — скилл `av-dev-tasks:tasks`, раздел «Тип
|
||||
записи», подробно — по файлу на тип в его `references/task-<тип>.md`. Ссылки в
|
||||
дерево того плагина здесь нет намеренно: он ставится отдельно, и путь наружу
|
||||
разрешился бы не всегда. Канон фиксирует **словарь**, потому что
|
||||
@@ -400,7 +400,7 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
|
||||
Отдельного типа для незаполненной записи нет: «ещё не описано» — состояние, а не
|
||||
род работы, и называется оно **`research` без раздела «Вопрос»**. Такая запись в
|
||||
спринт не берётся и лежит в конце своей категории.
|
||||
работу не берётся и лежит в конце своей категории.
|
||||
|
||||
Раскладку, форму записи и алгоритм работы над каждым типом держит скилл `tasks`.
|
||||
|
||||
@@ -422,8 +422,10 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
- **где `testdata`** и что в них лежит; **куда писать временное**;
|
||||
- **что считается необратимым** — единственный дом: от обратимости зависит вся
|
||||
шкала ранжирования триажа и право проходов на `critical`;
|
||||
- **общий станок**, врывающийся в замороженный спринт; **ориентир по размеру
|
||||
спринта**.
|
||||
- **что считается сломанным** — красная проверка, обгоняющая развитие;
|
||||
**ориентир по размеру порции**, если он замерялся. Оба слота читает скилл
|
||||
`av-dev-tasks:groom`, и имена их — его; названы они здесь потому, что дом
|
||||
содержимого `CLAUDE.md` один и он тут.
|
||||
|
||||
### `openspec/config.yaml`
|
||||
|
||||
@@ -512,10 +514,17 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
| маркеры долга — числом | **протухший факт, разошедшийся с кодом** | `doc-code-drift` |
|
||||
| миграция изменена, а `database.md` нет | зависимость в манифесте, не названная в обзоре | `doc-code-drift` |
|
||||
| capability без упоминания в `architecture.md` | второй способ там, где обзор обещал единственный | `doc-code-drift` |
|
||||
| `openspec/config.yaml`: имя, `schema`, незаменённый пример, адреса паспорта и `CLAUDE.md`, ключи `rules` против артефактов схемы | **пересказ документа канона в `context` вместо ссылки** | `doc-consistency` |
|
||||
| версия OpenSpec разошлась с той, на которой сверена форма `config.yaml` | придирки валидатора: сменились ли они | никакой — проявляются отказом `openspec validate --strict` |
|
||||
| | **пересказ документа канона в `context` вместо ссылки** | `doc-consistency` |
|
||||
| | придирки валидатора: сменились ли они | никакой — проявляются отказом `openspec validate --strict` |
|
||||
| | связность и читаемость | `doc-wording` |
|
||||
|
||||
**Форма `openspec/config.yaml` в левой колонке отсутствует не по забывчивости.**
|
||||
С канона 10 `docs.py` о файле не говорит ничего: имя, `schema`, незаменённый
|
||||
пример, адреса паспорта и `CLAUDE.md`, ключи `rules` и сторож версии OpenSpec —
|
||||
всё это смотрит `openspec.py check` скилла `av-dev-code:openspec`. Плагина
|
||||
конвейера в проекте может не быть; тогда форму не проверяет никто, и это строка
|
||||
доклада.
|
||||
|
||||
**Агентов двое, и разведены они по глубине, а не по охвату.** `doc-consistency`
|
||||
читает только `docs/` и `openspec/`, `doc-code-drift` — весь репозиторий и гоняет
|
||||
читающие команды. Слитый агент делал бы одну половину поверхностной; тот же
|
||||
@@ -540,15 +549,17 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
|
||||
```json
|
||||
{
|
||||
"canon": 11,
|
||||
"canon": <текущая версия>,
|
||||
"migrations": "internal/store/migrations"
|
||||
}
|
||||
```
|
||||
|
||||
`canon` — версия канона, под которую проект приведён, целым числом: обратной
|
||||
совместимости у канона нет, есть «приведён» и «не приведён». `migrations` — путь
|
||||
каталога миграций, если БД есть; по нему `docs.py` делает сверку с
|
||||
`database.md`.
|
||||
совместимости у канона нет, есть «приведён» и «не приведён». Число подставляет
|
||||
`init`, `adopt` или `upgrade`, и берётся оно из `docs.py version`, а не из
|
||||
образца: литерал в образце протухает на первом же повышении канона.
|
||||
`migrations` — путь каталога миграций, если БД есть; по нему `docs.py` делает
|
||||
сверку с `database.md`.
|
||||
|
||||
**Ключа `tasks` здесь больше нет.** Настройки каталога задач вернулись в свой
|
||||
файл `<каталог задач>/.tasks.json`, потому что ведёт их другой плагин: конфиг,
|
||||
|
||||
Reference in New Issue
Block a user