# 48. Форма чужого инструмента держится опросом инструмента, а не памятью (2026-08-07) **Р189. Схема и артефакты OpenSpec записаны в скрипте как слепок, и у слепка есть сторож.** Проверка формы `config.yaml` знает имя схемы и перечень артефактов (`proposal`, `specs`, `design`, `tasks`). Это не наше решение, а состояние чужого инструмента: OpenSpec переименует артефакт — правила под прежним именем перестанут применяться, конфиг останется выглядеть написанным, а канон продолжит требовать прежнее. Все три стороны при этом молчат. Сторожем сделано сравнение версий: `check` спрашивает `openspec --version` (десятые доли секунды) и сравнивает `major.minor` с той, на которой форма сверялась. Разошлось — **замечание**, не отказ, с именем команды, которая перепроверяет. Патч-версия в сравнение не берётся намеренно: формы она не меняет, а нагоняй на каждый багфикс приучает пролистывать весь блок. **Р190. Перепроверка спрашивает инструмент, а не нас.** `docs.py openspec-form` берёт `openspec templates --json` — перечень артефактов текущей схемы — и печатает, что разошлось с константами. Дорогой вызов вынесен из `check` сознательно: он стоит втрое дороже опроса версии, а ответ меняется только вместе с версией. Дешёвая проверка служит **воротами** дорогой, и дорогая не ржавеет, потому что зовут её не по памяти. **Чинится расхождение в плагине, а не в проекте, и это сказано в трёх местах.** Проект в такой ситуации не виноват и починить ничего не может: у него нет ни констант скрипта, ни скелета, ни журнала версий канона. Замечание поэтому адресовано владельцу плагина, а команда печатает три адреса правки списком. **Заодно поймано ложное срабатывание на живом конфиге.** Первый вариант искал ключи `rules` отступом по всему файлу и нашёл их внутри литерального блока `context: |`: строки «Language: Russian» и «av-dev-pm:review-pipeline» выглядят ключами. Проверка теперь идёт от строки `rules:` до следующего ключа нулевой колонки. Правило, краснеющее на правде, хуже отсутствующего — его перестают читать целиком. ## Что из этого следует **С169. Знание о чужом инструменте, записанное у себя, — это слепок с датой.** Он законен, пока рядом стоит тот, кто заметит, что дата протухла; без сторожа он превращается в уверенное враньё. **С170. Дешёвая проверка как ворота дорогой.** Опрос версии стоит копейки и точно говорит, могла ли измениться дорогая величина. Так дорогая проверка остаётся редкой и при этом не забытой.