diff --git a/docs/reviews/SPEC-REVIEW-448-r2.md b/docs/reviews/SPEC-REVIEW-448-r2.md new file mode 100644 index 00000000..ccffd53d --- /dev/null +++ b/docs/reviews/SPEC-REVIEW-448-r2.md @@ -0,0 +1,178 @@ +# 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`