diff --git a/docs/specs/403-area-relocation-safety.md b/docs/specs/403-area-relocation-safety.md index 71facc51..56a92e12 100755 --- a/docs/specs/403-area-relocation-safety.md +++ b/docs/specs/403-area-relocation-safety.md @@ -3,7 +3,7 @@ - Issue: https://github.com/Matysh/houseplan-card/issues/403 - Приоритет: P1, bug; полный трек — класс A, две находки на одной поверхности (свежий код #126) -- Ревизия: 1 (2026-08-31) +- Ревизия: 2 (2026-09-01; H1/L1 из SPEC-REVIEW-403-r1) ## Сценарий @@ -81,7 +81,7 @@ deletion is deliberately completed before provenance advances»), чтобы ### (2) M1 — переезд одного устройства гасит историю всех -`src/houseplan-card.ts:5056-5058`: +`src/houseplan-card.ts:5062-5065`: ```ts this._areaRelocationIds = new Set(areaRelocations.relocateIds); @@ -130,6 +130,27 @@ authoritative-rebuild, пока набор непуст: при read-only кли потребует отдельного уведомления о потере позиции — ключ добавляется во все четыре словаря. +## Touch, View и kiosk + +Touch-контракт не меняется. Правка не затрагивает drag/tap-жесты, pointer- +обработчики, DOM или рендер; история редактора устройств сохраняет действующий +best-effort контракт на touch из `docs/TOUCH-SUPPORT.md` и раздела 6 +`docs/USER-GUIDE.ru.md`. + +В View и kiosk результат AC1/AC2 наблюдаем — маркер сохраняет корректную +позицию либо получает существующую отметку внимания, — но новых действий или +жестов не появляется. Гарантированный touch-first контракт View/kiosk не +ослабляется: на сенсорном клиенте итоговое положение и отметка должны быть теми +же, что на desktop. + +## Производительность + +Влияния на производительность и действующие бюджеты нет. Исправление не +добавляет циклов, подписок, постоянных вычислений или сетевых вызовов сверх уже +выполняемых `_syncAreaRelocations` / `_writeConfig`; выборочная очистка работает +по существующему стеку не более чем из 50 команд. Нового performance-профиля не +требуется. + ## Критерии приёмки - **AC1**. Отказ `config/set` во время переезда не оставляет устройство без