# 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. Слово, занятое дважды в одном файле, дороже неточного слова.** Читатель, пришедший за термином, получает два ответа и не знает, что их два.