12 KiB
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и его комментарий, факт отсутствия goldensummary-*, структуру рендера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