From 865312e0b09db8a46f5532655f299606f90166c5 Mon Sep 17 00:00:00 2001 From: Matysh Date: Mon, 5 Oct 2026 09:39:44 +0300 Subject: [PATCH] docs(reviews): record owner-authorized self-review for #793 Issue: #793 User-Visible: no --- docs/reviews/CODE-REVIEW-793-r1.md | 84 ++++++++++++++++++++++++++++++ docs/reviews/INDEX.md | 3 +- 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 docs/reviews/CODE-REVIEW-793-r1.md diff --git a/docs/reviews/CODE-REVIEW-793-r1.md b/docs/reviews/CODE-REVIEW-793-r1.md new file mode 100644 index 00000000..7b573342 --- /dev/null +++ b/docs/reviews/CODE-REVIEW-793-r1.md @@ -0,0 +1,84 @@ +# Code review #793 — guard label pipe stability + +Вердикт: зелёный · заход r1 · блокирующих циклов 0/2 · High: 0 · Medium: 0 · Low: 0. + +## Основание и материал + +Саморевью и ручное слияние разрешены владельцем 2026-10-05 ответом «да» +на вопрос о таком исключении именно для #793. Это не результат модели CI: +[автоматический раунд](https://github.com/Matysh/houseplan-card/actions/runs/37273206239) +остановился без structured_output и не вынес вердикта. + +- Issue: https://github.com/Matysh/houseplan-card/issues/793 +- Материал: `841bad4e79d2d6beecf87be61ffdad4008e58fff`. +- База: `9ebc430983ec1d17d17a5f206aed653f6d818afa`. +- Скоуп: `.github/workflows/_process.yml`, `test/review-doc-guard.test.mjs`. +- Трек: show, инфраструктура; продуктовый код не затронут. + +## Корректность и находки + +Находок High/Medium/Low нет. Старый `grep -q` мог закрыть вход после первого +совпадения; SIGPIPE у пишущего `printf` делает pipeline неуспешным при pipefail. +Guard трактует это как снятие S7 и успешно заканчивает шаг с пустым stage. +Новый `grep -Fx ... > /dev/null` дочитывает поток и сопоставляет полную метку +буквально. Ошибка чтения/отсутствие метки не становятся разрешением запуска. + +Тест исполняет извлечённый реальный шаг workflow с fake gh, а не копию логики +guard. Большой снимок вынуждает проявиться прежней ошибке. Исходные восемь +проверок выбора трека сохранены; улучшена только диагностика падения. +Отрицательные случаи требуют отказа при отсутствии S7, похожей метке, +blocked и review-4. Нет retry, отключения pipefail или ослабления oracle. + +Ограничение вывода: точное планирование процессов, вызвавшее первоначальный +сбой на двух коротких метках, повторно не получено. Подтверждены механизм +уязвимости и тот же observable failure на расширенном снимке; это не обещание +отсутствия всех возможных причин нестабильности suite. + +## Доказательства + +| AC | Чем доказан | Чем краснеет | +|---|---|---| +| Существующая S7 сохраняет stage=code, лимит и полный снимок меток | Новый #793 regression на настоящем bash с pipefail | До правки workflow выполнен FAIL: stage пуст при status 0; после правки PASS | +| Отсутствие метки и блокировки не допускают ревью | Четыре отрицательных случая в новом тесте | Разрешённый stage или неверная причина не проходят точные assertions | +| Приоритет треков и fail-closed compare не изменены | Исходные восемь вариантов r1 #695 | Прежние точные stage/limit/labels, включая ask, несколько треков и недоказанный compare | + +| Проверка | Результат | +|---|---| +| `node --test --test-name-pattern=#793 test/review-doc-guard.test.mjs` до исправления workflow | FAIL по ожидаемому симптому; `C:/Temp/hp793-red.log` | +| `node --test test/review-doc-guard.test.mjs` после исправления | 71/71 PASS, без пропусков; `C:/Temp/hp793-guard-green.log` | +| `npm run gate:small`, WSL Ubuntu/ext4, Node 22.23.2, SHA материала | Все девять проверок PASS, 62 с; `C:/Temp/hp793-gate.log` | +| [Validate 37272906621](https://github.com/Matysh/houseplan-card/actions/runs/37272906621) | success на точном SHA материала: typecheck, build, unit, бандл и предполётные проверки | +| `node scripts/process-gate.mjs --range origin/dev..HEAD --issues --report` | PASS; ожидаемое сообщение об инфраструктурном диапазоне без класса A | +| `git diff --check` | PASS | + +Результаты исполнены при реализации и перепроверены по логам и SHA при +саморевью; заново весь неизменный набор не запускался. Другой агент также +прочитал окончательный дифф без находок и исполнил два новых теста: 2/2 PASS. + +## Риски и непроверенное + +Async/host: исправлено раннее закрытие pipe, свидетель работает в Linux/WSL. +Данные/права: проверены блокировки, разрешения API не расширяются. +Геометрия, визуал продукта, touch и runtime performance не меняются. +Пользовательских величин, требующих единого источника, в диффе нет. + +Golden, performance, полный browser suite, HA-harness и мутанты не запускались: +эти поверхности не меняются; smoke-select не выбрал frontend-смоки. Проверки +S4 отдельно не добавлены: общий has() разобран чтением, не отдельным запуском S4. +Другие shell-обвязки из #766 остаются вне скоупа. Main-обёртки не меняются, +зеркало не нужно. Changelog не нужен: User-Visible: no. + +Рекомендация: слить проверенный материал в dev по разрешённому исключению, +затем S8. Issue не закрывать до беты. + +--- + + + +## Материал раунда + +- Ветка: `issue/793-guard-harness-stability`, коммит `841bad4e79d2` — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет. +- Дерево материала: `5d94375818d1a2ef164066224efed9f77c4374ce` + ``` + git log --all --format='%H %T' | grep 5d94375818d1 + ``` diff --git a/docs/reviews/INDEX.md b/docs/reviews/INDEX.md index d19532a4..2d95cbac 100644 --- a/docs/reviews/INDEX.md +++ b/docs/reviews/INDEX.md @@ -1,11 +1,12 @@ # Индекс ревью -Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 294, issue: 146. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`. +Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 295, issue: 147. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`. | Issue | Документ | Этап · раунд | Вердикт | H | M | Находки | Файлы | |---|---|---|---|---:|---:|---|---| | бета v1.79.0-beta.2 | [SHIP-REVIEW-v1.79.0-beta.2.md](SHIP-REVIEW-v1.79.0-beta.2.md) | пакетное ревью ship · — | ⚪ — | 0 | 0 | — | — | | бета v1.79.0-beta.1 | [SHIP-REVIEW-v1.79.0-beta.1.md](SHIP-REVIEW-v1.79.0-beta.1.md) | пакетное ревью ship · — | ⚪ — | 0 | 0 | — | — | +| #793 | [CODE-REVIEW-793-r1.md](CODE-REVIEW-793-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — | | #791 | [CODE-REVIEW-791-r1.md](CODE-REVIEW-791-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — | | #790 | [CODE-REVIEW-790-r1.md](CODE-REVIEW-790-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — | | #789 | [SPEC-REVIEW-789-r1.md](SPEC-REVIEW-789-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |