след сверки: ключ переехал в секцию docs, конфиг больше не отвергается
Ключ [healthcheck] last, заведённый вчера темой 78, роняли оба скрипта плагина: верхний уровень .av-dev.toml стережёт TOP_KEYS в shared/config.py, и неизвестный ключ там — отказ кодом 3. Первый же прогон сверки сделал бы нерабочими canon check/adopt/upgrade, весь task-track и гейт проекта. След живёт теперь ключом healthcheck_last в секции [docs] — по смыслу (настройки проверок документов) и по цене (правка одной константы DOCS_KEYS в docs.py, общий читатель не тронут). Воспроизведено до и после: docs.py и tasks.py конфиг с ключом принимают. Корень был не в описке, а в ложном обещании канона «неизвестный ключ docs.py игнорирует» — оно старше темы 78, и на него опёрлись, не открыв скрипт. Обещание снято, на его месте правило: новый ключ заводится правкой константы скрипта-владельца, и только потом попадает в канон. Журнал — тема 79.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# 79. След сверки переехал в секцию docs; ключ верхнего уровня ронял скрипты (2026-08-23)
|
||||
|
||||
## Что было
|
||||
|
||||
Тема 78 завела след сверки документов ключом `last` в секции `[healthcheck]`
|
||||
файла `.av-dev.toml`. Ревью трансформации — три прохода по скиллам и документам —
|
||||
нашло, что такого ключа не переживает ни один скрипт плагина.
|
||||
|
||||
Проверено запуском, а не рассуждением. В проекте с `[healthcheck] last` команда
|
||||
`docs.py check` печатает `ОТКАЗ: .av-dev.toml: неизвестные ключи верхнего уровня:
|
||||
healthcheck` и выходит кодом 3; `tasks.py check` — то же самое. Верхний уровень
|
||||
файла стережёт `shared/config.py` константой `TOP_KEYS`, и неизвестный ключ там —
|
||||
**отказ**, а не пропуск. То есть первый же прогон сверки сделал бы нерабочими
|
||||
`canon check/adopt/upgrade`, весь `task-track` вместе с закрытием задачи и гейт
|
||||
проекта, который их зовёт.
|
||||
|
||||
**Корень — не описка, а ложное обещание документа.** Раздел `.av-dev.toml` в
|
||||
каноне утверждал: «неизвестный ключ `docs.py` игнорирует». Утверждение было
|
||||
неверным и старше темы 78; при проектировании следа опёрлись на него и скрипт не
|
||||
открыли, хотя докстринг `check_keys` говорит прямо обратное: «неизвестный ключ —
|
||||
отказ, а не безмолвный пропуск».
|
||||
|
||||
## Решено
|
||||
|
||||
**Р319. След живёт ключом `healthcheck_last` в секции `[docs]`.** Секция досталась
|
||||
ему по смыслу: `[docs]` — настройки проверок документов, а сверка документов и
|
||||
есть такая проверка. Своя секция верхнего уровня стоила бы правки общего читателя
|
||||
`shared/config.py` и превратила бы файл, объявленный «версией и настройками», в
|
||||
хранилище состояния.
|
||||
|
||||
**Р320. Новый ключ `.av-dev.toml` заводится правкой константы скрипта-владельца,
|
||||
и только потом появляется в каноне.** Порядок именно такой, а не обратный:
|
||||
владелец ключа — тот скрипт, чья константа его перечисляет (`TOP_KEYS` в
|
||||
`shared/config.py`, `DOCS_KEYS` в `docs.py`, свой список в `tasks.py`).
|
||||
|
||||
**Р321. Канон приведён к скрипту, а не скрипт к канону.** Отказ кодом 3 —
|
||||
поведение верное: ключ, положенный не в ту секцию, при молчаливом пропуске не
|
||||
значит ничего, проверка объявляет себя неприменимой, отчёт выходит зелёным, и на
|
||||
месте настройки оказывается тишина. Ложное обещание снято, на его месте — правило
|
||||
Р320 и названная цена этой ошибки.
|
||||
|
||||
## Следствия
|
||||
|
||||
**С282. Версия раскладки не двигается.** Ключ необязательный и заводится сам
|
||||
первым прогоном сверки; проекту делать нечего, а запись журнала версий нужна ради
|
||||
пункта «что сделать проекту».
|
||||
|
||||
**С283. Правило «своей прозе здесь верить нельзя» распространяется и на
|
||||
собственную документацию плагина.** Оно написано про возврат агента, но работает
|
||||
шире: утверждение документа о поведении скрипта проверяется **запуском скрипта**,
|
||||
и стоит эта проверка одной команды. Здесь её не сделали, и цена вышла в рабочую
|
||||
поломку у всякого, кто позвал бы сверку.
|
||||
|
||||
**С284. Гейт репозитория такого класса дефектов не ловит и ловить не может.** Он
|
||||
судит форму: фронтматтеры, дословность копий, адреса, номера журнала, рендер
|
||||
диаграмм. Согласованность прозы с поведением скрипта — суждение, и добыло его
|
||||
ревью, а не хук. Это довод в пользу того, чтобы прогон ревью по трансформации
|
||||
шёл не «если останется время», а следом за ней.
|
||||
@@ -130,3 +130,4 @@
|
||||
| 76 | [Лёгкий проход в цикле, тяжёлые — в отдельном скилле](76-proof-in-cycle-deep-review-apart.md) | 2026-08-23 |
|
||||
| 77 | [Цикл задачи проверяет механику; метки сняты](77-cycle-checks-mechanics-labels-dropped.md) | 2026-08-23 |
|
||||
| 78 | [Хвост задачи: отражение молча, новое — по слову](78-tail-reflection-silent-new-by-word.md) | 2026-08-23 |
|
||||
| 79 | [След сверки переехал в секцию docs; ключ верхнего уровня ронял скрипты](79-healthcheck-trace-moved-into-docs-section.md) | 2026-08-23 |
|
||||
|
||||
Reference in New Issue
Block a user