mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-02 12:49:56 +00:00
120 lines
12 KiB
Markdown
120 lines
12 KiB
Markdown
# 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
|