From 1d2748d64bf2eafbcc8aade31652e226edf0e14a Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 27 Aug 2026 19:46:30 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20spec=20#329=20revision=203=20=E2=80=94?= =?UTF-8?q?=20AC7=20proves=20the=20per-surface=20refusal=20channels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: #329 User-Visible: no --- docs/specs/329-junction-limits.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/specs/329-junction-limits.md b/docs/specs/329-junction-limits.md index 2c62daa2..3265f83c 100644 --- a/docs/specs/329-junction-limits.md +++ b/docs/specs/329-junction-limits.md @@ -1,6 +1,6 @@ # Issue #329 — ограничения стыков стен и честная острая вершина -Статус: ревизия 2 (r1: M1 — каналы отказа по поверхностям, M2 — AC5 разделён, L1 — пороги абсолютные). Решения владельца (чат, 2026-08-27, зафиксированы в issue): +Статус: ревизия 3 (r1: M1/M2/L1; r2: M1 — AC7 доказывает каналы §2). Решения владельца (чат, 2026-08-27, зафиксированы в issue): пять ограничений приняты; проверки действуют на записи, легаси читается как есть; для остаточных острых вершин легаси-планов рендер закрывает остриё честной фаской вместо «трезубца». @@ -98,7 +98,9 @@ margin): правила П1–П5 применяются к элементам, - `custom_components/houseplan/validation.py` — дельта-правила §5; `tests_backend` — кейсы принятия унаследованного и отказа нового. - Тесты фронта: юниты на каждую формулу П1–П5 (границы: 14.9°/15°, 6/7 стен, - 19/20 см, 4/5 см, пустой/непустой просвет), мутанты в гейте на П1 и §4. + 19/20 см, 4/5 см, пустой/непустой просвет), мутанты в гейте на П1 и §4; + смоки каналов отказа: текст объяснения ручки Resize и текст тоста + «Толщины» (AC7a/AC7b). - Смок: репро-фикстура #329 — новая попытка нарисовать «шпиль» отклоняется; легаси-конфиг рендерится по §4. - Golden: новая сцена `sharp-apex-legacy-dark` по фикстуре issue (рендер §4); @@ -137,8 +139,14 @@ margin): правила П1–П5 применяются к элементам, - **AC6 (§4).** Легаси-фикстура issue рендерится без «трезубца»: одна фаска, ноль V-вырезов; golden-сцена + пиксельная проверка смоком (нет разрывов тела выше фаски). -- **AC7.** Resize/«Толщина», приводящие к нарушению любого из П1–П5, — отказ - fail-closed, план байт-неизменен. +- **AC7a (Resize, канал §2).** Resize, приводящий к нарушению любого из + П1–П5, упирается в последнюю допустимую позицию; при отсутствии + безопасного шага ручка приглушена, и её объяснение (hover/focus/нажатие) + называет нарушенное правило. План байт-неизменен; тост не показывается. + Смок проверяет и байт-неизменность, и текст объяснения ручки. +- **AC7b («Толщина», канал §2).** Значение толщины, нарушающее П3/П5, не + применяется; показывается тост с названием правила (образец отказа нуля + #313). План байт-неизменен. Смок проверяет текст тоста. - **AC8.** Миграция/импорт/restore фикстуры с нарушениями проходят. - **AC9 (§5).** Бэкенд: эхо-запись унаследованного нарушения проходит; запись, добавляющая новое нарушение, отклоняется стабильным кодом.