mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-02 04:38:55 +00:00
124 lines
10 KiB
Markdown
124 lines
10 KiB
Markdown
# SPEC-REVIEW-384-r2
|
||
|
||
Issue: [#384](https://github.com/Matysh/houseplan-card/issues/384) ·
|
||
этап: `S4-spec-review` · трек: `small` (ТЗ в теле issue) · заход r2 ·
|
||
SHA рабочего дерева на момент ревью: `3aac9bd2`, ветка `dev`.
|
||
|
||
## Скоуп
|
||
|
||
Родитель — #373 (`fit: house`). Продуктовый скоуп не изменился с r1: гейтить
|
||
вклад тел стен (~:432), extras (~:438) и нулевых стен (~:442) в кадре
|
||
`fit: house` тем же `disp.showBorders`, которым уже гейтится их рендер (:657,
|
||
:882, :914), и вернуть `needsCanonicalWallGeometry` (:388) к виду до #373.
|
||
|
||
Единственное изменение между r1 и r2 — правка раздела 7 ТЗ («i18n /
|
||
Release-артефакты») в ответ на единственную находку r1 (M1). Код продукта не
|
||
менялся и не мог меняться: реализации всё ещё нет, это ревью ТЗ.
|
||
|
||
## Предыдущий раунд и дельта
|
||
|
||
- Вердикт r1: жёлтый, High: 0, Medium: 1 (в скоупе) — документ
|
||
`docs/reviews/SPEC-REVIEW-384-r1.md`, SHA `9c162c09`.
|
||
- Дельта — правка тела issue #384, раздел 7, между комментарием ревьюера
|
||
(`IC_kwDOTOcLQM8AAAABReJaQw`, 2026-08-30T07:38:09Z) и следующим комментарием
|
||
владельца (`IC_kwDOTOcLQM8AAAABReKJ9w`, 2026-08-30T07:41:10Z: «Редакция 2 по
|
||
SPEC-REVIEW-384-r1 M1 … Возвращаю S4»).
|
||
- Проверено `git log --oneline 9c162c09..HEAD -- src/space-render.ts
|
||
docs/USER-GUIDE.md docs/USER-GUIDE.ru.md docs/CANVAS.md` — пусто; `git diff
|
||
9c162c09..HEAD --stat` трогает только `docs/reviews/SPEC-REVIEW-384-r1.md` и
|
||
несвязанный `docs/specs/385-audit-lows.md`. Делта полностью локальна тексту
|
||
issue, ни один файл кода или доки не менялся — сокращённый разбор оправдан
|
||
(не ребейз, не смена контракта, не новая подсистема).
|
||
|
||
## Закрытие раунда r1
|
||
|
||
| Находка r1 | Чем закрыта | Где это видно |
|
||
|---|---|---|
|
||
| Medium: раздел 7 утверждал «Доки: не задеты», хотя `docs/USER-GUIDE.md:798-800`, `docs/USER-GUIDE.ru.md:1543-1544` и `docs/CANVAS.md:232-233` безусловно обещают стены/перегородки/колонны в кадре `fit: house` | Раздел 7 переписан: явно называет все три файла с теми же номерами строк, требует добавить во все три места оговорку «если они видимы (`show_borders`)» по аналогии с существующей оговоркой про backdrop/decor, и добавляет способ проверки | Тело issue #384, раздел «7. i18n / Release-артефакты»: *«Доки (M1 r1): `docs/USER-GUIDE.md:798-800`, `docs/USER-GUIDE.ru.md:1543-1544` и `docs/CANVAS.md:232-233` сегодня безусловно обещают стены/перегородки/колонны в кадре `fit: house` — во все три места добавляется оговорка «если они видимы (`show_borders`)» … AC-док: grep на код-ревью.»* |
|
||
|
||
Проверка закрытия — не только заявление автора:
|
||
|
||
- Строки `798-800` в `docs/USER-GUIDE.md`, `1543-1544` в `docs/USER-GUIDE.ru.md`
|
||
и `232-233` в `docs/CANVAS.md` прочитаны заново на текущем SHA — они всё ещё
|
||
безусловны («fits every room, wall, partition, column…», «сохранит в кадре
|
||
все комнаты, стены, перегородки, колонны…», «every sane room,
|
||
positive/zero wall, independent wall or saved draft, column… participates»)
|
||
и все три ссылки в правке точно указывают на них — номера строк не съехали
|
||
со времени r1 (код доков не менялся, см. дельту выше).
|
||
- Раздел 7 теперь называет ровно те три файла, которые требовала находка r1,
|
||
с тем же предложением оговорки («если видимы»), и добавляет способ доказать
|
||
правку на код-ревью (`grep`) — закрывает и требование «указание способа
|
||
доказательства» для этого AC.
|
||
- Асимметрия по проёмам (`hide_openings`), которую r1 отдельно отметил как
|
||
предсуществующий и вне-скоуповый пробел, в правке не тронута — это верно:
|
||
r1 явно сказал, что её отсутствие не создаёт эта задача.
|
||
|
||
Находка r1 закрыта полностью, новых пробелов правка не вносит.
|
||
|
||
## Унаследовано из r1
|
||
|
||
Без повторной проверки на этом раунде — документ
|
||
`docs/reviews/SPEC-REVIEW-384-r1.md`, SHA `9c162c09`, дельта эту часть не
|
||
задевает:
|
||
|
||
- Фактическая база ТЗ: построчные ссылки на `src/space-render.ts` (:388,
|
||
:424-467, :654-657, :882, :914) и происхождение условия
|
||
`needsCanonicalWallGeometry` (реверт к состоянию до коммита #373 `0d33691f`,
|
||
исходно `955de3e6`) — подтверждены чтением кода и `git log -S` в r1.
|
||
- Согласованность гейта: `disp.showBorders === true` не меняет поведение;
|
||
`floorMinusBodies` (:791) использует сырой `extras`, путь «чистого пола» не
|
||
задет.
|
||
- AC1–AC3 однозначны и доказуемы (twin-фикстура `smoke_space_card` с
|
||
`show_borders: false`; регресс на существующих tight-ассертах, которые
|
||
используют фиксированный `show_borders: true` и физически не пересекаются с
|
||
новым гейтом).
|
||
- AC4 («полный гейт зелёный; бюджет ≈ 0») корректен по характеру изменения
|
||
(два булевых гейта + возврат одного условия).
|
||
- План тестов и mutation-gate («убрать гейт → красный смок») пригодны.
|
||
- Откат — обычный `git revert`, без флагов/миграций.
|
||
- Раздел 8 («принятые предположения») — единственное предположение явно
|
||
помечено как предположение, продуктового вопроса не требует.
|
||
- Проверка трека `small` — все пять критериев §5 выполняются одновременно.
|
||
- Открытых продуктовых вопросов нет.
|
||
|
||
## Как проверялось (этот раунд)
|
||
|
||
- Прочитан текущий текст issue #384 и все три комментария (`gh issue view 384
|
||
--json body,comments`).
|
||
- Сопоставлен новый раздел 7 с формулировкой находки M1 из r1 — построчно,
|
||
файл за файлом.
|
||
- Перепроверены сами три доковые ссылки на текущем SHA (см. выше) — не
|
||
устарели.
|
||
- `git log`/`git diff` подтвердили локальность дельты (только текст issue,
|
||
никакой код или докфайл не менялся с r1).
|
||
- Не перепроверялись AC1–AC4, факт-база ТЗ по коду, трек `small` — дельта их
|
||
не задевает, унаследованы из r1 (раздел выше).
|
||
|
||
## Что проверено и корректно
|
||
|
||
- Единственная находка r1 (Medium, в скоупе) закрыта по существу: все три
|
||
файла названы с теми же строками, оговорка сформулирована, способ проверки
|
||
на код-ревью указан.
|
||
- Правка не вносит догадок, выданных за факт: формулировка «сегодня
|
||
безусловно обещают» повторяет уже проверенный в r1 факт, новых
|
||
непроверяемых утверждений нет.
|
||
- Правка не расширяет и не сужает скоуп задачи (AC1–AC4, раздел 2 «Объём» не
|
||
тронуты) и не меняет трек `small`.
|
||
|
||
## Чего не проверял
|
||
|
||
- Не запускал никакие гейты (`tsc`, `test`, `build`, смоки, invariants) — это
|
||
по-прежнему ревью ТЗ, реализации ещё не существует, кода для проверки нет.
|
||
- Не проверял точную будущую формулировку доковой оговорки в трёх файлах —
|
||
ТЗ (лёгкий трек) обязано назвать файлы/строки и содержание оговорки, а не
|
||
дать готовый текст патча; точную формулировку и её реальное наличие в трёх
|
||
файлах проверит код-ревью через названный автором `grep`.
|
||
- Не проверял `fit: content` и i18n-строки интерфейса — вне дельты, и уже не
|
||
проверялись в r1 по тем же причинам (гейт живёт только в блоке `fit ===
|
||
'house'`).
|
||
|
||
## Вердикт
|
||
|
||
Зелёный. High: 0. Medium: 0. Единственная находка r1 закрыта по существу, новых
|
||
находок делта не вносит. Готово к переходу в разработку.
|