- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
4.4 KiB
26. Канон 4: правка задним числом отменена (2026-08-04)
Что было
Секцию Разработка переименовали в Сопровождение без повышения версии канона
— на посылке «ни один проект на каноне 3 не стоит» (тема 25,
Р102). Посылка оказалась ложной:
healthlog уже переехал, docs/.pm.json держит "canon": 3, а роадмап — секцию
Разработка с прописной. Правка записи версии 3 переписывала то, по чему он
ехал.
Решено
Р104. Запись версии — черновик ровно до первого переехавшего проекта. После
этого она история, и любое изменение канона заводит новую версию, даже если
меняется одно слово. Проверять это дёшево: grep '"canon"' */docs/.pm.json по
живым проектам. Дорого — обратное: проект, повышенный по тексту, которого больше
не существует, невоспроизводим.
Запись версии 3 восстановлена дословно (Разработка | Tooling), переименование
уехало в версию 4. jellybit, стоящий на каноне 2, прочтёт обе записи подряд и
заведёт Разработка, чтобы через шаг переименовать; в шаг версии 3 добавлена
оговорка «едешь сразу на 4 — заводи Готово последней и не переставляй дважды».
Лишний шаг — плата за честную историю, и она мала.
Р105. Готово переехало вниз, и порядок секций стал каноническим.
Достигнутое копится: через год этой секции больше, чем всех остальных
вместе, — и стоя первой она отодвигает за экран ровно то, ради чего роадмап
открывают чаще всего. Порядок теперь проверяется (roadmap_lint) и правится
(check --fix переставляет секции вместе с содержимым): без проверки порядок
разъедется молча, а переставлять секцию с десятком строк руками — работа, на
которой ошибаются.
Р106. Индексы позиций считаются из самого кортежа. ACHIEVED был 0 и стал
3; хардкод индексов пережил бы перестановку молча и сломал бы close. Теперь
PLANNED, DIRECTIONS, OPERATIONS, ACHIEVED = range(len(ROADMAP_SECTIONS)) —
переставили секцию, индексы переехали сами.
Что из этого следует
С98. Отбивка нужна и перед заголовком. Перестановка блоков ставит два
заголовка вплотную — spaced_sections правил только строку после. Дефект
нашёлся сразу же, на первой перестановке демо-набора: класс правки, существующий
только потому, что появилась другая правка.
С99. check --fix переставляет, но не переименовывает. Чужую секцию он
оставляет ошибкой, и на переименовании Разработка → Сопровождение
останавливается: имя — решение человека, порядок — механика. Тот же разрез, что
между регистром (правит) и составом (не трогает).
С100. Версия канона отделяет состояния проектов, а не редакции текста — и ровно поэтому её нельзя не поднять, когда состояние хоть одного проекта уже зафиксировано.