test: the Resize channel of the junction limits, driven by a real pointer (#329 AC7a)

Measured what Resize itself already forbids: a room cannot be squeezed below
30 cm (two 15 cm walls), so П3 and П5 are unreachable through shrinking and
the gate merely fails closed there. П4 IS reachable on a fine grid, so the
smoke drags a real handle on a 2 cm grid: two rooms 10 cm apart, a 6 cm pull
would leave 4 cm between foreign nodes, the wall stops at 6 cm and exactly one
toast names the 5 cm rule.

Spec revision 6 records both the measurement and the two corrections it forces
on AC7a: a dimmed handle cannot express a per-step limit, and the plan is NOT
byte-unchanged — the allowed part of the gesture is a legitimate edit.

Issue: #329
User-Visible: no
This commit is contained in:
Codex
2026-08-27 23:31:42 +03:00
parent f514fb27fe
commit 2b1f03be2d
2 changed files with 108 additions and 5 deletions
+23 -4
View File
@@ -162,10 +162,29 @@ margin): правила П1–П5 применяются к элементам,
ровно 3 различные вершины без ступенек и микро-сегментов; golden-сцена +
юниты на контурах и на кольце.
- **AC7a (Resize, канал §2).** Resize, приводящий к нарушению любого из
П1–П5, упирается в последнюю допустимую позицию; при отсутствии
безопасного шага ручка приглушена, и её объяснение (hover/focus/нажатие)
называет нарушенное правило. План байт-неизменен; тост не показывается.
Смок проверяет и байт-неизменность, и текст объяснения ручки.
П1–П5, упирается в последнюю ДОПУСТИМУЮ позицию: нарушающий шаг не
превьюится и не коммитится, а отказ ровно один раз за жест называет
нарушенное правило тем же каналом, которым Resize уже объясняет
отклонённый предпросмотр (`resize.preview_failed` → `resize.limit_stopped`).
Смок ведёт настоящий pointer-жест по ручке: сетка 2 см, две комнаты в 10 см
друг от друга, тяга на 6 см (оставила бы 4 см между чужими узлами, П4)
останавливает стену на 6 см и показывает ровно один тост с «5 см».
> Ревизия 6, отступление от первоначальной формулировки («ручка приглушена,
> тост не показывается, план байт-неизменен»). Приглушение ручки считается
> статически в `_rszResolution`, до жеста, а нарушение стыка зависит от
> КОНКРЕТНОГО шага — статически его не разрешить, не перебирая все позиции.
> Молчаливый отказ при этом прямо противоречит уже действующему контракту
> #293/#295 («reject не молчит»), закреплённому мутантом
> `resize-preview-reject-silent`. И байт-неизменность плана неверна как
> общее требование: разрешённая часть жеста — это нормальная правка,
> которую пользователь и просил; неизменным план остаётся только когда
> допустимого шага нет вовсе.
>
> Замер собственных ограничителей Resize (2026-08-27): комнату не дают
> сузить ниже 30 см (две толщины по 15 см), поэтому П3 (20 см) и П5 через
> сужение комнаты недостижимы — гейт там страхует, а не работает. Реально
> достижимо П4 на мелкой сетке, этот случай и закреплён смоком.
- **AC7b («Толщина», канал §2).** Значение толщины, нарушающее П3/П5, не
применяется; показывается тост с названием правила (образец отказа нуля
#313). План байт-неизменен. Смок проверяет текст тоста.