# SPEC-REVIEW-493-r1 Issue: [#493](https://github.com/Matysh/houseplan-card/issues/493) — «Сводная панель: ограничить picker и исправить локальные настройки, мобильную форму и lifecycle». ТЗ: [`docs/specs/493-summary-panel-hardening.md`](https://github.com/Matysh/houseplan-card/blob/issue/493-summary-panel-hardening/docs/specs/493-summary-panel-hardening.md) (коммит `14beeb84`, докс-only: `docs/specs/493-summary-panel-hardening.md` + `docs/specs/README.md`). Этап: ТЗ на ревью (S4-spec-review). Заход r1. Блокирующих циклов израсходовано 0/4. Трек: полный (аналитик назвал 4 нарушенных критерия `small` — сложность/риск >3, больше одной поверхности, есть межwriter-совместимость, есть влияние на производительность и touch). ## Скоуп ревью Материал — ровно коммит `14beeb84` на ветке `issue/493-summary-panel-hardening` (рабочая копия уже на нём, `git diff --check` показывает только этот коммит, никакого продуктового кода в диапазоне `71aeb860..14beeb84` нет). Задача продолжает утверждённое исключение #437 из `docs/SCOPE.md` (read-only summary overlay, J1/J6) и закрывает пять подтверждённых аудитом acceptance-пробелов (F3–F6, B4), не дублируя #490 (lost-ACK recovery/live invalidation). ## Как проверялось 1. Прочитаны `docs/SCOPE.md`, `AGENTS.md`, `PROCESS.md` (§1–§10, §2.10 для формата раунда — не понадобился, это r1 без предшествующего вердикта). 2. Прочитано тело issue #493 и все три комментария (аналитика S2, «ТЗ готово», и отчёт о сбое автопрогона ревью). 3. Прочитан ТЗ-документ целиком (482 строки). 4. Сверены обязательные разделы §7.1 PROCESS.md построчно с оглавлением документа — все 13 присутствуют (см. таблицу ниже). 5. **Фактическая проверка проблемы (§3 ТЗ) по текущему коду**, а не на слово автора — аудит цитирует конкретные строки на устаревшем SHA `ea6061e9`, и с тех пор в код никто не коммитил (ветка ТЗ — чисто docs), так что актуальный код на HEAD это тот же код: - F3 подтверждён: `src/summary-panel-editor.ts:45-52,219-222` — `allEntities` строится сортировкой всего `hass.states` внутри рендер-функции и `entities.map()` кладёт полный список `