docs: revise area relocation safety spec

Issue: #403
User-Visible: no
This commit is contained in:
Sergey Matyunin
2026-09-01 14:53:37 +00:00
committed by claude[bot]
parent caddeb08c1
commit 94502d3d67
+23 -2
View File
@@ -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` во время переезда не оставляет устройство без