11 KiB
SPEC-REVIEW-298-r2
- Issue: https://github.com/Matysh/houseplan-card/issues/298
- ТЗ:
docs/specs/298-resize-wall-thickness-carrier.md@ commit55db16df6e51027a81aaf56de6cd08bbf19c3b77 - Этап: ТЗ на ревью (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, ТЗ проверялось на SHA45066631aee4997ac1f033dbe75918b5b2d439d4(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.
Как проверялось
git diff 45066631..55db16df -- docs/specs/298-resize-wall-thickness-carrier.md— получен полный текст дельты, показан ниже в разделе «Закрытие раунда r1».- Дельта прочитана в контексте всего текущего файла (
Readцеликом, 377 строк), чтобы исключить рассинхронизацию новых фраз с остальным ТЗ. - Новый раздел 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 отметил как находку.
- Термин «ручка» и написание «Resize» сверены с
docs/USER-GUIDE.ru.md(строки 441, 480–481: «Resize», «ручка объясняет…», «Ручка остаётся видимой, но приглушена») — терминология не изобретена, взята из канона. - Новая подсекция «UX и i18n» сверена с §6 «Не входит» («изменение
eligibility, safe range, pointer UX … не входит») и §12 п.3 («Existing
resize.commit_failedдостаточно … пока eligibility не меняется») — утверждение «новых контролов/текстов нет» не противоречит остальному документу. - Новые строки «Доказательство:» под AC5/AC7 сверены с разделом 11 («Ожидаемые файлы и release artifacts»): методы («table-driven unit pure carrier preflight», «production-bundle Resize pointer smoke») там же названы как ожидаемые файлы/evidence — не расходятся.
- Коммит
55db16dfпроверенgit show --stat: правда только один файл, +25/-1, что совпадает с диффом, разобранным построчно (не поверено на слово автора). - Трейлеры коммита:
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 закрыта точечной и корректной правкой, новых находок нет.