секции роадмапа названы и закреплены линтером

готово | запланировано | направления | разработка, англ. done | planned |
directions | tooling. Из четырёх предложенных имён отвергнуто одно, и по
проверяемой причине: «окружение» уже занято — в architecture.md это боевое
окружение приложения, «где работает, что рядом, кто перезапускает», и одно
слово в двух смыслах развело бы документы канона.

Секции роадмапа стали каноническими, в отличие от секций беклога, и разница
выведена, а не назначена: у каждой секции роадмапа своя семантика, в первую
пишет сам close, и роадмап, названный по-своему, читался бы только своим
автором. Секции беклога — полки, смысла не несут, остаются делом проекта.

check проверяет три вещи: состав закреплён (чужая секция — ошибка), все четыре
обязаны быть, язык один на весь индекс. Проверено на том случае, ради которого
правило и заводилось: «Что уже пройдено», которую healthlog вёл руками, теперь
называется ошибкой поимённо. Оба языка прогнаны вживую, включая close в
английский роадмап.

Ключа tasks.achieved_section не появилось — секция достигнутого опознаётся по
каноническому имени в любом из языков; --roadmap-sections у init упразднён,
выбирать больше нечего.

Названные вслух компромиссы: «готово» слегка тянет в трекерную рамку
«состояние работы», тогда как секция про возможность — перевесила читаемость;
цель в «запланировано» может быть уже наполовину построена, это очередь, а не
«не начато», «в работе» живёт в SPRINT.md.

DECISIONS 19: ГГГ переписан, добавлен ДДД, следствие 78 заменено. TODO 7 закрыт.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-08-04 17:58:31 +03:00
co-authored by Claude Opus 5
parent e847bfa0ea
commit ef0183b06b
8 changed files with 191 additions and 90 deletions
+27 -7
View File
@@ -1407,16 +1407,36 @@ SSS: рубрика на узел без нового понятия порож
словаре, тесте готовности, автомате переходов, `split.md` и трёх местах
`tasks.py`.
**ГГГ. Имена секций роадмапа временные.** `умеет` / `строим` / `направления` /
`станок` приняты как рабочие и признаны неудачными на месте — особенно `станок`
(слово пришло из `CLAUDE.md`, где «общий станок» уже значит инструмент,
врывающийся в спринт). Вопрос запаркован до отдельного захода.
**ГГГ. Имена секций роадмапа — `готово` / `запланировано` / `направления` /
`разработка`.** Первый набор (`умеет` / `строим` / `станок`) прожил один заход и
был признан неудачным. Из четырёх предложенных имён отвергнуто одно, и по
проверяемой причине: **`окружение` уже занято** — в `architecture.md` это боевое
окружение приложения, «где работает, что рядом, кто перезапускает», и одно слово
в двух смыслах развело бы документы канона. Взято `разработка`.
Принятый компромисс назван вслух: `готово` слегка тянет обратно в трекерную рамку
«состояние работы», тогда как секция про **возможность**. Перевесила читаемость с
первого взгляда, а смысл несут заголовки целей внутри секции. Так же принято, что
цель в `запланировано` может быть уже наполовину построена: это очередь, а не
«не начато», а «в работе» живёт в `SPRINT.md`.
**ДДД. Секции роадмапа канонические, секции беклога — нет.** Разница выведена, а
не назначена: у секций роадмапа есть **семантика** (достигнутое, очередь, долгое,
не про продукт), в первую пишет сам `close`, и роадмап, названный по-своему,
читался бы только своим автором. Секции беклога (`ядро`, `инфра`) семантики не
несут — это полки. Поэтому `check` проверяет у роадмапа три вещи: состав закреплён
(чужая секция — ошибка), все четыре обязаны быть, язык один на весь индекс;
`--roadmap-sections` у `init` упразднён. Английский набор — `done` | `planned` |
`directions` | `tooling`.
Проверено на том самом случае, ради которого правило и заводилось: секция «Что
уже пройдено», которую healthlog вёл руками, теперь называется ошибкой поимённо.
### Что из этого следует
78. **Секция достигнутого — единственная, чьё имя знает скрипт.** Остальные
берутся из заголовков индекса как есть; в эту `close` пишет сам, поэтому её
имя живёт в `docs/.pm.json`, ключ `tasks.achieved_section`.
78. **Ключа `tasks.achieved_section` не появилось.** Секция достигнутого
опознаётся по каноническому имени в любом из двух языков, и лишний knob не
заводится: канонический состав отвечает на тот же вопрос надёжнее конфига.
79. **`reopen` цели снимает строку достигнутого.** Иначе роадмап продолжает
утверждать, что приложение умеет то, что вернулось в работу.
80. **Прозаический раздел в индексе — дрейф.** Любой `##` проверка считает