- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
57 lines
5.5 KiB
Markdown
57 lines
5.5 KiB
Markdown
# 65. Перечень осей получил дом; две оси жили без владельца (2026-08-13)
|
||
|
||
Слияние плагинов не тронуло ни одной идеи процесса — типы записей, метки, три
|
||
сценария, категории документов, severity находок остались как были. Но оно
|
||
сделало дешёвым то, что раньше было дорого: правило, натянутое между задачами и
|
||
ревью, теперь имеет достижимый дом, а не помеченную копию через границу.
|
||
|
||
**Ось — закрытый перечень значений, по которому что-то ветвится.** Признак
|
||
проверяемый, и он отсекает похожее: темы ревью и документы проекта — списки
|
||
**открытые**, их пополняет проект. Модель прохода — не ось, а цена прогона.
|
||
Осей по этому признаку девять, и дом теперь у каждой.
|
||
|
||
**Р232. Две оси были бездомными, и обе машинные.** Коды выхода объявлялись
|
||
«общим словарём» в **одиннадцати** местах, и каждое объявление перечисляло свой
|
||
набор соседей: «тот же, что у `tasks.py`», «тот же, что у `tasks.py`, `docs.py`
|
||
и `copies.py`». Ни одно не было домом — все списки по памяти, и машина их не
|
||
сверяла, потому что `copies.py` смотрит markdown, а перечни лежали в
|
||
docstring'ах скриптов. Режим прогона (с меткой · без метки) завёлся накануне
|
||
слияния и разошёлся по четырём файлам, ни в одном не будучи назван осью, — при
|
||
том что в уставе `review-basics` он задаёт **саму возможность запуска** прохода.
|
||
|
||
**Р233. Слово «стадия» значило в одном файле две разные вещи.** «Стадия 1 —
|
||
Автотесты … Стадия 5 — Triage» — ступени внутри прогона кода, наружу не
|
||
выходящие; «метка правит обе стадии ревью» — дизайн и код, то есть членение,
|
||
которое видит вызывающий скилл. Разведено: ступени внутри, стадии снаружи.
|
||
|
||
**Р234. Дом перечня — не дом значений.** `shared/axes.md` держит только сами
|
||
оси, их адреса и **чего каждая не решает**. Механика остаётся у владельца:
|
||
второй пересказ разошёлся бы с первым, а вот перечень нужен целиком и в одном
|
||
месте — вопрос «а не задаёт ли это метку» задают из скилла, который метку не
|
||
ведёт. Целиком сюда переехали ровно две оси, у которых владельца нет.
|
||
|
||
**Карта нашла ошибку в самой себе, и это её главный довод.** Первая редакция
|
||
объявила пустой клетку «категория документа × метка»: якобы проект вправе
|
||
завести тему, под которую ни одна метка не отряжает прохода. Проверка показала
|
||
обратное — `review-basics` приёмник проектных тем при **любой** метке. Пустой
|
||
оказалась соседняя клетка: на прогоне **без метки** план фиксирован сценарием, и
|
||
своих тем проекта в нём нет вовсе. Найти это можно было только сведя оси в одну
|
||
таблицу.
|
||
|
||
## Что из этого следует
|
||
|
||
**С222. Словарь, объявленный «общим» в каждом потребителе, — это перечень по
|
||
памяти, а не дом.** Признак вырожденности проверяемый: каждое объявление
|
||
называет свой набор соседей, и ни одно не называет владельца.
|
||
|
||
**С223. Копия в docstring'е скрипта машиной не сверяется, потому что `copies.py`
|
||
смотрит markdown.** Значит, прозе в коде дом нужнее, чем прозе в документах: там
|
||
расхождение ловит гейт, здесь — никто.
|
||
|
||
**С224. Пустая клетка в таблице осей — находка, а не пробел оформления.** Она
|
||
называет случай, для которого процесс не сказал ничего, и до сведения осей в
|
||
таблицу такой случай неотличим от продуманного умолчания.
|
||
|
||
**С225. Слово, занятое дважды в одном файле, дороже неточного слова.** Читатель,
|
||
пришедший за термином, получает два ответа и не знает, что их два.
|