mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
Процесс: независимое ревью линии перед стабильным релизом, не блокирующее выпуск (#638)
PROCESS.md §11.5: перед стабильным релизом — одно ревью поверхностей всей линии бет «с нуля», без ТЗ и документов раундов, по SCOPE и USER-GUIDE. - scripts/release-review.mjs: вход линии — прошлый стабильный тег, issue по трейлерам в схеме RELEASE-MEMBERSHIP.json, продуктовые файлы; бриф промпта. - .github/workflows/release-review.yml (workflow_dispatch, исполняется с dev): prepare → model_review (модель без прав на запись, github_token #556) → publish (docs/reviews/RELEASE-REVIEW-vX.Y.Z.md в dev токеном процесса, индекс тем же коммитом, review-doc-guard). Повтор на тот же тег не тратит модель, если документ уже в dev. - release.yml: job independent-review ставит ревью в очередь сразу после candidate, continue-on-error; ни один job выпуска от него не зависит (решение владельца 2026-09-25). - REVIEWER.md, AGENTS.md, DEVELOPMENT.md; тесты и четыре мутанта. Issue: #638 User-Visible: no
This commit is contained in:
+44
@@ -1280,6 +1280,50 @@ Golden, браузерные смоки, performance и полный HA-харн
|
||||
Это исключение из правила «код-ревью не пропускается никогда» (§5, §7.1) —
|
||||
единственное, и относится только к окну между `S8-merged` и выпуском.
|
||||
|
||||
### 11.5 Независимое ревью линии перед стабильным релизом
|
||||
|
||||
Решение владельца 2026-09-25, issue #638.
|
||||
|
||||
**Зачем.** Инкрементальное ревью судит дифф задачи против её ТЗ, а не
|
||||
поверхность против пользователя. Пять раундов по эпику #591 не нашли того, что
|
||||
нашли четыре независимых ревью перед аудитом 22.09: невидимый после крестика HA
|
||||
диалог (#607), кламп по символу (#608), маршруты робота при импорте (#611),
|
||||
детерминированный отказ релизного гейта (#619). Ни ветка `ha-dialog`, ни
|
||||
посимвольный ввод не входили ни в один AC.
|
||||
|
||||
**Шаг.** Перед каждым стабильным релизом — одно ревью поверхностей, изменённых
|
||||
всей линией бет, «с нуля»:
|
||||
|
||||
- **вход** — issue линии, доказанные трейлерами `Issue: #NN` в диапазоне
|
||||
«прошлый стабильный тег..кандидат» (тот же построитель и та же схема, что
|
||||
`RELEASE-MEMBERSHIP.json` беты, #547; метка S8 доказательством не является),
|
||||
и изменённые продуктовые файлы. Собирает их
|
||||
`scripts/release-review.mjs prepare`;
|
||||
- **без ТЗ и без документов раундов**: основа суждения — `docs/SCOPE.md` и
|
||||
`docs/USER-GUIDE.ru.md`. Проверка исполнением: бандл, стенд и смоки, пиннутая
|
||||
фикстура `ha-dialog` (#505) там, где есть диалоги, посимвольный ввод,
|
||||
настоящие Escape и крестик; для каждой поверхности — обычный сценарий и самый
|
||||
рискованный соседний (§2.6, шесть классов риска);
|
||||
- **выход** — `docs/reviews/RELEASE-REVIEW-vX.Y.Z.md` в `dev`, находки
|
||||
High/Medium/Low с воспроизведением.
|
||||
|
||||
**Исполнитель** — модель в CI, `.github/workflows/release-review.yml`: три job
|
||||
(вход, модель, публикация), модель без единого права на запись, документ, его
|
||||
машинный блок, индекс и коммит — детерминированный шаг. Независимость
|
||||
обеспечена построением: сессия свежая, ТЗ и раунды ей не даются.
|
||||
|
||||
**Выпуск не блокирует.** `release.yml` ставит ревью в очередь job
|
||||
`independent-review` сразу после закрепления SHA кандидата — параллельно
|
||||
гейтам; ни один job выпуска от него не зависит, его отказ — предупреждение.
|
||||
Документ — рекомендация: владелец берёт находки в работу (issue в очередь
|
||||
следующей беты) либо оставляет без действий. Автоматически находки в issue
|
||||
не превращаются.
|
||||
|
||||
Повторный запуск на тот же тег модель не тратит, если документ уже в `dev`
|
||||
(`force=true` — переснять). Ручной запуск:
|
||||
`gh workflow run release-review.yml --ref dev -f tag=vX.Y.Z [-f candidate=<sha>]`.
|
||||
Беты шаг пропускают. Первый прогон — линия v1.78.0.
|
||||
|
||||
---
|
||||
|
||||
## 12. Запрещено
|
||||
|
||||
Reference in New Issue
Block a user