# 74. Ревью дизайна снято, разметка переехала за код (2026-08-23) ## Что было Сценарий решения шёл так: `propose` → разметка → ревью дизайна → чекпоинт → `apply` → ревью кода. Разметка считала метку по написанному о задаче, а стадия ревью дизайна смотрела предложение до кода: `specs` на каждой задаче, `rubric` с `medium`, `architecture` с `large`. Замер по прогонам в проекте transcriber 22–23 августа: полный прогон сценария занимал 3 часа 20 минут машинного времени, из них разметка и ревью дизайна с отработкой находок — 30 минут, а повторная разметка с повторным архитектурным проходом после чекпоинта — ещё 15. Владелец назвал целью час на прогон. ## Решено **Р280. Стадия ревью дизайна снята целиком.** Ни `specs`, ни `rubric`, ни `architecture` на предложении не запускаются. Требования сверяет `specs` на готовом коде — тот же проход, тот же дом темы, другой момент. **Р281. Разметка переехала за `apply`.** `review-scope` идёт после того, как код написан и гейт зелёный, и до первой ступени прогона. Величина по-прежнему считается один раз на задачу: перезапуск прогона по находке «переделать форму» разметку не повторяет. **Р282. Размер меряется по диффу, сложность — по написанному о задаче.** Дифф отвечает «сколько мест тронуто на самом деле» и ничего не обещает; на вопрос «знали ли форму решения заранее» он не отвечает вовсе — по готовому коду не видно, нащупывали его или писали по образцу. Признак незнакомого стал проверяемым: **обещанные границы задачи сверяются с тронутыми**, разошлись поимённо — формы не знали. **Р283. Правило «метка не пересматривается по факту диффа» снято.** Оно существовало ровно потому, что разметка шла до кода: пересмотр означал бы второй запуск разметчика. Теперь дифф — вход разметки, а не повод её оспорить, и пересматривать внутри прогона нечего: второй запуск на том же дереве вернёт то же самое. **Р284. Чекпоинт остался и переехал к предложению.** Он стоит сразу после `propose` и до кода. Прежде он стоял после ревью дизайна намеренно — человек читал объяснение, уже просеянное машиной; теперь просеивать нечем, и это прямая цена решения. Взамен стоп пришёл раньше: коррекция здесь стоит правки спеки, а не переписывания готового кода. **Р285. `review-rubric` осиротел, и это сказано в его уставе.** Проход жил только на снятой стадии: рубрика, составленная при видимом коде, подстраивается под увиденное, а судить код по критерию, под который он писался, — корреляция по построению. Устав остаётся рабочим для прямого вызова человеком; конвейер его не зовёт. **Р286. Приёмочные критерии приходят только от постановки и с чекпоинта.** Раньше третьим источником была рубрика, уезжавшая в `tasks.md`. Слот в скелете `openspec/config.yaml` снят вместе с ней. ## Следствия **С257. Архитектурная находка теперь стоит переписывания.** Довод «та же находка на предложении стоит абзаца» был основанием стадии, и он остаётся верным — просто конвейер за него больше не платит. `architecture` работает по коду и только с меткой `large`; что этот класс сузился, идёт строкой в границы покрытия каждого прогона. **С258. Разведённость выбора метки сохранена, а её основание сменилось.** Прежде метка выбиралась **до** кода, и давление «я почти закончил» на неё не действовало по построению. Теперь защита держится только на том, что метку называет не автор: разметчик работу не писал и обе оси выводит из фактов. **С259. Разрез задачи снова удваивает разметку.** У каждой половины свой дифф, и мерить его приходится порознь; прежний довод «разметка платится один раз на задачу, и разрез её не удваивает» верен теперь только для перезапуска прогона. **С260. Стадий у ревью больше нет — есть ступени.** Слово «стадия» в конвейере означало членение, видное снаружи; оно исчезло вместе со второй стадией, и проза приведена к «ступени».