mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
@@ -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
|
||||
Reference in New Issue
Block a user