docs: review document for #508

Issue: #508
User-Visible: no
This commit is contained in:
claude[bot]
2026-09-09 19:21:54 +00:00
parent f02af9330b
commit 72764cff90
+119
View File
@@ -0,0 +1,119 @@
# 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
---
<!-- material-anchors: сгенерировано конвейером (#414) -->
## Материал раунда
- Ветка: `dev`, коммит `` — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет.
- Якоря снять не удалось: ветки задачи нет, материал читался по `dev`.
- Вердикт конвейера: `green` · High 0