From 2ade43520b325695b26fa87475a266f2339742e3 Mon Sep 17 00:00:00 2001 From: Codex Date: Tue, 25 Aug 2026 21:13:48 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20spec=20#309=20revision=203=20=E2=80=94?= =?UTF-8?q?=20explicit=20#249=20non-scope=20and=20touch=20impact?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: #309 User-Visible: no --- docs/specs/309-junction-visual-limit.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/specs/309-junction-visual-limit.md b/docs/specs/309-junction-visual-limit.md index 14249064..15dc41bd 100644 --- a/docs/specs/309-junction-visual-limit.md +++ b/docs/specs/309-junction-visual-limit.md @@ -1,7 +1,7 @@ # ТЗ #309 — Стыковочные узлы: визуальный лимит mitre и устранение паразитных парных патчей Issue: https://github.com/Matysh/houseplan-card/issues/309 -Статус: ревизия 2 (после SPEC-REVIEW-309-r1: добавлены обязательные разделы §7.1). +Статус: ревизия 3 (после SPEC-REVIEW-309-r2: явный не-скоуп #249/paper-механизма и touch-impact). База: #302 (полный mitre, веера узлов, детектор «без дыр», сет junction-сцен), #271 (thickLength-лимиты). ## 0. Сценарий @@ -58,6 +58,8 @@ Issue: https://github.com/Matysh/houseplan-card/issues/309 **Скоуп:** форма патчей парных стыков и вееров узлов ≥3 лучей в рендер-геометрии кладки; фильтр не-соседних пар; golden/юниты/мутанты; docs/WALL-THICKNESS.md §3. **Не-скоуп:** модель данных и конфиг (толщины, ключи walls, партиции) не меняются; hit-зоны и снап не меняются; политика полного mitre в допустимом пороге (#302 решение №5) сохраняется; #308 (перегородка-дубликат) не трогается. +**Явный не-скоуп — механизм #249:** `MULTI_WALL_JOIN_LIMIT = 1.25` (src/wall-thickness.ts:83) и его потребители — `multiWallBevelCutsAt` (вырез экстерьерного полотна / paper envelope через `node.limit`) и mitre контуров комнат (:1475/:3875) — не изменяются ни численно, ни по форме. #309 правит только веера кладки (`junctionNodeGeometry`) и парные патчи (`linearWallJoinPatches`); близость порогов (1.25 и 1.5) — не повод их объединять. `MultiWallNodeMap` используется совместно, но `node.limit` не переопределяется. AC8 закрепляет это диффом. + ## 3.7 UX Никаких новых контролов, диалогов или настроек. Меняется только форма отрисованной кладки у узлов на всех поверхностях, где она рисуется (Plan/View/kiosk/Static/hidden-Iso — общий структурный кэш). Превью рисования цепочки использует ту же парную логику — форма превью и персиста совпадает. @@ -66,6 +68,10 @@ Issue: https://github.com/Matysh/houseplan-card/issues/309 Нет. Чистая рендер-геометрия; конфиг, экспорт/импорт и compatibility-поля не затрагиваются. +## 3.8a Touch (docs/TOUCH-SUPPORT.md) + +Touch-контракт не затрагивается: меняется только форма отрисованной кладки; hit-зоны (`physical-hit`, touchStroke), жесты, панорама/зум и порядок обработки касаний не изменяются. View/kiosk на сенсорных экранах получают ту же геометрию из общего структурного кэша без каких-либо новых слушателей. + ## 3.9 i18n Нет новых строк. @@ -93,6 +99,7 @@ Issue: https://github.com/Matysh/houseplan-card/issues/309 4. **Прямые углы не изменились:** для пары равных толщин под 90° патч байтово идентичен прежнему (вылет 1.41h < 1.5h). Доказательство: юнит. 5. **Без дыр:** `junctionContractHoles` пуст на всех сценах сета и на полном экспорте отчёта (13 комнат/24 перегородки). Доказательство: юнит на фикстуре экспорта + существующий смок-детектор. 6. **Golden:** весь сет зелёный; изменившиеся сцены перечислены в ревью с обоснованием формы. +7a. **Не-скоуп #249 (AC8):** `MULTI_WALL_JOIN_LIMIT`, `multiWallBevelCutsAt` и mitre контуров комнат не входят в дифф; существующие юниты/сцены paper envelope зелёные. Доказательство: ревью кода по диффу + существующие тесты. 7. **Мутанты:** (a) `VISUAL_MITRE_LIMIT` обратно в 4 — красный; (b) фаска отключена (всегда mitre) — красный; (c) фильтр не-соседних пар отключён — красный; (d) фаска строится не перпендикулярно биссектрисе (например, хорда pA–pB) — красный. Гварды начинаются с типового пролога tsc+fix-test-build. ## 6. План тестов