валидатор config.yaml переехал в конвейер: у пайплайна свой скрипт
Решение 51 отдало OpenSpec конвейеру и честно оставило хвост: проверка формы и сторож версии остались в docs.py, потому что своего скрипта у пайплайна не было ни одного. Хвост не косметический — это ровно то состояние, против которого написан весь канон: у файла два владельца, один заводит, другой проверяет, и разойтись они могут молча. 252 строки переехали в av-dev-pipeline/skills/openspec/scripts/openspec.py: пять проверок формы, сторож версии, сверка слепка с живым инструментом. Команды две — check --dir <корень> и form; коды выхода общие со всеми скриптами av-dev. Из docs.py удалены константы OPENSPEC_*, check_openspec, openspec_cli, check_openspec_fresh, rules_keys и подкоманда openspec-form; про config.yaml он больше не говорит ничего, кроме строки границы механизируемого — что форму смотрит чужой скрипт. openspec/specs/ он по-прежнему знает: это дом темы requirements и часть карты тем. Переезд оплатился сразу, и не тем, чего ждали. Прежняя проверка требовала, чтобы context называл docs/passport.md и CLAUDE.md, безусловно — то есть на проекте без канона документов требовала ссылку на несуществующий файл. Пока код жил в скрипте канона, допущение «канон есть» было незаметным: скрипт канона запускают там, где канон есть. В скрипте конвейера то же допущение стало видно на первом прогоне. Теперь адрес требуется только к существующему документу, отсутствие идёт строкой «не проверялось» с названной ценой — без канона конвейер работает вслепую. Заодно починен хвост от раскола плагинов: pyrefly project-includes в pyproject всё ещё указывали на av-dev-pm. Линтер на явных файлах работал, а на обходе проекта не проверял ничего. Проверено пятью случаями: нет openspec (1), годный конфиг (0), опечатка в имени артефакта под rules (1), проект без канона (0, с двумя строками «не проверялось»), неизвестная команда (2). Канон повышен до версии 10. Главное в записи — тихая потеря: форму раньше проверял docs.py check заодно, теперь нужен отдельный шаг openspec.py check в гейте, иначе незаменённый пример в config.yaml перестанет ловиться. Решение — 52. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3247,3 +3247,30 @@ JJJ): у профиля обязан быть один правильный от
|
||||
кто о нём написал.** Канон описывал OpenSpec подробнее всех и потому казался
|
||||
его владельцем; работает по нему конвейер, и слот принадлежит конвейеру.
|
||||
|
||||
|
||||
## 52. Валидатор поехал за файлом: у конвейера появился свой скрипт (2026-08-09)
|
||||
|
||||
**АЕАКК. Названный остаток закрыт, и закрыт он ценой первого скрипта в
|
||||
конвейере.** Решение 51 отдало OpenSpec конвейеру и честно оставило хвост:
|
||||
проверка формы `config.yaml` и сторож версии остались в `docs.py`, потому что
|
||||
своего скрипта у пайплайна не было ни одного. Хвост оказался не косметическим —
|
||||
это ровно то состояние, против которого написан весь канон: **у файла два
|
||||
владельца, один заводит, другой проверяет**, и разойтись они могут молча. 252
|
||||
строки переехали в `av-dev-pipeline/skills/openspec/scripts/openspec.py`; в
|
||||
`docs.py` от темы не осталось ни константы.
|
||||
|
||||
**Переезд оплатился сразу, и не тем, чего ждали.** Прежняя проверка требовала,
|
||||
чтобы `context` называл `docs/passport.md` и `CLAUDE.md`, **безусловно** — то есть
|
||||
на проекте без канона документов требовала ссылку на несуществующий файл. Пока
|
||||
проверка жила в скрипте канона, допущение «канон есть» было незаметным: скрипт
|
||||
канона запускают там, где канон есть. В скрипте конвейера то же допущение стало
|
||||
видно на первом же прогоне. Теперь адрес требуется только к документу, который в
|
||||
проекте есть, а его отсутствие идёт строкой «не проверялось» с названной ценой.
|
||||
|
||||
### Что из этого следует
|
||||
|
||||
177. **Неявное допущение видно из другого дома, а не изнутри своего.** «Канон
|
||||
есть» было верно всюду, где код лежал, и потому не читалось как допущение
|
||||
вовсе. Переезд — самый дешёвый способ его обнаружить: не разбор, а смена
|
||||
места, из которого на код смотрят.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user