ревью: лёгкий проход proof в цикле, тяжёлые — в code-deep-review

В цикле задачи темы security и operations закрывает один лёгкий проход
review-proof: чтением и рассуждением, без запуска, потолки раздельные. Машину
он не держит, поэтому идёт в общем залпе — цепочки за ресурс в обычном прогоне
не осталось. Тяжёлая пара adversary и ops переехала в новый скилл
code-deep-review: вход — названная область кода, глубина постоянная, исход —
разбор с человеком и задачи через task-track. Вход глубокому прогону копит сам
цикл строками «отложено». Журнал — тема 76.
This commit is contained in:
av
2026-08-23 15:55:32 +03:00
parent b287cdf71f
commit daf9f8b824
18 changed files with 635 additions and 130 deletions
@@ -0,0 +1,82 @@
# 76. Лёгкий проход в цикле, тяжёлые — в отдельном скилле (2026-08-23)
## Что было
На метке `large` две темы закрывала пара тяжёлых проходов. `review-adversary`
строил путь и **прогонял** падающий тест, `review-ops` снимал числа замером. Оба
помечены «держит машину», а значит шли не разом, а цепочкой: второй ждал первого,
и он же определял, когда стартует триаж.
Замер по прогону в проекте transcriber 23 августа: враждебный проход занял 25
минут и держал весь параллельный залп, эксплуатационный — ещё 9 минут следом за
ним. Ревью кода целиком заняло 62 минуты при цели в час на всю задачу.
Ценность пары при этом не оспаривается и измерена: на пяти задачах подряд
враждебный дал пять из семи выживших находок дозапуска, эксплуатационный —
единственный, кто нашёл, что откат бинаря поверх новой схемы стартует молча.
Спорна не ценность, а **момент оплаты**: она платилась на каждой задаче с меткой
`large`, а получалась на немногих.
## Решено
**Р293. В цикле задачи обе темы закрывает один лёгкий проход `review-proof`.**
`security` и `operations` разом, чтением и рассуждением: набросок пути (вход,
преобразование, куда легло) и ось времени (миграция и откат, рост, удержание,
чужая деградация). Потолки раздельные — 2 находки на тему: общий потолок дал бы
одной теме съесть весь выход прохода.
**Р294. Он ничего не запускает, и потому машину не держит.** Отсюда главное для
времени прогона: он уходит **в общем залпе** с остальными проходами, а не в
цепочке за ресурс. Цепочки в обычном прогоне не осталось вовсе — оба прохода, что
её держали, из конвейера ушли.
**Р295. `critical` этот проход не присваивает.** Оракул `critical` добывается
запуском, а он не запускает; его потолок по severity — `major` с **названным**
оракулом: чем это проверить, если кто-то возьмётся.
**Р296. Тяжёлая пара переехала в новый скилл `av-dev:code-deep-review`.** Не
удалена: уставы сохранены целиком, сменились вход и вызывающий. Вход теперь —
**названная человеком область кода** (модуль, слой, сервис), а не дифф задачи;
метки здесь нет, потому что нет задачи; глубина постоянная — доказательство.
**Р297. Состав глубокого прогона постоянный:** `adversary`, `ops`,
`architecture` на широком входе, `code` по коду целиком, сводит `triage`. Цепочка
за машину там действует полностью — скилл идёт не на задаче, и часы у него есть.
**Р298. Исход глубокого прогона — разговор и задачи, а не правки.** Находки
разбираются с человеком по одной, сверху вниз; по каждой он говорит «берём», «не
берём» с причиной или «не находка». Согласованное уезжает задачами через
`av-dev:task-track`, отвергнутое — строкой в журнал дефектов `docs/review.md`.
Ни одной находки скилл не чинит сам: правка по ходу разбора превращает разговор
в работу.
**Р299. Вход глубокому прогону копит сам цикл.** Всё, что доказывается только
запуском, `review-proof` не выдаёт находкой и не выбрасывает: строка в границах
покрытия называет тему, место и запуск. Строка переносится в доклад дословно и
однажды становится поводом позвать глубокое ревью.
**Р300. Доказательства в цикле задачи нет ни на одной метке, и это сказано
прямо.** Гонка, деградация под нагрузкой, исчерпание ресурса, откат бинаря поверх
новой схемы — класс, который виден только построенным путём и снятым числом. На
`large` его смотрит `proof` чтением и откладывает; ниже `large` не смотрит никто.
Это самая крупная граница покрытия конвейера, и она идёт строкой каждого прогона.
## Следствия
**С264. Глубин в конвейере стало две.** Сверка и разбор; доказательство —
свойство глубокого прогона, и разметчик его не назначает: план с доказательством
некому исполнить.
**С265. Цена ошибки метки вверх упала.** Прежде лишний `large` стоил трёх тяжёлых
проходов, двое из которых держали машину; теперь — двух проходов чтением. Правило
«спорное решается вниз» остаётся, но его обоснование стало слабее, и это
записано.
**С266. Просрочку глубокого ревью видно по отчётам.** Если по одному месту в
строках «отложено» повторяется один и тот же неснятый замер, дело не в метке —
глубокий прогон просрочен. Это второй след рядом с журналом дефектов.
**С267. Тема пережила переезд прохода, и это проверка правила 0 конвейера.**
`ops` ушёл, тема `operations` осталась и досталась `proof`. Ровно ради этого
случая состав прогона и описывается таблицей «тема → глубина → кто закрывает», а
не списком проходов.