docs: review document for #298

Issue: #298
User-Visible: no
This commit is contained in:
claude[bot]
2026-08-24 19:08:31 +00:00
parent 55db16df6e
commit 451932c8e9
+126
View File
@@ -0,0 +1,126 @@
# SPEC-REVIEW-298-r2
- **Issue:** https://github.com/Matysh/houseplan-card/issues/298
- **ТЗ:** `docs/specs/298-resize-wall-thickness-carrier.md` @ commit `55db16df6e51027a81aaf56de6cd08bbf19c3b77`
- **Этап:** ТЗ на ревью (PROCESS.md §2.4)
- **Заход:** r2 · блокирующих циклов израсходовано 1 из 4 (потрачено r1, жёлтый)
- **Ревьюер:** Claude (сессия ревью ТЗ), автор ≠ ревьюер
## Скоуп ревью
Не первый заход. По PROCESS.md §2.9 / issue #214 разбор идёт по дельте:
- предыдущий вердикт — комментарий `claude`, 2026-08-24T19:01:20Z, в issue #298:
жёлтый, r1, блокирующих циклов 0/4, High 0 / Medium 1 (в скоупе), документ
`docs/reviews/SPEC-REVIEW-298-r1.md`, ТЗ проверялось на SHA
`45066631aee4997ac1f033dbe75918b5b2d439d4` (SHA не был назван в самом
вердикте — восстановлен из ссылки автора на коммит ТЗ в комментарии за 18:54:17Z,
который текстуально совпадает с состоянием, разобранным в r1-документе);
- правка автора — коммит `55db16df6e51027a81aaf56de6cd08bbf19c3b77`
(`docs(spec): add resize user contract`, единственный файл
`docs/specs/298-resize-wall-thickness-carrier.md`, +25/-1);
- дельта строго локальна: добавлен раздел «Персона, поверхность, момент и
видимый результат», добавлена подсекция «UX и i18n», добавлены две строки
«Доказательство:» под AC5 и AC7. Ни один AC, ни контракт поведения (§§3–5),
ни scope (§6) не менялись. Рёбейза на ушедший вперёд `dev` не было (родитель
коммита — `8221ad9b`, публикация r1-документа, что и ожидается между
раундами). Подсистема не сменилась, новых открытых вопросов правка не внесла.
Объём дельты (одна секция + два предложения) несопоставим с объёмом задачи →
разбор сокращён до дельты, остальное наследуется из r1.
## Как проверялось
1. `git diff 45066631..55db16df -- docs/specs/298-resize-wall-thickness-carrier.md`
— получен полный текст дельты, показан ниже в разделе «Закрытие раунда r1».
2. Дельта прочитана в контексте всего текущего файла (`Read` целиком, 377
строк), чтобы исключить рассинхронизацию новых фраз с остальным ТЗ.
3. Новый раздел 1 сверен с:
- `docs/SCOPE.md` — персона «Home admin (primary) … Desktop browser», job
J6 «Keep the plan true as the home evolves … drag/resize» — совпадает
с «администратор дома / desktop Plan editor / инструмент Resize»;
- комментарием-аналитикой автора (18:52:14Z), где та же персона и та же
поверхность были названы изначально, но не попадали в сам документ —
ровно то несоответствие, которое r1 отметил как находку.
4. Термин «ручка» и написание «Resize» сверены с `docs/USER-GUIDE.ru.md`
(строки 441, 480–481: «Resize», «ручка объясняет…», «Ручка остаётся
видимой, но приглушена») — терминология не изобретена, взята из канона.
5. Новая подсекция «UX и i18n» сверена с §6 «Не входит» («изменение
eligibility, safe range, pointer UX … не входит») и §12 п.3 («Existing
`resize.commit_failed` достаточно … пока eligibility не меняется») —
утверждение «новых контролов/текстов нет» не противоречит остальному
документу.
6. Новые строки «Доказательство:» под AC5/AC7 сверены с разделом 11
(«Ожидаемые файлы и release artifacts»): методы («table-driven unit pure
carrier preflight», «production-bundle Resize pointer smoke») там же
названы как ожидаемые файлы/evidence — не расходятся.
7. Коммит `55db16df` проверен `git show --stat`: правда только один файл,
+25/-1, что совпадает с диффом, разобранным построчно (не поверено на
слово автора).
8. Трейлеры коммита: `Issue: #298`, `User-Visible: no` — для docs-only
spec-коммита корректно (видимого поведения нет, меняется только текст ТЗ).
**Не проверялось повторно** (наследуется из r1, ниже отдельным разделом):
корневая причина по коду, существование фикстур/констант/связанных issue,
формулировки §§3–5, §6, §7 (AC1–AC9 по содержанию), §8–§12 — дельта их не
касается, к этим утверждениям автор не притрагивался.
## Закрытие раунда r1
| Находка r1 | Чем закрыта | Где это видно |
|---|---|---|
| **Medium (в скоупе):** ТЗ не содержит обязательных продуктовых разделов §7.1 — «персона/поверхность/момент» и «что человек увидит до/после» без терминов реализации; §1 и §2 были на языке реализации (`rekeyWallsAfterMove`, topology vertex, config write) | Добавлен раздел 1 «Персона, поверхность, момент и видимый результат»: явно назван «администратор дома», «desktop Plan editor, инструмент Resize», «обычный ресайз стены готового плана»; добавлены два предложения «До:»/«После:» без единого термина реализации (стена рисуется другой толщиной / теряет ручку → ресайз либо проходит как раньше, либо fail-closed с прежней ошибкой) | `docs/specs/298-resize-wall-thickness-carrier.md`, новые строки 16–26 (коммит `55db16df`) |
| **Low (снят с записью, не блокировал):** AC5 и AC7 не называют явно способ доказательства | Под AC5 и AC7 добавлены явные строки «Доказательство: …» | строки 244–245 (AC5) и 272–273 (AC7) |
| **Low (снят с записью, не блокировал):** разделы «UX» и «i18n» не выделены явными заголовками | Добавлена подсекция `### UX и i18n` внутри §5 с прямым утверждением «новых контролов, состояний и текстов нет» | строки 162–166 |
Все три пункта r1 закрыты правкой; новых расхождений между добавленным текстом
и остальным документом не найдено (см. «Как проверялось», пп. 3–6).
## Унаследовано из r1
Без повторной проверки в этом раунде принято по документу
`docs/reviews/SPEC-REVIEW-298-r1.md` (ТЗ на SHA `45066631aee4997ac1f033dbe75918b5b2d439d4`),
поскольку дельта r1→r2 их не касается:
- корневая причина подтверждена чтением `rekeyWallsAfterMove()`
(`src/wall-thickness.ts:533`, пропорциональная проекция `mapPoint`,
строки 574–582) — совпадает с числами из issue;
- обе fixture-репродукции (`real-plan-second-floor.json`,
`real-plan-first-floor.json`) существуют и соответствуют описанным в AC1/AC2
жестам;
- `LATTICE_NOISE_STEPS` существует (`src/coordinate-canonicalization.ts:11`,
`1e-4`), используется в инвариантах и мутационном гейте;
- все связанные issue (#253, #277, #289, #291, #293, #297, #299) существуют в
заявленном состоянии (закрыты/открыт), ссылки не искажены;
- ссылки на канон (`WALL-THICKNESS.md`, `RESIZE.md`, `TOUCH-SUPPORT.md`)
точны, не изобретены;
- AC1–AC9 по содержанию проверяемы, скоуп «не входит» корректно исключает
#299 (`mixed_role_record`);
- §12 «Принятые технические предположения» — явные, не выданы за факт.
## Находки
Нет. Единственная находка r1 (Medium, в скоупе) закрыта дельтой; новых находок
дельта не создала.
## Что проверено и корректно
- Дельта r1→r2 (раздел 1, подсекция UX/i18n, две строки «Доказательство:»)
внутренне согласована с остальным документом и с каноном (`SCOPE.md`,
`USER-GUIDE.ru.md`).
- Персона/поверхность/момент и фраза «до/после» присутствуют, без терминов
реализации — оба обязательных продуктовых раздела §7.1 закрыты.
- Коммит содержит ровно заявленное изменение, трейлеры корректны.
## Чего не проверял
- Повторно не перечитывал и не оспаривал §§2–12 по содержанию — дельта их не
меняла, см. «Унаследовано из r1».
- Гейты `typecheck`/`test`/`build`/`check-docs` не запускал — стадия ТЗ, кода к
задаче ещё нет; это ожидается на этапе code-review.
- Не проверял снова состояние связанных issue (#253/#277/#289/#291/#293/#297/#299)
— наследуется из r1, ссылки дельта не меняла.
## Вердикт
Зелёный. Единственная Medium-находка r1 закрыта точечной и корректной правкой,
новых находок нет.