diff --git a/PROCESS.md b/PROCESS.md index 16f70897..49246d57 100644 --- a/PROCESS.md +++ b/PROCESS.md @@ -307,11 +307,24 @@ S1-new → S2-analysis → S3-spec → S4-spec-review ⟲ → S5-ready → ## 4. Лимит циклов ревью: 4 -Оба ревью-гейта возвращают задачу на правки не более **4 раз**. Счётчик виден в -имени документа: `-r1` … `-r4`; на четвёртом заходе ставится метка `review-4`. +Оба ревью-гейта возвращают задачу на правки не более **4 раз**. - **Что считается циклом:** отправка на ревью → вердикт с блокирующими находками → возврат. Уточняющий вопрос без вердикта циклом не считается. +- **Зелёный вердикт цикла не образует** и бюджет не тратит (решение владельца + 2026-08-20, issue #227): он ничего не вернул на правки. Практический случай — + зелёное ревью, слияние которого не удалось: конвейер сам предписывает ребейз и + возврат метки, и этот заход не должен наказываться. Раньше счётчик считал все + вердикты подряд, и на #225 последовательность жёлтый → зелёный → ребейз дала + `review-4` на задаче с зелёным ревью и зелёным CI. +- **Заход и цикл — разные величины.** Заход — сколько раз ревью отработало; он + виден в имени документа (`-r1`, `-r2`, …) и нужен, чтобы два документа не + затёрли друг друга. Цикл — единица бюджета §4. Заходов законно бывает больше, + чем циклов, поэтому порог проверки 7 в `scripts/process-gate.mjs` выше лимита + циклов (шесть документов = четыре цикла плюс два ребейза). +- Метка `review-4` ставится, когда исчерпан **бюджет циклов**; конвейер снимать + её не вправе — это решение владельца. Если бюджет пересчитан и оказался ниже + лимита, конвейер сообщает пересчёт, но метку не трогает. - **Исчерпание лимита — не «пятая попытка», а разбор.** Задача уходит владельцу, решение одно из трёх: 1. **разделить** — issue закрывается как «заменён», вместо него 2–3 меньших с @@ -488,9 +501,12 @@ issue #NN - **Занятие:** `Взял: <роль> · сессия · ветка issue/NN-slug` - **Хендофф:** `Сделано: … · Файлы: … · Гейты: <команда → результат> · НЕ сделано: … · Риски: … · Следующий статус: … · Новые issue: #…` -- **Вердикт ревью:** `Вердикт: зелёный/жёлтый/красный · цикл r/<лимит> · - High: N · Medium: N → в задаче | #… · Документ: docs/reviews/…` - («→ #…» — только у Medium вне скоупа; находки в скоупе возвращаются автору) +- **Вердикт ревью:** `Вердикт: зелёный/жёлтый/красный · заход r · + блокирующих циклов K/<лимит> · High: N · Medium: N → в задаче | #… · + Документ: docs/reviews/…` + («→ #…» — только у Medium вне скоупа; находки в скоупе возвращаются автору. + Заход — номер прогона ревью, K — израсходованный бюджет §4: зелёные вердикты + его не тратят, поэтому заход и K расходятся, #227) - **Закрытие:** `Выпущено в <тег беты> · CI: <ссылка> · Changelog: <ссылка>` **Вперёд двигает только зелёный вердикт.** Жёлтый и красный возвращают автору;