# SPEC-REVIEW-448-r2 - Issue: [#448](https://github.com/Matysh/houseplan-card/issues/448) — Labs: единый бессрочный переключатель `hp_alpha` для экспериментальных функций - ТЗ: `docs/specs/448-alpha-switch.md` (SHA `4b431f79`) - Трек: полный (не изменился с r1) - Этап: `S4-spec-review` · заход r2 · блокирующих циклов израсходовано 1 из 4 (r1 — жёлтый, потратил цикл; зелёный вердикт бюджет не тратит, #227) - Ревьюер ≠ автор ТЗ; сессия не участвовала в написании ни исходного ТЗ, ни правки r2. ## Скоуп раунда Разбор по дельте (PROCESS.md §2.10 / issue #214): предмет раунда — не задача целиком, а изменение со времени вердикта r1. **Материал r1** (взят из блока «Материал раунда» в конце `docs/reviews/SPEC-REVIEW-448-r1.md`, дописанного конвейером): - ветка `issue/448-alpha-switch`, коммит `aa72704aacce`; - SHA резолвится и сейчас (`git show aa72704a --stat` отработал, ребейза не было) — материал взят напрямую по SHA, поиск по дереву/блобу не потребовался. **Дельта r1→r2** — `git diff aa72704a..HEAD`: ``` docs/reviews/SPEC-REVIEW-448-r1.md | 181 +++++++++++++++++++++++++++++++++++++ docs/specs/448-alpha-switch.md | 6 ++ 2 files changed, 187 insertions(+) ``` `docs/reviews/SPEC-REVIEW-448-r1.md` — публикация документа r1 в ветку задачи шагом конвейера (PROCESS.md §7.3), не авторская правка; не предмет разбора. Содержательная дельта — ровно 6 добавленных строк в `docs/specs/448-alpha-switch.md`, раздел «i18n и accessibility», коммит `4b431f79` («docs: clarify alpha touch contract»): ```diff +Влияния на touch-контракт нет: в полном View снова становится достижимой уже +принятая в #89/#122 кнопка `projection-toggle`, и её существующие tap, +keyboard и focus-поведение не меняются. Kiosk по-прежнему не получает ни эту +кнопку, ни новую touch-цель; для View и kiosk не допускается деградация +требований `docs/TOUCH-SUPPORT.md`. ``` Ни один AC (AC1–AC13), ни один другой раздел ТЗ не изменились. Дельта затрагивает только пункт DoR «влияние на touch» (PROCESS.md §2.5) — локальная правка одного открытого пункта, не смена контракта поведения и не новая подсистема. Оснований для полного повторного разбора (§2.10, «разбор остаётся полным, если…») нет: дельта меньше и уже единственной находки r1, ребейза на ушедший вперёд `dev` не было (коммит `aa72704a` в текущей истории на месте). ## Закрытие раунда r1 | Находка r1 | Чем закрыта | Где это видно | |---|---|---| | **M1** (Medium, в скоупе). ТЗ не содержало ни одной строки о touch-влиянии при обязательном пункте DoR §2.5 для View/kiosk; `grep -inE "touch\|Touch\|сенсор"` давал ноль совпадений. | Добавлен явный абзац в разделе «i18n и accessibility»: «Влияния на touch-контракт нет…» — называет затронутый контрол (`projection-toggle`), формулирует «нет нового влияния» как явное решение, а не подразумеваемое, и фиксирует, что kiosk не получает новой touch-цели. | `docs/specs/448-alpha-switch.md`, коммит `4b431f79`, раздел «i18n и accessibility» (5 строк после абзаца про Flat/3-D названия и `aria-label`). `grep -inE "touch\|Touch\|сенсор" docs/specs/448-alpha-switch.md` теперь даёт непустой результат. | Проверка содержания, а не только факта правки: утверждения абзаца сверены с кодом. - «Уже принятая в #89/#122 кнопка `projection-toggle`» — подтверждено: `src/houseplan-card.ts:11501-11508`, кнопка введена веткой `#89` Stage 1 (`git log -S"projection-toggle" --oneline` → `0ef900a3 feat: integrate isometric labs renderer`) и расширена Stage 2 (`docs/ISOMETRIC.md` §«Stage 2 composition (#122)»). - «Kiosk не получает эту кнопку» — подтверждено условием рендера `${this._labsIso && this._mode === 'view' && !this._kiosk ? html`