mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-01 20:29:00 +00:00
docs: review document for #543
Проверка (CI) / Классификация изменённых файлов (push) Successful in 21s
Проверка (CI) / Мутанты по диффу (1/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (2/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (3/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (4/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (5/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (6/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Предполётные проверки: документация, провенанс, процесс (push) Failing after 36s
Проверка (CI) / HACS: валидация репозитория (push) Failing after 22s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 58s
Проверка (CI) / Hassfest: манифест интеграции (push) Failing after 16s
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Failing after 45s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Failing after 12m10s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Skipped
Проверка (CI) / Смоки: все шарды зелёные (push) Skipped
Проверка (CI) / Golden-кадры против принятых эталонов (push) Skipped
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Skipped
Проверка (CI) / Классификация изменённых файлов (push) Successful in 21s
Проверка (CI) / Мутанты по диффу (1/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (2/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (3/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (4/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (5/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Мутанты по диффу (6/6): затронутые свидетели краснеют (push) Skipped
Проверка (CI) / Предполётные проверки: документация, провенанс, процесс (push) Failing after 36s
Проверка (CI) / HACS: валидация репозитория (push) Failing after 22s
Проверка (CI) / Переиспользование: это дерево уже проверено (push) Successful in 58s
Проверка (CI) / Hassfest: манифест интеграции (push) Failing after 16s
Проверка (CI) / Бэкенд: pytest в Home Assistant (push) Failing after 45s
Проверка (CI) / Фронтенд: типы, юниты, мутанты, синхрон бандла (push) Failing after 12m10s
Проверка (CI) / Смоки в браузере (шард 1 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 2 из 3) (push) Skipped
Проверка (CI) / Смоки в браузере (шард 3 из 3) (push) Skipped
Проверка (CI) / Смоки: все шарды зелёные (push) Skipped
Проверка (CI) / Golden-кадры против принятых эталонов (push) Skipped
Проверка (CI) / Перф-смок: бюджет времени кадра (push) Skipped
Issue: #543 User-Visible: no
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
# SPEC-REVIEW-543-r2
|
||||
|
||||
Issue: #543 · Этап: spec (PROCESS.md §2.4) · Заход: r2 · блокирующих циклов
|
||||
израсходовано 1 из 4
|
||||
|
||||
Материал: тело issue #543, раздел `## ТЗ`, на момент ревью (метка
|
||||
`S4-spec-review` после комментария автора «Правка ТЗ после SPEC-REVIEW r1»).
|
||||
Предыдущий раунд — `docs/reviews/SPEC-REVIEW-543-r1.md`, вердикт жёлтый,
|
||||
единственная находка Medium в скоупе, материал того раунда: тело issue с
|
||||
sha256 `06cae6bc0c1c834e055a858a18d406231ff7a696f929be70277a82a675f6779a`,
|
||||
дерево `bd3acd278b0c6dd3d0cc572096f8c0d2c7e3b38c`, код проверялся на
|
||||
`6d2facc2e37724a6e6e1a96c5e026aa24b595a07`.
|
||||
|
||||
Продуктовый код между раундами не менялся: этот SHA — коммит «docs: review
|
||||
document for #544» (документация, класс C), рабочая копия сейчас стоит на
|
||||
`4a91d5cbe88d6868947f2d7f73c9830869478b56` — тоже только документационный
|
||||
коммит («docs: review document for #543», публикация r1). Ни одного файла
|
||||
класса A/B между `6d2facc2` и текущим HEAD не добавлено и не изменено;
|
||||
единственное продуктовое изменение в этом диапазоне (`6502f516` fix для
|
||||
#544) уже входило в дерево, которое читал r1. Технические утверждения ТЗ,
|
||||
завязанные на код (К1–К9, ссылки на строки), это не затрагивает — код,
|
||||
который читал r1, идентичен коду сейчас.
|
||||
|
||||
## Дельта раунда
|
||||
|
||||
По собственному комментарию автора («Правка ТЗ после SPEC-REVIEW r1»,
|
||||
2026-09-12T18:52:19Z) правка ограничена тремя точками текста тела issue,
|
||||
все — закрытие единственной находки r1:
|
||||
|
||||
1. формулировка `AC7`;
|
||||
2. строка про `test/config-adoption-ownership.test.mjs` в разделе «Ожидаемые
|
||||
файлы и модули»;
|
||||
3. добавление отдельного пункта «отдельный поведенческий unit coordinator»
|
||||
в тот же список файлов.
|
||||
|
||||
Остальной текст ТЗ (сценарий, что человек увидит, подтверждённая причина,
|
||||
скоуп/не-скоуп, К1–К9, UX, модель данных, i18n, AC1–AC6/AC8/AC9, план
|
||||
автотестов пп.1–6 кроме списка файлов, риски, откат, release-артефакты,
|
||||
принятые технические предположения) не тронут — сверено построчным чтением
|
||||
текущего тела issue против содержания, которое цитирует и пересказывает
|
||||
`SPEC-REVIEW-543-r1.md`, расхождений не найдено. Дельта локальна (§2.10):
|
||||
код не менялся, контракт поведения не менялся, новая подсистема не
|
||||
затронута — объём разбора сокращается до дельты и её последствий.
|
||||
|
||||
## Закрытие раунда r1
|
||||
|
||||
| Находка r1 | Чем закрыта | Где это видно |
|
||||
|---|---|---|
|
||||
| Medium (в скоупе): `AC7` и «Ожидаемые файлы и модули» называли `test/config-adoption-ownership.test.mjs` свидетелем поведенческого async-порядка, хотя это статический regex-ratchet #500, не видящий async вообще | Текст `AC7` и списка файлов теперь прямо исключают этот файл из доказательной базы #543 и явно называют единственным поведенческим свидетелем `test/config-adoption.test.mjs`; для нового coordinator-модуля назван отдельный «поведенческий unit», не смешанный с ratchet-файлом | `AC7`: «Статический ratchet `test/config-adoption-ownership.test.mjs` не является свидетелем async-порядка и в доказательную базу #543 не входит.» · «Ожидаемые файлы и модули»: «…отдельный поведенческий unit coordinator; …» и «`test/config-adoption-ownership.test.mjs` остаётся неизменным статическим ratchet #500 и не доказывает async-порядок #543.» (тело issue #543, текущая редакция) |
|
||||
|
||||
Проверено чтением точной итоговой формулировки, а не заявлением автора о
|
||||
том, что она изменена: обе фразы выше процитированы из текущего тела issue.
|
||||
Двусмысленности, которую нашёл r1 (можно было прочитать как «этот файл —
|
||||
свидетель»), в новой формулировке нет: предложение утверждает обратное явно
|
||||
и с указанием номера задачи.
|
||||
|
||||
## Унаследовано из r1
|
||||
|
||||
Без повторной проверки принято всё, что не затронуто дельтой — со ссылкой на
|
||||
`docs/reviews/SPEC-REVIEW-543-r1.md` и материал того раунда (тело issue
|
||||
sha256 `06cae6bc0c1c834e055a858a18d406231ff7a696f929be70277a82a675f6779a`,
|
||||
код на `6d2facc2e37724a6e6e1a96c5e026aa24b595a07`):
|
||||
|
||||
- соответствие `docs/SCOPE.md` (J1/J6), продуктовая рамка сценария и «что
|
||||
человек увидит до/после» — не изменились текстуально;
|
||||
- построчная сверка технических утверждений с кодом: `_reloadConfigOnly`
|
||||
(`src/houseplan-card.ts:4417,4466-4501`), `adoptAuthoritativeGated`
|
||||
(`src/config-adoption.ts:428-460`), шесть call sites
|
||||
`_adoptAuthoritative`/`adoptAuthoritativeGated`, все `_reloadConfigOnly(true)`
|
||||
call sites, `docs/ARCHITECTURE.md:1375-1393` (#500), прецедент
|
||||
`_liveSyncGeneration`/`_liveSyncConnection`, термин «route leave» — код не
|
||||
менялся, вывод остаётся в силе;
|
||||
- контракт К1–К9 — текст идентичен, содержательно не проверялся повторно;
|
||||
- AC1–AC6, AC8, AC9 — формулировки не изменились, доказательства (`unit`,
|
||||
`smoke`, `lifecycle matrix`, `force/reset`, `mutation`, `gates`) не
|
||||
затронуты дельтой;
|
||||
- план автотестов пп.1–6 (кроме уточнения в списке файлов, разобранного
|
||||
выше) — не изменился;
|
||||
- риски (6 пунктов), откат, release-артефакты, «Принятые технические
|
||||
предположения» (5 пунктов) — не изменились;
|
||||
- обоснование полного трека (нарушенные критерии `small`) — не изменилось;
|
||||
- продуктовых вопросов владельцу нет и не было — согласие с r1.
|
||||
|
||||
## Что перепроверено заново (по дельте)
|
||||
|
||||
- `AC7` целиком — прочитан в текущей редакции, однозначен: единственный
|
||||
поведенческий свидетель — `test/config-adoption.test.mjs`, порядок
|
||||
`compare → asset readiness → continuity → adopt → reload tail → caller
|
||||
hook` и раздельная обработка current/superseded asset failure сформулированы
|
||||
без изменений относительно r1 (только вычеркнута ссылка на ratchet-файл).
|
||||
Новых дефектов формулировки не внесено.
|
||||
- Раздел «Ожидаемые файлы и модули» — новая структура списка не создаёт
|
||||
противоречия с `AC7`, `AC8` (`scripts/mutation-gate.mjs` назван и там, и
|
||||
там) и планом автотестов (`отдельный поведенческий unit coordinator`
|
||||
соответствует плану автотестов п.2 — «добавить unit request-owner/
|
||||
coordinator»). Само по себе имя нового unit-файла не зафиксировано — это
|
||||
укладывается в «Принятые технические предположения», решается на
|
||||
код-ревью, продуктовым вопросом не является.
|
||||
- Проверено, что правка не расширила и не сузила скоуп/не-скоуп и не создала
|
||||
нового технического спора автора и ревьюера, требующего отдельного цикла:
|
||||
правка чисто редакционная, устраняет саму находку без побочных эффектов.
|
||||
|
||||
## Что не проверялось и почему
|
||||
|
||||
- Продуктовый код реализации (`src/config-adoption.ts`, будущий
|
||||
request-owner/coordinator модуль, `demo/smoke_config_reload_race.mjs`,
|
||||
мутант AC8) — не существует на этом этапе, предмет код-ревью.
|
||||
- Гейты `typecheck`/`test`/`build`/`golden`/`invariants` — не прогонялись:
|
||||
на этапе ТЗ продуктового кода к задаче ещё нет, гонять их не по чему;
|
||||
унаследовано из r1, за раунд между r1 и r2 продуктовый код #543 не
|
||||
появился.
|
||||
- Частота гонки на реальном HA — не измерялась, аудит и ТЗ прямо признают
|
||||
это неизмеренным; унаследовано из r1.
|
||||
- Полное повторное построчное чтение кода — не выполнялось: код не менялся
|
||||
между раундами (см. «Материал» выше), только вычитка дельты текста ТЗ.
|
||||
|
||||
## Вердикт
|
||||
|
||||
Зелёный. Единственная находка r1 (Medium, в скоупе) закрыта точной правкой
|
||||
текста `AC7` и списка файлов, проверено по итоговой формулировке, а не по
|
||||
заявлению автора. Новых находок дельта не создала. High: 0, Medium: 0.
|
||||
Готово к переходу в «Готово к разработке» (`S5-ready`).
|
||||
|
||||
---
|
||||
|
||||
<!-- material-anchors: сгенерировано конвейером (#414) -->
|
||||
|
||||
## Материал раунда
|
||||
|
||||
- Ветка: `dev`, коммит `4a91d5cbe88d` — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет.
|
||||
- Дерево материала: `d88d3e161f7336c02a9cdd1bfa679804cf42041d`
|
||||
```
|
||||
git log --all --format='%H %T' | grep d88d3e161f73
|
||||
```
|
||||
- Тело issue: `18a8083126ef98f841e6dd8e670203f8c016ea805af7a9dbefcc54aacb7d7cf1`
|
||||
- Вердикт конвейера: `green` · High 0
|
||||
Reference in New Issue
Block a user