Files
houseplan-card/legacy/reviews/v1.68.0/SPEC-REVIEW-316-r4.md
T
Claudeandclaude[bot] cca9bc856b docs(reviews): документы ревью линий до v1.77.0 — в legacy/reviews (#682)
Волна 5 эпика #674, перенос документов ревью (класс C), сделан
инструментом: `node scripts/reviews-archive.mjs --through=v1.77.0 --apply`.
965 документов 332 задач разложены по `legacy/reviews/<тег>/` (v1.63.0 …
v1.77.0) — 330 задач доказаны трейлерами своей линии, два документа без
трейлера (#68, #94, работа до правила трейлеров) — по линии, где их
добавили. В `docs/reviews/` остались 154 документа задач с трейлером после
v1.77.0 — текущая линия v1.78.0 — и INDEX.md, пересобранный тем же
построителем. История не переписана: SHA-якоря «Материала раунда» живы.
Счёт раундов (`reviewRounds` по живому каталогу и архиву) совпадает до и
после переноса: 694 пары «этап:задача». Строка в `legacy/README.md`.

Issue: #682
User-Visible: no
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-09-27 22:10:47 +00:00

15 KiB
Raw Blame History

SPEC-REVIEW-316-r4

Issue: #316 · ТЗ: docs/specs/316-opening-host-auto-resolution.md · заход: r4 · блокирующих циклов израсходовано 3 из 4 (входящее значение, до этого вердикта) · SHA материала ревью r4: bb051741 (docs: spec #316 revision 4 — the golden expectation rests on the render/write boundary, not on masonry kind). Материал r3: SHA 56ffbfac, документ docs/reviews/SPEC-REVIEW-316-r3.md. Материал r2: SHA 6ca2ce8b, документ docs/reviews/SPEC-REVIEW-316-r2.md. Материал r1: SHA 36f735ae, документ docs/reviews/SPEC-REVIEW-316-r1.md.

Скоуп раунда

Разбор — по дельте (PROCESS.md §2.9/§2.10): git diff 56ffbfac..bb051741 -- docs/specs/316-opening-host-auto-resolution.md. Дельта — 10 строк (5 добавлено / 3 удалено по факту, с учётом переноса), целиком внутри §5.3 (обоснование ожидания «без изменений» для golden-сцены coincident-partition-virtual-dark) плюс однострочная правка статус-строки в шапке. Это прямой точечный ответ на M5 ревью r3 — единственную находку предыдущего раунда. Нормативные правила §3, AC1–AC6, границы §2, §5.1 (compatibility), §5.2 (i18n), §5.4 (perf/touch), §6–§8 не тронуты.

Полный diff между r3 и r4 (git diff 56ffbfac..bb051741 --stat) состоит из двух файлов: правки ТЗ (10 строк) и появления в дереве документа docs/reviews/SPEC-REVIEW-316-r3.md (публикация предыдущего ревью) — второй файл к предмету этого раунда не относится.

Оснований для полного разбора (ребейз, смена контракта, новая подсистема, объём дельты сопоставим с задачей) нет: дельта меньше исходной задачи и локальна к одному абзацу.

Комментарии issue #316 проверены полностью (gh issue view 316 --comments): после вердикта r3 (2026-08-26T18:13:20Z) единственный новый комментарий — «Ревизия 4 (bb051741)» автора, описывающий исключительно правку M5. Новых продуктовых директив владельца не появилось.

Как проверялось

  1. Найден вердикт r3 в комментариях issue (2026-08-26T18:13:20Z) и SHA материала (56ffbfac, назван в документе r3).
  2. git diff 56ffbfac..bb051741 -- docs/specs/316-opening-host-auto-resolution.md — построчная сверка дельты с текстом находки M5 и с предложенной в r3 формулировкой «как починить».
  3. M5 (обоснование ожидания «без изменений» в §5.3). Новый текст: «Ожидание «без изменений» держится не на природе кладки (после очистки host проём обрабатывался бы миграцией как контурный — тем же путём, что правило 3.1), а на границе §2: сцена рендерится в mode: 'view' без структурной записи, commitWallSegmentModel из чистого рендера не вызывается — правила §3 в ней не выполняются вовсе». Проверено заново по коду (не по заявлению автора):
    • src/houseplan-card.ts:197-200 — commitWallSegmentModel импортируется из wall-segment-model; вызовы — строки 7408, 7432, 7435, 7568, все внутри методов, обрабатывающих геометрический жест редактора (сохранение после _restoreGeometryStateInConfig/_geometrySnapshotFromConfig, ветки успеха/ошибки с _showWallModelMigrationBlocked). Пути от setConfig/чистого рендера, вызывающего commitWallSegmentModel, не найдено — подтверждает «из чистого рендера не вызывается».
    • demo/golden/matrix.mjs:185-187 — сцена coincident-partition-virtual-dark задана с mode: 'view', без dialog/editorTray/иного действия, запускающего структурную запись — подтверждает «сцена рендерится в mode: 'view' без структурной записи».
    • Ранее проверенный (r3, не переоткрывается) факт «после delete opening.host проём обрабатывался бы как контурный» сохранён в новом тексте как параллельное обоснование в скобках, само по себе оно теперь явно не несёт вес вывода «без изменений» — вес несёт граница §2. Формулировка больше не переворачивает факт (в отличие от текста r3), и не отрицает его: обе стороны утверждения теперь совместимы.
  4. Правка соответствует ровно тому, что r3 назвал в разделе «Как починить» (docs/reviews/SPEC-REVIEW-316-r3.md, строки 170–174): «сцена рендерится в mode: 'view' без структурного редактирования — §3 применяется только к initial migration (§2), а презентационный рендер её не запускает» — совпадает по существу; автор сохранил также верное техническое уточнение из своей же r3-формулировки (контурная обработка после очистки host), переведя его из основания вывода в параллельное замечание — это усиливает точность, не ослабляет её.
  5. AC1–AC6, правила 3.1–3.4, §1, §2, §4, §5.1, §5.2, §5.4, §6–§8 дельтой не задеты (текст не менялся) — не перепроверялись повторно, унаследованы из r1/r2/r3 (см. раздел ниже).

Гейты typecheck/test/build/check-docs не прогонялись: диапазон изменений — только docs/specs/316-*.md, продуктового кода нет, класс C. Как и в r1–r3, гейтов для класса C на стадии ТЗ не предусмотрено.

Закрытие раунда r3

Находка r3 Чем закрыта Где видно
M5 / §5.3 обосновывает «без изменений» неточным «независимая кладка вне контурных атомов» Обоснование заменено на границу §2 (mode: 'view', commitWallSegmentModel не вызывается из чистого рендера); неверный переворот факта устранён, техническое уточнение про контурную обработку после очистки host сохранено как параллельное замечание, не как основание вывода docs/specs/316-opening-host-auto-resolution.md, §5.3, строки 138–147; подтверждено чтением src/houseplan-card.ts:197-200,7405-7568 и demo/golden/matrix.mjs:185-187 (см. «Как проверялось» п.3)

M5 закрыта полностью, без оговорок: новый текст верен и по факту (проверено кодом заново), и по логике вывода (граница §2, а не природа кладки, несёт обоснование ожидания).

Унаследовано из r3 (через r2, r1)

Без повторной проверки приняты выводы docs/reviews/SPEC-REVIEW-316-r3.md (SHA 56ffbfac) и транзитивно docs/reviews/SPEC-REVIEW-316-r2.md (SHA 6ca2ce8b), docs/reviews/SPEC-REVIEW-316-r1.md (SHA 36f735ae) по частям документа, которые дельта r4 не затронула:

  • §1 «Сценарий», §2 «Границы» — не изменились с r1; цепочка причин, сверка с #306 §8.2, правило «Правила §3 действуют только при initial migration» приняты как проверенные в r1.
  • §3 Правила 3.1–3.4 — текст не менялся с r1; заимствование критерия eligible(), обоснование физического смысла 3.1, tie-break 3.2, рендер по x/y для безхостовых проёмов 3.3 — приняты из r1/r2 без повторного чтения кода.
  • AC1–AC6 — текст не менялся с r1 (кроме фикстуры AC3, переписанной и подтверждённой в r2) — приняты как «сформулированы однозначно, со способом доказательства».
  • §5.1 — весь раздел, включая перечень файлов (закрытие M1 r1) и ссылку на docs/CONFIG-COMPATIBILITY.md (закрытие M3 r2, проверено дословной сверкой цитаты в r3) — не менялся дельтой r4, принят без повторного чтения.
  • §5.2 (i18n), §5.4 (perf/touch), §6 «Принято предположительно», §7 «Риски», §8 «Откат» — не менялись с r2, приняты без повторной проверки.
  • §5.3 — факт существования сцены coincident-partition-virtual-dark с комбинацией span+проём (закрытие исходной M4 r2) — не переоткрывался в этом раунде; проверялось только обоснование ожидания «без изменений» (M5), см. выше.
  • Термин «непривязанный (unhosted)» — не менялся с r1, коллизия с docs/UX-MODES.md закрыта в r1/r2, повторно не проверялась.

Находки

Нет. Дельта r4 — точечная и корректная правка единственной находки предыдущего раунда; новых утверждений, выходящих за рамки предложенного в r3 исправления, текст не вводит.

Что проверено и корректно

  • M5 закрыта полностью и точно: обоснование ожидания «без изменений» для coincident-partition-virtual-dark теперь опирается на верный факт (граница §2 — mode: 'view', commitWallSegmentModel не вызывается из презентационного рендера), а не на неверное обобщение о природе независимой кладки. Подтверждено чтением кода заново (не по заявлению автора): src/houseplan-card.ts (импорт и все вызовы commitWallSegmentModel), demo/golden/matrix.mjs (параметры сцены).
  • Статус-строка в шапке документа корректно отражает историю раундов («r1: M1/M2/Low; r2: M3/M4; r3: M5»).
  • Все находки r1 (M1, M2, Low «инертный»), r2 (M3, M4) и r3 (M5) закрыты по существу, каждая — со ссылкой на конкретную строку кода или текста, не на заявление автора.
  • Открытых Medium/High-находок по ТЗ #316 не осталось. Обязательные разделы §7.1/DoR §2.5 присутствуют: сценарий, что человек увидит, проблема, скоуп и не-скоуп, контракт поведения, i18n, AC1–AC6 с доказательством, план автотестов (в AC), риски, откат, release-артефакты, блок «принято предположительно».

Чего не проверял

  • Не перепроверял AC1–AC6 и правила 3.1–3.4 по коду заново — текст не менялся дельтой r4, наследуется из r1/r2/r3.
  • Не прогонял гейты typecheck/test/build/check-docs/смоки/golden — класс C, продуктового кода ещё нет, как и в r1–r3. Это гейт этапа кода, не ТЗ.
  • Не проверял #319 — вне скоупа, как и в предыдущих раундах.
  • Не проверял остальные golden-сцены на предмет иных неточностей в §5.3 — не требуется: единственная находка предыдущего раунда была именно про эту сцену и именно про формулировку обоснования, она закрыта; полная проверка golden-матрицы — задача golden:verify на стадии кода.

Вывод

High-находок нет. Medium-находок нет: единственная находка r3 (M5) закрыта по существу и подтверждена повторным чтением кода. Зелёного вердикта требует и содержание (все обязательные разделы ТЗ на месте, AC однозначны и снабжены способом доказательства, технические решения автора помечены как предположения в §6), и процесс (§2.10 — дельта проверена, находка закрыта, унаследованные части перечислены). Вердикт — зелёный, ТЗ уходит в S5-ready.