Files
houseplan-card/docs/reviews/SPEC-REVIEW-443-r2.md
T
2026-09-03 20:08:17 +00:00

118 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`
---
<!-- material-anchors: сгенерировано конвейером (#414) -->
## Материал раунда
- Ветка: `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
```