From cbaa7b0cb9066aa399503368a06c7ea032a79feb Mon Sep 17 00:00:00 2001 From: Matysh Date: Thu, 20 Aug 2026 11:29:45 +0300 Subject: [PATCH] docs: scope a repeat review round to the delta MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The reviewer prompt was identical for every round, and the canon said nothing about the scope of a repeat pass, so r2 re-derived the product framing and re-checked acceptance criteria the fix never touched: the r2 pass on #150 cost a full pipeline run over one line in a test fixture. From the second cycle on, the subject is the delta against the SHA the previous verdict was given on: each earlier finding must be shown closed by a line of code or text, only the criteria the delta can reach are re-verified, and whatever is carried over is listed with the round and SHA it came from. Cheap gates still run every round. The scope shrinks, the strictness does not. A fix can break a criterion an earlier round accepted — that is how regression #102 happened — so the boundary is the findings plus everything the delta can reach, and a non-local delta (a rebase onto a moved dev, a behaviour contract change, a new subsystem) still gets the full pass. Issue: #214 User-Visible: no --- .github/workflows/process.yml | 40 +++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/.github/workflows/process.yml b/.github/workflows/process.yml index 831de739..a080a149 100644 --- a/.github/workflows/process.yml +++ b/.github/workflows/process.yml @@ -230,6 +230,38 @@ jobs: Этап: ${{ needs.guard.outputs.stage }} spec — ревью ТЗ (PROCESS.md §2.4) code — код-ревью (PROCESS.md §2.7) + Цикл: r${{ needs.guard.outputs.cycle }} + + **Если цикл не первый — объём разбора по дельте, а не заново** + (PROCESS.md §2.9, issue #214). Раньше промпт был одинаковым для + всех раундов, и повторный цикл заново выводил продуктовую рамку и + перепроверял AC, которых правка не касалась: r2 по #150 стоил + полного прогона ради одной строки в тестовой фикстуре. + + Порядок для r2 и дальше: + 1. найди вердикт предыдущего раунда в комментариях issue и SHA, + на котором он получен. SHA в вердикте не назван — это находка; + 2. объяви дельту: `git diff <тот SHA>..HEAD` для кода, дифф файла + ТЗ или тела issue для spec. Дельта — предмет этого раунда; + 3. по каждой находке предыдущего раунда покажи, чем именно она + закрыта: строка кода или текста, а не заявление автора; + 4. заново проверяй только те AC, чьё доказательство дельта + задевает. Остальные наследуй; + 5. в документе обязателен раздел «Унаследовано из r»: что + принято без повторной проверки, со ссылкой на документ того + раунда и SHA, на котором вывод получен. Без этого перечня + сокращение — молчаливое доверие, а такой тихий успех уже + дважды стоил дня (#171, #207). + + Разбор остаётся ПОЛНЫМ, если дельта не локальна: ребейз на ушедший + вперёд dev (после ребейза это другой код, §7.2), смена контракта + поведения, задета новая подсистема, либо объём дельты сопоставим с + исходной задачей. Сомневаешься — разбирай полностью и скажи почему. + + Сокращается объём РАЗБОРА, а не строгость: правка по замечанию + способна сломать AC, который предыдущий раунд признал выполненным — + так появилась регрессия #102. Поэтому граница не «только находки», а + «находки плюс всё, до чего дотягивается дельта». Прочитай в этом порядке, прежде чем судить: 1. docs/SCOPE.md — зачем продукт существует и для кого. Он @@ -273,7 +305,8 @@ jobs: правке — не тщательность, а потеря времени: полные наборы это предрелизный гейт (PROCESS.md §8), а не гейт ревью. - Всегда, они дешёвые: + Всегда, они дешёвые, и в повторном раунде тоже: код изменился, + а стоят они минуты: `npx tsc --noEmit`, `npm test`, `npm run build` со сверкой трёх копий бандла. @@ -318,7 +351,10 @@ jobs: docs/reviews/-REVIEW-${{ github.event.issue.number }}-r${{ needs.guard.outputs.cycle }}.md (SPEC для этапа spec, CODE для code): скоуп, как проверялось, находки с воспроизведением, что проверено и корректно, чего не - проверял. Каталог docs/reviews/ создай, если его нет. Больше не + проверял. Для r2 и дальше добавь два раздела: «Закрытие раунда + r» — таблица «находка | чем закрыта | где это видно», и + «Унаследовано из r» — что принято без повторной проверки, с + документом и SHA. Каталог docs/reviews/ создай, если его нет. Больше не пиши ничего: любой файл вне docs/reviews/ опубликован не будет. Затем оставь в issue краткий комментарий: вердикт, ключевые находки