профили ревью: тяжёлые проходы в верхнюю ступень, на умолчании — один базовый
Тема 33 сняла самую большую разовую статью расхода, но не тронула главную — частоту. Меряющая пара стояла в standard, то есть на большинстве задач, и именно она делала прогон долгим: два прохода держат машину, идут цепочкой и доказывают находки запуском. Цель разбора названа прямо: лучше поправить в следующей задаче, чем держать одну два часа. adversary и ops переехали в wide. Стадия осталась самой урожайной за всю историю замеров — пять из семи выживших находок дозапуска и единственная находка про молчаливый старт отката, — но её ценность оплачивается на каждой задаче, а получается на немногих. Решение по цене, не по ценности. Заведён review-basics: мелкая осадка двух тяжёлых проходов, без единого запуска. Стоит только в standard. Восемь вопросов, на которые отвечают чтением: таймаут и отказ соседа, идемпотентность и одновременная запись, остановка на середине, частичный откат при двух версиях, наблюдаемость и тишина, очевидный рост объёма, второй способ мимо единой точки (грепом, не картой), что отсюда удалить. Потолок 4 находки, машину не держит, ничего не меряет. Вопрос про частичный откат — не для полноты списка. Без него правило «миграция схемы не поднимает ступень» рассыпалось бы: раньше миграцию разбирал ops, а он теперь наверху. Проход заведён затем, чтобы у standard остался хоть один взгляд на ось времени. Модель у него верхняя, opus, и это не спорит со словом «средний»: усилие режется входом и потолком, а не моделью. Дешёвая модель на опиниативном проходе платит триажем — это записанный замер, отменять его без нового замера нечем. Лестница вышла 4/5/7. Главный выигрыш не в числе проходов, а в том, что из standard ушла цепочка: теперь там гейт, три прохода одним сообщением и триаж — граф плоский, ждать некому. Правило выбора ступени переписано на два вопроса, и объём изменения вошёл в него впервые. Крупное или незнакомое — трогает несколько узлов, переносит ответственность, форму решения нащупывают по ходу — это wide, и он рассчитан на 5-10% задач. Мелкое — один узел, форма очевидна заранее, откат сводится к обратной правке — quick. Всё остальное standard, рабочее умолчание. Раньше ступень выбиралась только по классу изменения и на размер смотреть запрещала; теперь признаков два: класс отвечает за обратимость, объём — за цену разбирательства. Отрицательный тест сохранил прежнюю мудрость в новой рамке: что после мерджа не откатывается обратной правкой — не quick, каким бы маленьким ни был дифф. Три строки миграции идут в standard. Спорный случай решается вниз, и асимметрия объяснена ценой: ошибка в сторону standard стоит находки на следующей задаче, ошибка в обратную — трёх тяжёлых проходов на каждой задаче, выбранной неверно. Сделка записана вместе с обратной связью, иначе это тихая потеря качества. На quick и standard не проверяется ничего, что требует запуска: построенный путь, эксперимент против драйвера, любое число. Это самая крупная граница покрытия конвейера, и она идёт строкой в каждом таком прогоне поимённо. Сигналов о том, что ступень занижена, два: журнал дефектов в docs/review.md и сам basics — он единственный, кто смотрит на дифф целиком на нижних ступенях, и обязан сказать строкой, если задача выглядит крупнее профиля. Побочно: условие профиля design то же самое, так что rubric и architecture на предложении тоже упали до 5-10% задач. Тема 34 в DECISIONS.md, следствия 130-133. Версия канона не поднята; инструкция проекту дописана в пункт 8 записи «Версия 4». Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2328,3 +2328,87 @@ JJJ): у профиля обязан быть один правильный от
|
||||
стоимости, тест выбора верхней ступени и проектный перечень мест держались
|
||||
только на `reimpl`. Оставшись, они выглядели бы работающими правилами и
|
||||
тратили бы внимание на каждом прогоне.
|
||||
|
||||
## 34. Пропускная способность против глубины: тяжёлые проходы уехали в верхнюю ступень (2026-08-06)
|
||||
|
||||
Тема 33 сняла самую большую разовую статью расхода, но не тронула главную —
|
||||
**частоту**. Меряющая пара стояла в `standard`, то есть на большинстве задач, и
|
||||
именно она делала прогон долгим: два прохода держат машину, идут цепочкой и
|
||||
доказывают находки запуском. Разбор шёл от цели, названной прямо: **лучше
|
||||
поправить в следующей задаче, чем держать одну два часа.**
|
||||
|
||||
**ААББСС. `adversary` и `ops` переехали в `wide`, и это решение по цене, а не по
|
||||
ценности.** Стадия осталась самой урожайной за всю историю замеров — пять из семи
|
||||
выживших находок дозапуска и единственная находка про молчаливый старт отката. Но
|
||||
её ценность оплачивается на **каждой** задаче, а получается на немногих: оракул
|
||||
добывается запуском, запуск — это машина, цепочка и часы. Ступень, которая раньше
|
||||
была умолчанием, стала исключением на 5–10% задач.
|
||||
|
||||
**ААББТТ. Заведён `review-basics` — мелкая осадка двух тяжёлых проходов, без
|
||||
единого запуска.** Он стоит только в `standard` и берёт ту половину вопросов, на
|
||||
которые отвечают **чтением**: таймаут и отказ соседа, идемпотентность и
|
||||
одновременная запись, остановка на середине, частичный откат при двух версиях,
|
||||
наблюдаемость и тишина, очевидный рост объёма — плюс два вопроса архитектурного:
|
||||
второй способ мимо единой точки (грепом, не картой) и что отсюда удалить. Потолок
|
||||
4 находки, машину не держит, ничего не меряет.
|
||||
|
||||
Отдельная его обязанность — **вопрос 4, частичный откат**. Без него правило
|
||||
«миграция схемы не поднимает ступень» рассыпалось бы: раньше миграцию разбирал
|
||||
`ops`, а он теперь в `wide`. Проход заведён не «до кучи», а затем, чтобы у
|
||||
`standard` остался хоть один взгляд на ось времени.
|
||||
|
||||
Модель у него верхняя, `opus`, и это не противоречит слову «средний»: усилие
|
||||
режется **входом и потолком**, а не моделью. Дешёвая модель на опиниативном
|
||||
проходе платит триажем — это записанный замер, и отменять его без нового замера
|
||||
нельзя.
|
||||
|
||||
**ААББУУ. Объём и незнакомость изменения вошли в правило выбора ступени.** Раньше
|
||||
ступень выбиралась только по классу («вводит ли новое понятие»), и правило прямо
|
||||
запрещало смотреть на размер. Теперь вопросов два: крупное или незнакомое (трогает
|
||||
несколько узлов, переносит ответственность, форму решения нащупывают по ходу) →
|
||||
`wide`; мелкое (один узел, форма очевидна заранее, откат — обратная правка) →
|
||||
`quick`; всё остальное → `standard`. Причина смены: цена разбирательства растёт
|
||||
именно с объёмом и неизвестностью, а не с классом правила.
|
||||
|
||||
Отрицательный тест `quick` сохранил прежнюю мудрость в новой рамке: **что после
|
||||
мерджа не откатывается обратной правкой — не `quick`, каким бы маленьким ни был
|
||||
дифф.** Три строки миграции идут в `standard`.
|
||||
|
||||
**ААББФФ. Спорный случай решается вниз, и асимметрия объяснена ценой.** Между
|
||||
`standard` и `wide` — в пользу `standard`: ошибка сюда стоит находки на следующей
|
||||
задаче, ошибка обратно стоит трёх тяжёлых проходов на каждой задаче, выбранной
|
||||
неверно. Между `quick` и `standard` — тоже в пользу `standard`, но по другой
|
||||
причине: там разница в один дешёвый проход, зато единственный, кто на нижних
|
||||
ступенях смотрит на отказы.
|
||||
|
||||
Доля `wide` 5–10% записана как **проверка правила, а не пожелание**: если ступень
|
||||
уходит каждой третьей задаче, её выбирают по ощущению важности.
|
||||
|
||||
**ААББХХ. Сделка записана вместе с механизмом обратной связи, иначе это тихая
|
||||
потеря качества.** На `quick` и `standard` не проверяется ничего, что требует
|
||||
запуска: построенный путь, эксперимент против драйвера, любое число. Это самая
|
||||
крупная граница покрытия конвейера, и она обязана идти строкой в каждом таком
|
||||
прогоне поимённо. Обратная связь — журнал дефектов `docs/review.md`: класс,
|
||||
который ловят только меряющие проходы, начал всплывать после мерджа — значит
|
||||
ступень выбирают слишком низко. Плюс сам `basics` обязан сигналить строкой, если
|
||||
видит, что ступень занижена: он единственный, кто смотрит на дифф целиком на
|
||||
нижних ступенях.
|
||||
|
||||
### Что из этого следует
|
||||
|
||||
130. **Стоимость прохода — это его цена, умноженная на частоту, и вторая
|
||||
переменная важнее.** Тема 33 убрала самый дорогой проход, тема 34 —
|
||||
самый частый. Второе дало больше, хотя снятый проход был дешевле каждого
|
||||
отдельного `reimpl`.
|
||||
131. **Урожайность прохода не отвечает на вопрос, где ему стоять.** Меряющая пара
|
||||
осталась самой ценной и всё равно уехала вверх: ценность оправдывает
|
||||
существование прохода, но не его частоту.
|
||||
132. **Замена тяжёлого прохода лёгким записывается как сужение, а не как
|
||||
эквивалент.** `basics` задаёт те же вопросы чтением, и его ответы поэтому
|
||||
слабее — условия вместо оракулов. Назвать это «покрыли то же дешевле» значит
|
||||
соврать себе на первом же прогоне.
|
||||
133. **Ступень, выбираемая по классу изменения, слепа к объёму.** Правило,
|
||||
запрещавшее смотреть на размер, защищало от выбора по ощущению важности — и
|
||||
заодно отправляло трёхстрочную правку и переборку пяти узлов в один профиль.
|
||||
Признаков нужно два: класс отвечает за обратимость, объём — за цену
|
||||
разбирательства.
|
||||
|
||||
Reference in New Issue
Block a user