From 83201da15dfc32fdad7e0d112b926a4c9a3aea2c Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 20:08:17 +0000 Subject: [PATCH] docs: review document for #443 Issue: #443 User-Visible: no --- docs/reviews/SPEC-REVIEW-443-r2.md | 117 +++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 docs/reviews/SPEC-REVIEW-443-r2.md diff --git a/docs/reviews/SPEC-REVIEW-443-r2.md b/docs/reviews/SPEC-REVIEW-443-r2.md new file mode 100644 index 00000000..5731671f --- /dev/null +++ b/docs/reviews/SPEC-REVIEW-443-r2.md @@ -0,0 +1,117 @@ +# SPEC-REVIEW-443-r2 + +- Issue: https://github.com/Matysh/houseplan-card/issues/443 +- Этап: ревью ТЗ (PROCESS.md §2.4) +- Заход: r2, блокирующих циклов израсходовано 1 из 4 +- Материал: `docs/specs/443-vacuum-route-polish.md` на ветке + `issue/443-vacuum-route-polish`, коммит `0d8cfffb` (Validate на этом SHA + зелёный — https://github.com/Matysh/houseplan-card/actions/runs/33800001581) +- Предыдущий раунд: r1, жёлтый, SHA `a488e898`, документ + `docs/reviews/SPEC-REVIEW-443-r1.md` +- Дельта: `git diff a488e898..0d8cfffb -- docs/specs/443-vacuum-route-polish.md` + — 12 строк в двух разделах («Карта реализации», «Release-артефакты»), + один коммит `0d8cfffb` ("docs: address spec review for vacuum routes") + +## Почему разбор сокращён, а не заново + +Дельта строго локальна: правка целиком лежит в тексте документа, не трогает +разделы «Сценарий», «Что человек увидит», «Контракт» (§1–§4), список AC1–AC8, +«Не-скоуп», «План тестирования» или «Принятые предположения». Автор прямо +заявил в комментарии к issue: «Контракт и acceptance criteria не менялись» — +и `git diff` это подтверждает построчно: единственные изменённые строки — +путь `src/i18n/support/{en,ru,de,fr}.json` в карте реализации и четыре новые +строки в разделе «Release-артефакты» про `docs/CONFIG-COMPATIBILITY.md` и +`docs/USER-GUIDE.ru.md`. Продуктовый контракт не менялся, новая подсистема не +затронута, ребейза не было (SHA r1 — прямой предок SHA r2, `git merge-base +a488e898 0d8cfffb` = `a488e898`). Оснований для полного повторного разбора +нет — разбор ограничен закрытием двух находок r1 и беглой проверкой, что +дельта не задела ничего, признанного выполненным в r1. + +## Закрытие раунда r1 + +| Находка r1 | Чем закрыта | Где это видно | +|---|---|---| +| Medium: раздел «Release-артефакты» не называет `docs/CONFIG-COMPATIBILITY.md` и `docs/USER-GUIDE.ru.md` | Оба документа добавлены и в «Карту реализации», и в «Release-артефакты», с конкретной формулировкой правки (различие absent/`null`/explicit-empty/`[]` для первого; новая группа «Пространство удалено» для второго) | `docs/specs/443-vacuum-route-polish.md:279-281` (карта реализации), `:301-305` (release-артефакты) | +| Low: путь i18n `src/locales/{en,ru,de,fr}.ts` не существует | Путь исправлен на фактический `src/i18n/support/{en,ru,de,fr}.json` | `docs/specs/443-vacuum-route-polish.md:275` | + +Обе правки текстовые, ограничены заявленными строками, AC/контракт/скоуп не +менялись — соответствует тому, что фикс требовался «чисто текстовый». + +## Унаследовано из r1 + +Всё содержательное сверение кода/документов из r1 наследуется без повторной +проверки — дельта r2 не касается ни одного из проверенных там утверждений: + +- обе (frontend/backend) причины пункта (а) issue, `kept_routes or None` в + export, детерминированный (но не сгруппированный) comparator пункта (б), + полный скан ростера в `_renderVacuums` пункта (в) — построчно сверены с + `origin/dev`; +- контракт §1 (4-состояния authority), §2 (single-space export), §3 (группа + удалённых пространств), §4 (vacuum-only snapshot) — однозначны, не + оставляют выбора автору; +- все восемь AC пронумерованы, у каждого указан способ доказательства, + включая обязательный отрицательный прогон в AC2; +- план автотестов называет два новых мутанта `scripts/mutation-gate.mjs`; +- «Принятые предположения» отделяют технические решения от уже принятых + владельцем фактов, догадка за факт не выдаётся; +- открытых продуктовых вопросов нет; +- i18n-текст группы не изобретён с нуля (`vac.route_status_missing_space`); +- «одно число — один источник» неприменимо (задача не вводит новую + пользовательскую величину) — рассмотрено и отклонено в r1, не заново. + +Источник: `docs/reviews/SPEC-REVIEW-443-r1.md`, SHA `a488e898`. + +## Находки r2 + +Нет. Обе находки r1 закрыты текстуально и точно, новых текстовых проблем в +делте не внесено. + +## Что проверено в r2 + +- Полный `git diff a488e898..0d8cfffb` — единственный тронутый файл + документов класса-C — `docs/specs/443-vacuum-route-polish.md` (плюс сам + документ ревью r1, который конвейер закоммитил как артефакт — его + содержание не является предметом проверки автора). +- Раздел «Карта реализации» (`docs/specs/443-vacuum-route-polish.md:269-281`) + и «Release-артефакты» (`:296-311`) прочитаны целиком в актуальном + состоянии, не только по диффу — формулировки конкретны («различает absent, + `null`, explicit empty и non-empty», «новую видимую группу … в Device + editor»), не общие фразы. +- `docs/specs/README.md` не затронут дельтой — трассируемость §7.1, + подтверждённая в r1, не могла испортиться этой правкой. +- Merge-base SHA r1/r2 подтверждает отсутствие ребейза + (`git merge-base a488e898 0d8cfffb` = `a488e898`). + +## Чего не проверял + +- Не перечитывал заново разделы «Сценарий», «Что человек увидит», «Контракт» + §1–§4, AC1–AC8, «Не-скоуп», «План тестирования», «Принятые предположения» — + дельта их не касается, наследуются из r1 (см. выше). +- Не запускал `typecheck`/`test`/`build` — этап ревью ТЗ, диапазон изменений + только `docs/specs/**`, Validate уже зелёный на этом SHA (см. материал + выше); продуктового кода по-прежнему нет. +- Не проверял golden/смоки/perf/инварианты модели — относятся к + implementation loop и предрелизному гейту, кода ещё нет. + +## Материал раунда + +- SHA: `0d8cfffb` (ветка `issue/443-vacuum-route-polish`) +- Дерево ТЗ: `docs/specs/443-vacuum-route-polish.md` +- Round: r2, budget циклов 1/4 +- Предыдущий раунд: r1, SHA `a488e898`, `docs/reviews/SPEC-REVIEW-443-r1.md` + +--- + + + +## Материал раунда + +- Ветка: `issue/443-vacuum-route-polish`, коммит `0d8cfffb9286` — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет. +- Дерево материала: `b899b29a6fbe75966853a43a6282cff22c146762` + ``` + git log --all --format='%H %T' | grep b899b29a6fbe + ``` +- ТЗ `docs/specs/443-vacuum-route-polish.md`, блоб `eb5bc721764abebb38a642cf9e450f52c6e608d7` + ``` + git log --all --find-object=eb5bc721764abebb38a642cf9e450f52c6e608d7 -- docs/specs/443-vacuum-route-polish.md + ```