Files
houseplan-card/docs/reviews/SPEC-REVIEW-384-r2.md
T
2026-08-30 07:46:03 +00:00

10 KiB
Raw Blame History

SPEC-REVIEW-384-r2

Issue: #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 закрыта по существу, новых находок делта не вносит. Готово к переходу в разработку.