- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
53 lines
4.6 KiB
Markdown
53 lines
4.6 KiB
Markdown
# 42. `quick` стал дешевле `standard` тремя способами (2026-08-07)
|
||
|
||
`quick` и `standard` совпадали составом (шесть проходов) и различались глубиной
|
||
трёх тем: сверка против разбора. На практике это означало один проход, задающий
|
||
на один вопрос меньше, и потолок 4 вместо 2. Нижняя ступень не экономила почти
|
||
ничего и называлась отдельной ступенью зря.
|
||
|
||
Отдельно выяснилось, что дешевизна конвейера держалась на двух заявленных
|
||
рычагах — узкий вход и потолок находок, — и **оба применялись к одному проходу
|
||
из шести**. У `specs` и `code` потолка не было вовсе, а вход `code` включал
|
||
чтение дома конвенций «весь и целиком» на каждой задаче.
|
||
|
||
**Р170. `quick` теряет приёмник тем.** Темы `security`, `operations` и
|
||
`architecture` на этой ступени закрывает `code` сверкой с **записанными
|
||
инвариантами** `CLAUDE.md`, потолком 1 находка на все три. Это не «глубина ниже»
|
||
— это **другой дом темы**, куда более узкий, и в плане он так и называется.
|
||
|
||
**Р171. Приёмник тем запускается тогда и только тогда, когда ему есть что
|
||
принимать.** Правило было в `wide` («нет своих тем проекта — не запускается») и
|
||
теперь распространено на `quick`. Совпадение неслучайное: темы ядра `basics`
|
||
держит ровно на одной ступени из трёх, а приёмником проектных тем работает на
|
||
всех.
|
||
|
||
**Р172. Вход и потолок применены к каждому проходу с мнением.** На `quick`
|
||
`specs` читает только дельта-спеку, `code` — только индекс конвенций. Потолки
|
||
напечатаны и раздельны по половинам `code`: 3 технических, 2 конвенционных, 1 по
|
||
инвариантам. Раздельность обязательна — конвенционных находок больше по
|
||
построению, и в общем списке они вытеснили бы техническую половину, чей пропуск
|
||
дороже.
|
||
|
||
**Р173. Сработавший потолок объявляется.** Проход, срезавший находки, говорит
|
||
строкой, сколько осталось за срезом и какого рода. Молчащий срез неотличим от
|
||
«больше не нашлось» — тот же класс молчащего пропуска, против которого написан
|
||
весь конвейер.
|
||
|
||
**Р174. Отрицательный тест `quick` стал жёстче, а не мягче.** Вопросы «обратима
|
||
ли миграция» и «что с записями новой версии после отката» задавал приёмник тем;
|
||
на `quick` его нет. Значит изменение, которое не откатывается обратной правкой,
|
||
на `quick` не идёт вовсе — каким бы малым оно ни было.
|
||
|
||
## Что из этого следует
|
||
|
||
**С153. Ступень, не дающая экономии, не нужна.** Две ступени, различающиеся
|
||
одним вопросом одного прохода, — это одна ступень с шумом в отчёте.
|
||
|
||
**С154. Рычаг, применённый к одному исполнителю, — не рычаг, а исключение.**
|
||
Заявленный механизм экономии проверяется перечислением: к кому он применён и к
|
||
кому нет.
|
||
|
||
**С155. Проход без потолка выдаёт столько находок, сколько нашёл поверхностей.**
|
||
Ровно из-за этого был снят проход независимой реализации; тот же механизм
|
||
работал у `code` и `specs` и не был замечен, потому что счёт никто не считал.
|