Files
dev-skills/decisions/79-healthcheck-trace-moved-into-docs-section.md
T
av 8145b378b2 след сверки: ключ переехал в секцию 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.
2026-08-23 19:35:17 +03:00

59 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Гейт репозитория такого класса дефектов не ловит и ловить не может.** Он
судит форму: фронтматтеры, дословность копий, адреса, номера журнала, рендер
диаграмм. Согласованность прозы с поведением скрипта — суждение, и добыло его
ревью, а не хук. Это довод в пользу того, чтобы прогон ревью по трансформации
шёл не «если останется время», а следом за ней.