20 KiB
SPEC-REVIEW-505-r2
Issue: https://github.com/Matysh/houseplan-card/issues/505
Стадия: ТЗ на ревью (S4-spec-review), полный трек (не пересматривается в r2 —
основание трека не затронуто дельтой).
Заход: r2 · блокирующих циклов израсходовано 1 из 4 (жёлтый r1 бюджет потратил;
зелёный r2 цикла не образует, #227).
Материал: docs/specs/505-summary-panel-design-parity.md на SHA
8c0962f36f2b93dd0c043806aa2e838d570fcd1c (ветка issue/505-summary-panel-polish,
коммит «docs: address summary panel spec review r1»). Рабочая копия уже стоит
на этом SHA (HEAD detached at origin/issue/505-summary-panel-polish).
1. Скоуп ревью — почему разбор по дельте
Предыдущий раунд: docs/reviews/SPEC-REVIEW-505-r1.md, вердикт жёлтый,
заход r1, High 0 / Medium 2 / Low 1, материал на SHA
8defee4ce1cb0f2794495c03173348c7a6c34e13. SHA в вердикте r1 назван явно (в
самом документе, раздел «Материал раунда») — расследовать не пришлось.
Дельта: git diff 8defee4ce1cb0f2794495c03173348c7a6c34e13..8c0962f36f2b93dd0c043806aa2e838d570fcd1c
затрагивает ровно два файла:
docs/reviews/SPEC-REVIEW-505-r1.md— публикация документа r1 конвейером (не предмет разбора, это чужой артефакт);docs/specs/505-summary-panel-design-parity.md— 46 insertions / 5 deletions, единственный коммит8c0962f3с трейлерамиIssue: #505/User-Visible: no.
Правка сугубо аддитивна и локальна:
- добавлены два новых раздела в начало документа — «Сценарий» и «Что человек увидит до и после» (перед прежним «1. Problem, value and scope»);
- переписан один абзац в конце §8 (список визуальных пар);
- добавлен раздел «Принятые технические предположения» в конец документа (после прежнего раздела 9).
Ни один из существующих разделов 1–9, таблица AC1–AC11, Baseline
(dev@abbca50c), тело issue (updated_at issue = момент последнего
комментария автора, содержимое не менялось со времени r1 — сверено
построчно) не тронуты. Это не ребейз (baseline тот же abbca50c), не смена
контракта поведения, не новая подсистема, объём дельты (46 строк) на порядок
меньше исходного ТЗ (291 строка). Разбор по дельте: полная переоценка нужна
только находкам r1 и участку текста, который они затронули; AC1–AC11 и весь
технический анализ §2–7 наследуются без повторной проверки.
2. Как проверялось
git diff 8defee4c..8c0962f3 -- docs/specs/505-summary-panel-design-parity.md— построчно, для локализации правки и проверки отсутствия побочных правок.- Полное чтение текущего файла
docs/specs/505-summary-panel-design-parity.mdна SHA8c0962f3(не только диффа) — чтобы увидеть новые разделы в контексте, а не изолированно. - Прочитан текст issue #505 и все 5 комментариев (аналитика ×2, пауза,
возобновление, r1-вердикт, отчёт о правках) — подтверждено, что тело issue
и объём scope не менялись после r1, и что комментарий автора (
comment 4) корректно описывает содержание фактической правки. - Проверено соответствие терминологии персон в новом разделе «Сценарий»
канону
docs/SCOPE.md:28-30— «Home admin» / «Household members» / «Guests / kiosk» и их типовые поверхности (desktop / phone / wall tablet kiosk) совпадают дословно по смыслу с «Администратор дома на desktop», «домочадец ... на телефоне», «гость ... в киоске». - Проверено, что новые разделы не содержат терминов реализации (CSS/код/имена функций) — только пользовательское поведение и персоны, как требует PROCESS.md §7.1.
- Проверено, что раздел «Принятые технические предположения» стоит в конце документа (после раздела 9), как требует PROCESS.md §7 («записывается явным блоком в конце ТЗ»), и что все четыре односторонних технических решения, названные в r1-находке M2 (имя CSS-переменной, состав файлов, имена i18n-ключей, механика generation-guard/анимации), в явном виде перечислены.
- Проверено, что расширенный абзац visual evidence в §8 перечисляет все пять контекстов чек-листа issue («Дополнительные критерии приёмки», пункт 4) отдельно: desktop light, desktop dark, bottom portrait, kiosk, mobile View panel — плюс отдельно диалог настроек light/dark desktop и narrow native/real HA.
grep -n '§[0-9]\|Sections'по всему файлу — все существующие перекрёстные ссылки (§2–3,Sections4–8,§2,§7,§6) продолжают указывать на прежние номерованные разделы 1–9; новые разделы намеренно не пронумерованы и не сдвинули нумерацию, поэтому ни одна ссылка не сломана. Это лучше, чем предложенный в r1-находке M1 вариант «со сдвигом нумерации» — автор выбрал более безопасный способ починки, не создав новый класс дефекта (битые ссылки на разделы).- Прогнан
node scripts/process-gate.mjs --range 8defee4c..8c0962f3→ «гейт пройден, предупреждений 0» (офлайн-часть;--issuesне запускался — статус issue уже виден в метках:S4-spec-review, безblocked). - Проверены трейлеры коммита
8c0962f3:Issue: #505,User-Visible: no— корректно, правка чисто документационная. - Проверен CI на точном материале ревью:
gh run view 34316874922→Проверка (CI),headSha == 8c0962f36f2b93dd0c043806aa2e838d570fcd1c,status: completed,conclusion: success. Детализация по джобам (gh api .../commits/8c0962f3.../check-runs): лёгкие джобы «Фронтенд: типы, юниты, мутанты, синхрон бандла», «Предполётные проверки: документация, провенанс, процесс», «Классификация изменённых файлов», «Мутанты по диффу (1–3/3)», «Переиспользование: это дерево уже проверено» — всеsuccess; тяжёлые джобы (смоки, golden, perf, backend pytest, HACS/Hassfest) —skipped, что ожидаемо для чисто документационного диффа класса C. Уточнение к вводным этого раунда: там указано «Зелёного Validate на этом SHA нет — прогон не найден, не завершён либо не success» — это не подтвердилось, как и в r1 с тем же типом утверждения; прогон найден и зелёный именно на материале ревью. Дополнительно вручную дешёвые гейты не гонялись сверхprocess-gate.mjs— диапазон диффа ограниченdocs/**(git diff --stat origin/dev..8c0962f3подтверждает, чтоsrc/**/custom_components/**не тронуты во всей ветке), поэтомуtsc/npm test/npm run build/check-docs.mjsк предмету этого раунда не относятся, а к предмету всей ветки их уже покрыл зафиксированный зелёный CI-прогон на этом SHA.
3. Закрытие раунда r1
| Находка r1 | Чем закрыта | Где это видно |
|---|---|---|
| Medium — отсутствуют разделы «Сценарий» и «Что человек увидит до и после» (PROCESS.md §7.1) | Оба раздела добавлены первыми в документе, до прежнего «1. Problem, value and scope»; названы персоны admin/household member/guest-kiosk по канону SCOPE.md, одна фраза «что увидит» без терминов реализации | docs/specs/505-summary-panel-design-parity.md:9-22 (в текущем файле на 8c0962f3) |
| Medium — отсутствует раздел «Принятые технические предположения» (PROCESS.md §7/§7.1) | Раздел добавлен в конец документа; перечислены все 4 пункта из находки: имя CSS-переменной real-HA диалога помечено как подлежащее проверке, состав файлов §7 назван планом реализации, имена i18n-ключей допущены к переименованию при сохранении семантики, механика lifecycle-анимации (CSS transitions/WAAPI, generation guards) явно оставлена на усмотрение реализации | docs/specs/505-summary-panel-design-parity.md:271-291 |
| Low — неполный список визуальных пар в §8 | Абзац переписан, все пять контекстов чек-листа issue названы отдельно поимённо (desktop light/dark, bottom portrait, kiosk, mobile View panel) плюс отдельно диалог настроек | docs/specs/505-summary-panel-design-parity.md:233-243 |
Все три находки закрыты правкой того же файла без нового технического исследования, как и предполагал вердикт r1 («формат восстановим без нового анализа»). Новых дефектов формата правка не внесла — численность и ссылки разделов 1–9 не пострадали (см. §2 выше).
4. Унаследовано из r1
Принято без повторной проверки в этом раунде, основание — документ
docs/reviews/SPEC-REVIEW-505-r1.md на SHA 8defee4ce1cb0f2794495c03173348c7a6c34e13,
поскольку дельта r1→r2 не затрагивает предмет этих пунктов:
- продуктовая рамка и соответствие
docs/SCOPE.md(исключение #437 для read-only summary overlay), приоритет источников истины owner > контракты House Plan > прототип > демо; - технический анализ причин всех четырёх исходных дефектов, подтверждённый
чтением кода
dev@abbca50c(renderPanel()возвращаетnothingбез exit-анимации, отсутствие exit-keyframes,min-widthна.summary-editor, несвязанный mobile-чекбокс, нерасширенныйSizes on this screen); - корректность механизма wide-диалога (
--hp-dialog-wide-width,hp-dialog.ts:163) как технически реализуемого пути; - согласованность с
docs/USER-GUIDE.ru.md(раздел «Сводная панель»),docs/TOUCH-SUPPORT.md:48-56(44×44 px, гарантированный View-контракт),docs/CONFIG-COMPATIBILITY.md:100-132(namespace version 1 не меняется, local size prefs вне серверного конфига); - целостность референс-архива
docs/design/505-summary-panel/reference/**и совпадение SHA-256 между README задачи, README референса и телом issue; - обновление
docs/specs/README.md(строка для #505 добавлена); - полнота и однозначность таблицы AC1–AC11, включая требование отрицательного свидетеля и mutation-gate для дорогих AC3/AC5;
- отсутствие открытых продуктовых вопросов владельцу (текст ТЗ не выдаёт догадку за факт нигде, кроме явно помеченного «verify actual pinned HA frontend contract»).
Эти пункты дельта r2 не касается: ни один из трёх изменённых участков текста (два новых вводных раздела, абзац visual evidence, финальный блок предположений) не переопределяет и не сужает ни один из перечисленных пунктов.
5. Находки (r2)
Нет. Дельта полностью закрывает обе Medium- и одну Low-находку r1, не привнося нового дефекта содержания или формата.
6. Что проверено и корректно
- Все три находки r1 закрыты по существу (см. таблицу §3), а не переформулированы без изменения сути.
- Терминология персон в новом разделе «Сценарий» — канонические термины
docs/SCOPE.md, не изобретённые. - «Что человек увидит до и после» — одна фраза, без терминов реализации, как требует PROCESS.md §7.1.
- «Принятые технические предположения» размещены в конце документа и явно разрешают ревьюеру их оспорить — соответствует формулировке PROCESS.md §7.
- Правка не переименовала и не сдвинула номера существующих разделов —
все внутренние перекрёстные ссылки (
§2–3,§6,§7,Sections4–8) остались корректны. - Baseline (
dev@abbca50c), таблица AC1–AC11 и весь технический контракт поведения (§2–7, §9) в дельте не менялись — не о чем спорить заново. - Коммит несёт корректные трейлеры (
Issue: #505,User-Visible: no— верно для чисто документационной правки),process-gate.mjsпроходит без предупреждений на диапазоне r1→r2. - CI зелёный именно на материале этого раунда (
8c0962f3, run34316874922,Проверка (CI)), включая релевантные для класса C джобы (фронтенд типы/юниты/мутанты/синхрон бандла, предполётные документация/провенанс/ процесс). - Диапазон всей ветки
dev..8c0962f3подтверждён как класс C: толькоdocs/**, продуктовый код не тронут.
7. Чего не проверял
- Полный повторный разбор разделов 1–9 и таблицы AC1–AC11 — не требуется, дельта их не касается (обоснование в §1 и §4 выше).
- Пиксельное сравнение реализации с прототипом и тяжёлые браузерные гейты
(
golden,smoke_*,performance_smoke,pytest tests_backend) — как и в r1, не относится к этапу ТЗ; продуктовый код по-прежнему не существует и не менялся. - Содержимое архива
макет.zipза пределами зафиксированного SHA-256 — не переисследовалось повторно, наследуется из r1. - Флаг
--issuesуprocess-gate.mjs— статус issue подтверждён напрямую черезgh issue view(меткаS4-spec-review, безblocked).
8. Вердикт
High: 0. Medium: 0. Обе Medium- и одна Low-находка r1 закрыты правкой того же документа, дельта не привнесла нового дефекта. Дельта локальна (один файл документации, 46/5 строк, без ребейза, без смены baseline, без смены контракта поведения) — полный переразбор не требуется и не проводился.
Вердикт: зелёный · заход r2 · блокирующих циклов 1/4 · High: 0 · Medium: 0 → в задаче
Материал раунда
- Ветка:
issue/505-summary-panel-polish - SHA материала:
8c0962f36f2b93dd0c043806aa2e838d570fcd1c - Дерево материала:
2af4e1c1420a56d9914b793d60e8024fd3181f16git log --all --format='%H %T' | grep 2af4e1c1420a - ТЗ
docs/specs/505-summary-panel-design-parity.md, блобfed71b61cb26deae64fef8dc1a364d3401242d48git log --all --find-object=fed71b61cb26deae64fef8dc1a364d3401242d48 -- docs/specs/505-summary-panel-design-parity.md - Предыдущий раунд:
docs/reviews/SPEC-REVIEW-505-r1.md, SHA8defee4ce1cb0f2794495c03173348c7a6c34e13 - Вердикт конвейера:
green· High 0 · Medium 0
Материал раунда
- Ветка:
issue/505-summary-panel-polish, коммит8c0962f36f2b— ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет. - Дерево материала:
2af4e1c1420a56d9914b793d60e8024fd3181f16git log --all --format='%H %T' | grep 2af4e1c1420a - ТЗ
docs/specs/505-summary-panel-design-parity.md, блобfed71b61cb26deae64fef8dc1a364d3401242d48git log --all --find-object=fed71b61cb26deae64fef8dc1a364d3401242d48 -- docs/specs/505-summary-panel-design-parity.md - Вердикт конвейера:
green· High 0