diff --git a/docs/reviews/SPEC-REVIEW-309-r1.md b/docs/reviews/SPEC-REVIEW-309-r1.md new file mode 100644 index 00000000..1baabe7a --- /dev/null +++ b/docs/reviews/SPEC-REVIEW-309-r1.md @@ -0,0 +1,191 @@ +# SPEC-REVIEW-309-r1 + +Issue: https://github.com/Matysh/houseplan-card/issues/309 «Стыковочные узлы: визуальный лимит mitre и устранение паразитных парных патчей» +Этап: spec (обычный трек — сложность/риск владельца 6/10 и 7/10, `small` невозможен) +Заход: r1 · блокирующих циклов израсходовано 0 из 4 +Ревьюер: Claude (сессия ревью ТЗ), артефакт: `docs/specs/309-junction-visual-limit.md` в ветке `issue/309-junction-visual-limit`, коммит `ff623cd4` (только этот файл; `git diff origin/dev...HEAD --stat` — 1 файл, 72 строки, никакого кода). + +## Скоуп + +ТЗ описывает три класса визуальных артефактов кладки в узлах стыка стен (шип, горб, +ступенька), обнаруженных владельцем на реальном экспорте после #302 (полный mitre). +Решения владельца зафиксированы 2026-08-25 в аналитике issue: визуальный порог среза +`1.5·max(h)` вместо санитарного `MITRE_LIMIT=4`, форма среза — плоская фаска +перпендикулярно биссектрисе, устранение паразитных mitre-патчей между не-соседними +по азимуту лучами узла. Продуктовая рамка — рендер кладки стен как таковой, то есть +J1 SCOPE.md («show the whole home... spatially», точность отображения) и J6 +(«keep the plan true»): задача не расширяет и не меняет job, чинит форму существующей +геометрии, принятой в #302. Соответствие подтверждаю. + +## Как проверялось + +Не на веру автору — с чтением текущего кода `src/wall-thickness.ts`, +`src/physical-geometry.ts`, `demo/golden/matrix.mjs`, `docs/WALL-THICKNESS.md`, +`docs/specs/README.md`, `PROCESS.md` §2.4/§2.5/§7.1/§7.2, `AGENTS.md`, `docs/SCOPE.md`: + +1. `src/wall-thickness.ts:80` — `MITRE_LIMIT = 4` существует и является ровно тем + санитарным пределом, о котором говорит §3.1 ТЗ. +2. `src/wall-thickness.ts:1082-1150` (`linearWallJoinPatches`) — построчно + подтверждает: (a) функция перебирает **все** пары лучей `i