mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
@@ -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 закрыта точечной и корректной правкой,
|
||||
новых находок нет.
|
||||
Reference in New Issue
Block a user