- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
5.5 KiB
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. Слово, занятое дважды в одном файле, дороже неточного слова. Читатель, пришедший за термином, получает два ответа и не знает, что их два.