# SPEC-REVIEW-508-r2 - Issue: #508 «Сводная панель: в диалоге настроек не работает прокрутка — колесом мыши и touch на мобильных» - Этап: S4-spec-review (PROCESS.md §2.4) - Трек: `small` (лёгкий) — ТЗ живёт в теле issue, файла в `docs/specs/` нет (проверено: `ls docs/specs/ | grep -i 508` → пусто) - Заход: r2 · блокирующих циклов ревью ТЗ израсходовано 1 из 2 - Материал: тело issue #508 на момент этого раунда (комментарий 0 — S2 от Matysh/Codex, 09.09) + предыдущий вердикт (комментарий 1, claude, r1) + `docs/reviews/SPEC-REVIEW-508-r1.md` (опубликован коммитом `f02af9330b17a37eea6c8086f4335cbbc7265d36`) - Ревьюер: Claude (сессия ревью ТЗ), другая роль/модель, чем автор ## Разбор по дельте (PROCESS.md §2.10) r1 закончился жёлтым вердиктом с двумя Medium в скоупе, без High. Дельта этого раунда — правка тела issue #508 (не код, не отдельный файл ТЗ), сделанная в ответ на ровно эти два замечания. Диапазон разбора: те два абзаца тела issue, что изменились (AC3 и добавленный раздел «Откат»), плюс проверка, что остальные части ТЗ (скоуп, AC1/AC2/AC4/AC5/AC6, «Причина», «Изменения», «Тесты», выбор трека) не задеты и не нуждаются в повторной проверке. Дельта локальна: нет ребейза (ветки задачи ещё нет, кода нет), контракт поведения не менялся, новая подсистема не появилась, объём правки (два абзаца из некрупного issue) несопоставим с объёмом исходного ТЗ — сокращённый разбор оправдан. ## Закрытие раунда r1 | Находка | Чем закрыта | Где это видно | |---|---|---| | **M1.** AC3 ссылался на несуществующее доказательство `golden summary-*` (`ls demo/golden/baselines \| grep -i summary` → пусто; единственный скрипт `demo/capture_summary_panel_505.mjs` прямо не golden/smoke) | Автор выбрал вариант (а) из предложенных ревью: golden-часть убрана из AC3, доказательством оставлен только `smoke_summary_panel_polish`, с явной ссылкой на находку | Текущее тело issue, AC3: «Нативная ветка (демо) не меняется: `smoke_summary_panel_polish` зелёный без правок его ожиданий (golden-сцен диалога панели нет — ревью ТЗ r1 M1).» — сравнено с исходной формулировкой, процитированной в `SPEC-REVIEW-508-r1.md` («…и golden `summary-*` без отличий») | | **M2.** В теле issue не было раздела «откат», обязательного для лёгкого трека шаблоном PROCESS.md §5 | Добавлен абзац «Откат» почти дословно по формулировке, предложенной ревью r1 | Текущее тело issue, последний абзац раздела «ТЗ»: «**Откат.** Обычный ревёрт коммита: атрибут `flex-content` — opt-in только у диалога настроек панели, остальные `hp-dialog` его не несут; ни данных, ни миграций.» | Проверка на «не сломала ли правка то, что r1 уже принял» (повод регрессии #102): новая формулировка AC3 не дублирует AC4 (вариант (б) из предложенных r1 создал бы именно такое дублирование — автор его не выбрал), остаётся отдельным проверяемым критерием со способом доказательства `smoke`, соответствует DoR §2.5 («у каждого AC указано, чем он доказывается»). Раздел «Откат» соответствует шаблону §5 дословно по позиции (последний блок ТЗ) и по содержанию (как выключить — здесь «опция не включена по умолчанию для остальных диалогов» + «обычный ревёрт», затрагиваемых данных/миграций нет — заявлено явно). ## Унаследовано из r1 Без повторной проверки в этом раунде принято (см. `docs/reviews/SPEC-REVIEW-508-r1.md`, основан на теле issue на момент коммита `f02af9330b17a37eea6c8086f4335cbbc7265d36`): - Диагноз и причинно-следственная цепочка бага (scroll chaining обрывается на `.body` без ограничения высоты в `ha-dialog`/`wa-dialog`) — подтверждена воспроизведением на реальном стенде HA 2026.9.1 и изолированной Playwright-проверкой, не догадка. Раздел «Причина» текстуально не изменился. - Выбор трека `small` корректен: одна поверхность, нет миграции конфига, нет новых i18n-ключей, нет нового UX-контракта (восстанавливается уже обещанный контракт #505). Раздел «Скоуп» не изменился. - Touch входит в задачу правомерно по `docs/TOUCH-SUPPORT.md` (диалог настроек панели — гарантированная View-поверхность), это не самовольное расширение скоупа. Не изменилось. - AC1, AC2, AC5 — сформулированы однозначно, способ доказательства назван (`смок`), у AC1/AC2 есть именованные мутанты для протективного эффекта (`summary-dialog-drops-flex-content`, `hp-dialog-ignores-flex-content`). Текст этих AC не изменился. - AC4 опирается на реально существующий и достаточно широкий набор golden-эталонов с диалогами — претензия M1 относилась только к AC3, не к AC4; текст AC4 не изменился. - Раздел «Тесты», включая негативного свидетеля (в) «без `flex-content` у стаба скролл не идёт» (доказывает, что стенд воспроизводит баг, а не только что фикс включён) — не изменился. - L1 (файл документации для фразы про футер не был назван точно) и L2 (перф явно не проговорён) были сняты как Low на усмотрение автора ещё в r1 и не требовали правки для зелёного вердикта. В этом раунде автор попутно закрыл оба: докабзац теперь целится в `docs/ARCHITECTURE.md` (раздел «Изменения», п.3), а AC6 явно говорит «перф не затронут (один атрибут, без новых обработчиков)». Это бонус, не предмет проверки этого раунда — переисследовать не требуется, оба и так были необязательны. ## Что проверено в этом раунде (сверх таблицы закрытия) - Полное тело issue #508 прочитано целиком (не только изменённые абзацы) — проверено, что делта ограничена ровно AC3 и добавленным «Откат», остальной текст совпадает по смыслу и структуре с тем, что цитирует `SPEC-REVIEW-508-r1.md`. - `docs/specs/` — файла для #508 нет (`ls docs/specs/ | grep -i 508` → пусто), трек `small` соблюдён. - PROCESS.md §5 (шаблон лёгкого трека: «проблема · контракт · AC1…ACn с доказательством · откат») и §2.5 (DoR) — новый раздел «Откат» и явные фразы об i18n/перф в AC6 закрывают пункты DoR «влияние на производительность названо (или явно нет)» и «откат: как выключить или вернуть назад». - Ни один открытый продуктовый вопрос владельцу в новой версии ТЗ не появился; весь материал раунда — технический (выбор формулировки AC, докфайл, шаблонная фраза), решается автором/ревьюером, как и в r1. - Новых High/Medium в изменённых абзацах не найдено: обе новые формулировки однозначны, способ доказательства назван, откат не подразумевается, а прописан. ## Чего не проверял - Не запускал никаких гейтов (`typecheck`/`test`/`build`/`golden`/`smoke`) — этап ревью ТЗ, кода ещё нет, к этому этапу гейты не относятся (как и в r1). - Не проверял заново существование `demo/capture_summary_panel_505.mjs` и его комментарий, факт отсутствия golden `summary-*`, структуру рендера `src/hp-dialog.ts`, docs/TOUCH-SUPPORT.md — всё это уже проверено чтением в r1 и не затронуто дельтой этого раунда (см. «Унаследовано из r1»). - Не оценивал заново качество будущего `test/hp-dialog-contract.test.mjs` — файла ещё нет, текст его описания в ТЗ не изменился с r1. ## Вердикт Оба Medium из r1 закрыты прямыми правками тела issue, проверено построчным сравнением с формулировками, процитированными в `SPEC-REVIEW-508-r1.md`, а не на слово автора. Новых High или Medium в изменённых абзацах нет. Открытых продуктовых вопросов к владельцу нет. ТЗ готово к переводу в «Готово к разработке» (DoR §2.5: откат назван, перф назван, AC1…AC6 проверяемы с указанным способом доказательства). Вердикт: зелёный · заход r2 · блокирующих циклов 1/2 · High: 0 · Medium: 0 --- ## Материал раунда - Ветка: `dev`, коммит `` — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет. - Якоря снять не удалось: ветки задачи нет, материал читался по `dev`. - Вердикт конвейера: `green` · High 0