канон 4: секция «Сопровождение», «Готово» вниз, порядок закреплён
healthlog уже переехал на канон 3, а переименование секции я внёс правкой записи версии 3 задним числом — то есть переписал текст, по которому он ехал. Посылка «ни один проект на каноне 3 не стоит» была ложной, решение ШШШ отменено. Запись версии — черновик ровно до первого переехавшего проекта. После этого она история, и любое изменение канона заводит новую версию, даже если меняется одно слово. Проверять дёшево: grep '"canon"' по живым проектам. Дорого обратное — проект, повышенный по тексту, которого больше не существует, невоспроизводим. Запись версии 3 восстановлена дословно (Разработка | Tooling), переименование уехало в версию 4. jellybit, стоящий на каноне 2, прочтёт обе записи подряд и заведёт Разработка, чтобы через шаг переименовать; в шаг версии 3 добавлена оговорка «едешь сразу на 4 — заводи Готово последней и не переставляй дважды». «Готово» переехало вниз, и порядок секций стал каноническим. Достигнутое копится: через год этой секции больше, чем всех остальных вместе, и стоя первой она отодвигает за экран то, ради чего роадмап открывают чаще всего. Порядок проверяет roadmap_lint, переставляет check --fix — вместе с содержимым секций, потому что двигать десяток строк руками это работа, на которой ошибаются. Чужую секцию перестановка не трогает вовсе: её место в порядке неизвестно. Индексы позиций считаются из самого кортежа: ACHIEVED был 0 и стал 3, хардкод пережил бы перестановку молча и сломал бы close. Обкатка нашла два дефекта оформления, оба порождённые самой перестановкой. Отбивка нужна и перед заголовком — сдвиг блоков ставит два заголовка вплотную. Удаление строки индекса оставляет две пустые подряд, и пустоты копятся. Проверка оформления теперь сверяется с самим нормализатором, а не своим набором условий: два описания одного правила разъедутся, и check начнёт молчать о том, что --fix правит. CANON_VERSION = 4 в docs.py, примеры .pm.json в canon.md и skeletons.md. DECISIONS тема 26 (ЭЭЭ, ЮЮЮ, ЯЯЯ, следствия 98–100). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+58
-5
@@ -1746,11 +1746,13 @@ ADR, запискам разведки и сообщениям коммитов
|
||||
смысл — сошлись на смысле, потому что метрики, логи, инфраструктура и выкладка
|
||||
в эту секцию просятся и так.
|
||||
|
||||
**ШШШ. Версия канона не менялась, и это законно.** Ни один проект на каноне 3 не
|
||||
стоит: healthlog и jellybit держат канон 2, повышение только предстоит. Запись
|
||||
версии 3 правится **как черновик**, а не как история: тот, кто по ней поедет,
|
||||
увидит сразу `Сопровождение`. Версия отделяет одно **состояние проектов** от
|
||||
другого, а не одну редакцию текста от другой.
|
||||
**ШШШ. Версия канона не менялась, и это законно.** ~~Ни один проект на каноне 3
|
||||
не стоит: healthlog и jellybit держат канон 2, повышение только предстоит.~~
|
||||
|
||||
**Отменено в тот же день (тема 26).** Посылка была ложной: healthlog уже переехал
|
||||
на канон 3, и правка записи версии 3 задним числом переписывала то, по чему он
|
||||
ехал. Правило осталось верным, применение — нет: черновиком запись версии
|
||||
является ровно до того, как **первый** проект по ней поехал.
|
||||
|
||||
**ЩЩЩ. Сопровождение и эксплуатация — целое и часть, и словарь у трёх мест
|
||||
общий.** Тема живёт в трёх документах, и раньше каждое место говорило своим
|
||||
@@ -1781,3 +1783,54 @@ ADR, запискам разведки и сообщениям коммитов
|
||||
переименовании `Разработка` → `Сопровождение` проверка назвала секцию
|
||||
роадмапа чужой и остановилась: регистр она правит сама, смысл — нет. Ровно
|
||||
то поведение, которое нужно проекту при повышении канона.
|
||||
|
||||
## 26. Канон 4: правка задним числом отменена (2026-08-04)
|
||||
|
||||
### Что было
|
||||
|
||||
Секцию `Разработка` переименовали в `Сопровождение` без повышения версии канона —
|
||||
на посылке «ни один проект на каноне 3 не стоит» (тема 25, ШШШ). Посылка
|
||||
оказалась ложной: healthlog уже переехал, `docs/.pm.json` держит `"canon": 3`, а
|
||||
роадмап — секцию `Разработка` с прописной. Правка записи версии 3 переписывала
|
||||
то, по чему он ехал.
|
||||
|
||||
### Решено
|
||||
|
||||
**ЭЭЭ. Запись версии — черновик ровно до первого переехавшего проекта.** После
|
||||
этого она **история**, и любое изменение канона заводит новую версию, даже если
|
||||
меняется одно слово. Проверять это дёшево: `grep '"canon"' */docs/.pm.json` по
|
||||
живым проектам. Дорого — обратное: проект, повышенный по тексту, которого больше
|
||||
не существует, невоспроизводим.
|
||||
|
||||
Запись версии 3 восстановлена дословно (`Разработка` | `Tooling`), переименование
|
||||
уехало в версию 4. jellybit, стоящий на каноне 2, прочтёт обе записи подряд и
|
||||
заведёт `Разработка`, чтобы через шаг переименовать; в шаг версии 3 добавлена
|
||||
оговорка «едешь сразу на 4 — заводи `Готово` последней и не переставляй дважды».
|
||||
Лишний шаг — плата за честную историю, и она мала.
|
||||
|
||||
**ЮЮЮ. `Готово` переехало вниз, и порядок секций стал каноническим.**
|
||||
Достигнутое **копится**: через год этой секции больше, чем всех остальных
|
||||
вместе, — и стоя первой она отодвигает за экран ровно то, ради чего роадмап
|
||||
открывают чаще всего. Порядок теперь проверяется (`roadmap_lint`) и правится
|
||||
(`check --fix` переставляет секции вместе с содержимым): без проверки порядок
|
||||
разъедется молча, а переставлять секцию с десятком строк руками — работа, на
|
||||
которой ошибаются.
|
||||
|
||||
**ЯЯЯ. Индексы позиций считаются из самого кортежа.** `ACHIEVED` был `0` и стал
|
||||
`3`; хардкод индексов пережил бы перестановку молча и сломал бы `close`. Теперь
|
||||
`PLANNED, DIRECTIONS, OPERATIONS, ACHIEVED = range(len(ROADMAP_SECTIONS))` —
|
||||
переставили секцию, индексы переехали сами.
|
||||
|
||||
### Что из этого следует
|
||||
|
||||
98. **Отбивка нужна и перед заголовком.** Перестановка блоков ставит два
|
||||
заголовка вплотную — `spaced_sections` правил только строку после. Дефект
|
||||
нашёлся сразу же, на первой перестановке демо-набора: класс правки,
|
||||
существующий только потому, что появилась другая правка.
|
||||
99. **`check --fix` переставляет, но не переименовывает.** Чужую секцию он
|
||||
оставляет ошибкой, и на переименовании `Разработка` → `Сопровождение`
|
||||
останавливается: имя — решение человека, порядок — механика. Тот же разрез,
|
||||
что между регистром (правит) и составом (не трогает).
|
||||
100. **Версия канона отделяет состояния проектов, а не редакции текста** — и
|
||||
ровно поэтому её нельзя не поднять, когда состояние хоть одного проекта
|
||||
уже зафиксировано.
|
||||
|
||||
Reference in New Issue
Block a user