mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
@@ -0,0 +1,107 @@
|
||||
# SPEC-REVIEW-300-r4
|
||||
|
||||
- Issue: [#300](https://github.com/Matysh/houseplan-card/issues/300) — Подписи при ресайзе: подсвечивать измеряемые стены, убрать размер перетаскиваемой, площадь показывать по бокам от неё
|
||||
- Этап: spec (PROCESS.md §2.4)
|
||||
- ТЗ: `docs/specs/300-resize-measurement-layout.md`, коммит `23d208f30cad290c8430098c0446a6804baa8278` на ветке `issue/300-resize-labels`
|
||||
- Заход: r4 · блокирующих циклов израсходовано (до этого раунда) 3/4
|
||||
- Ревьюер: Claude (роль «ревьюер ТЗ», не автор)
|
||||
|
||||
## Скоуп разбора
|
||||
|
||||
Повторный раунд (PROCESS.md §2.10, §2.9). Предыдущий вердикт — r3, жёлтый,
|
||||
Medium M4, документ `docs/reviews/SPEC-REVIEW-300-r3.md`, получен на SHA
|
||||
`4969f46e0e5d1e6440e53fd133f957c0103cf44e` (подтверждено заголовком того
|
||||
документа — SHA в нём назван явно, дефекта r2/r3 «SHA не назван» здесь нет).
|
||||
|
||||
Дельта — `git diff 4969f46e..23d208f3 -- docs/specs/300-resize-measurement-layout.md`,
|
||||
один коммит `23d208f3` («docs: согласовать footprint кнопки с zoom»), 3
|
||||
вставки / 2 удаления, единственный файл. Правка локальна: одна формулировка в
|
||||
§4 п.6. Контракт поведения не меняется, новая подсистема не затронута, объём
|
||||
дельты кратно меньше исходной задачи → полный разбор всего документа не
|
||||
требуется, разбор по дельте (§2.10 п.4) обоснован.
|
||||
|
||||
Так как правка — правка текста ТЗ (класс C), а не продуктового кода, гейты
|
||||
§8/§10 к этому раунду неприменимы: этап всё ещё `S4-spec-review`, кода нет.
|
||||
|
||||
## Закрытие раунда r3
|
||||
|
||||
| Находка | Чем закрыта | Где это видно |
|
||||
|---|---|---|
|
||||
| **M4** — третья копия устаревшей формулировки «screen-fixed no-fly zone» кнопки настроек комнаты осталась в §4 п.6, хотя r2/r3 уже поправили §6.3 и §18 п.4 на «zoom-dependent footprint, вычисленный для текущего `view.w` по `iconCqw()`» | Строка §4 п.6 заменена на ту же формулировку, слово-в-слово согласованную с §6.3/§18 п.4 | `docs/specs/300-resize-measurement-layout.md:70-73` (коммит `23d208f3`): «...в zoom-dependent footprint кнопки для текущего `view.w`, вычисленный по `iconCqw()`, плашка сдвигается...» |
|
||||
|
||||
Проверено не на слово: полнотекстовый поиск по всему файлу
|
||||
(`rg -n "screen-fixed|no-fly|footprint|rlgearbtn"`) даёт три места с
|
||||
`footprint` (§4 п.6, §6.3, §18 п.4) — все три теперь идентичны по смыслу
|
||||
(«zoom-dependent … `view.w` … `iconCqw()`»). Оставшиеся два вхождения
|
||||
`screen-fixed` (§6.3 про leader-stroke, §18 п.5 про highlight-strokes)
|
||||
относятся к другим элементам — 12 px leader и halo/accent-обводке подсветки,
|
||||
— которые по конструкции действительно не масштабируются (`vector-effect:
|
||||
non-scaling-stroke`), то есть термин там употреблён верно и не подлежит
|
||||
правке. `no-fly` в файле не встречается вовсе. Автор сообщил о том же
|
||||
результате локальной проверки в комментарии — совпало с независимым
|
||||
повторением здесь.
|
||||
|
||||
## Унаследовано из r3
|
||||
|
||||
Всё, что дельта не затрагивает, принимается без повторной проверки — со
|
||||
ссылкой на `docs/reviews/SPEC-REVIEW-300-r3.md` (SHA `4969f46e`), который сам
|
||||
унаследовал закрытия r1/r2 (M1, M2, M3) тем же порядком:
|
||||
|
||||
- обязательные разделы §7.1 (сценарий, что человек увидит, скоуп/не-скоуп,
|
||||
контракт поведения, UX, модель данных, i18n, AC1…AC11 с доказательством,
|
||||
план автотестов, риски, откат, release-артефакты) — присутствуют и
|
||||
однозначны;
|
||||
- диагноз текущего кода (`_rszEdgeLabels()`, `poleOfInaccessibility()`,
|
||||
`_rszInnerSpanCms()`) сверен построчно с `src/houseplan-card.ts` в r1;
|
||||
- решение владельца по Q1 (narrow room: площадь всегда видна, leader-линия)
|
||||
перенесено в ТЗ верно — проверено в r1;
|
||||
- M1 (недекларированное скрытие `.roomgear`) закрыта в r2: кнопка
|
||||
`.rlgearbtn` остаётся всегда видимой, конфликт снимается сдвигом
|
||||
area-плашки, алгоритм сдвига оформлен как оспариваемое предположение
|
||||
(§18 п.4), сам факт видимости — как acceptance contract (§4 п.6, §11 AC7);
|
||||
- M2 (AC11 требовал нереализуемый относительный regression-бюджет) закрыта в
|
||||
r2: AC11 ссылается на реальный абсолютный потолок `RENDER_P95_MS = 25` в
|
||||
`demo/benchmark_safe_resize_render.mjs`, файл поимённо в §10 и §13 п.5;
|
||||
- M3 (то же «screen-fixed» вместо zoom-dependent) закрыта в r3 для §6.3 и
|
||||
§18 п.4, с добавлением non-default-zoom fixture в §13 п.2 — проверено по
|
||||
коду `iconCqw()`/`view.w` в `src/space-geometry.ts` и
|
||||
`src/houseplan-card.ts` в r2/r3;
|
||||
- границы со смежными контрактами (#233 внутренние размеры, #277
|
||||
fixed-topology Resize, #238 подписи проёмов, #52 View) и структура
|
||||
разделов 5, 7–10, 14–17 — не тронуты дельтой r4, наследуются как есть.
|
||||
|
||||
## Находки этого раунда
|
||||
|
||||
Нет. Правка текстовая, консервативная и приводит формулировку в соответствие
|
||||
с уже дважды проверенным техническим фактом (zoom-зависимость размера
|
||||
`.rlgearbtn` через `iconCqw(iconPct, space, view.w, kiosk)`); нового
|
||||
контракта, новой догадки или новой неоднозначности не вносит.
|
||||
|
||||
## Что проверено и корректно
|
||||
|
||||
- Дельта `4969f46e..23d208f3` ограничена одной строкой ТЗ, ничего другого в
|
||||
диапазоне коммитов класса A/B/C не изменилось (`git show --stat 23d208f3`
|
||||
— один файл, `docs/specs/300-resize-measurement-layout.md`);
|
||||
- закрытие M4 полное и не оставляет четвёртой копии устаревшей формулировки
|
||||
где-либо в документе (полный `rg` по файлу, а не по изменённым строкам);
|
||||
- коммит несёт корректные трейлеры `Issue: #300` и `User-Visible: no` —
|
||||
ожидаемо для правки, ещё не касающейся продукта (`git log -1 --format=%B
|
||||
23d208f3`);
|
||||
- открытых продуктовых вопросов не осталось (уже зафиксировано автором в
|
||||
комментарии к r0/ТЗ, повторной эскалации дельта не создаёт).
|
||||
|
||||
## Чего не проверял
|
||||
|
||||
- Полный повторный разбор AC1–AC11, разделов 5, 7–10, 14–17 — не входил в
|
||||
делту, унаследован из r3 согласно списку выше;
|
||||
- продуктовый код `src/**` — на этапе `S4-spec-review` кода ещё нет, гейты
|
||||
§8/§10 (typecheck/test/build/check-docs/smoke/golden) к этому раунду
|
||||
неприменимы и не запускались;
|
||||
- канонические документы `docs/RESIZE.md`, `docs/CANVAS.md`,
|
||||
`docs/USER-GUIDE.ru.md` на предмет соответствия терминологии — не входили
|
||||
в делту r4, их сверка входит в объём r1 (сценарий/термины) и была там
|
||||
выполнена; здесь не повторялась.
|
||||
|
||||
## Вердикт
|
||||
|
||||
Вердикт: зелёный · заход r4 · блокирующих циклов 3/4 · High: 0 · Medium: 0 → нет
|
||||
Reference in New Issue
Block a user