Files
dev-skills/decisions/26-canon-4-retroactive-edit-cancelled.md
T
av bf6a173115 журнал решений: разложен по теме на файл, метки решений стали номерами
- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель;
- буквенные метки решений заменены сквозными Р1–Р234, следствия получили
  префикс С при прежних номерах: схема букв выродилась до пятибуквенных и
  сломалась — `АЕАКЛ` была занята и темой 53, и темой 65;
- 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер
  означал тему, а слово стояло «решение», формулировка исправлена.
2026-08-13 12:40:56 +03:00

4.4 KiB
Raw Blame History

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. Версия канона отделяет состояния проектов, а не редакции текста — и ровно поэтому её нельзя не поднять, когда состояние хоть одного проекта уже зафиксировано.