mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
@@ -0,0 +1,151 @@
|
||||
# Код-ревью #593 — «Заменить все иконки библиотеки и расширить каталог до 60 плановых символов»
|
||||
|
||||
Заход: **r2** · блокирующих циклов израсходовано **1/4** (после этого вердикта — не увеличивается: зелёный)
|
||||
Материал: `fc4d55c7cdb36d35889f85b55f3a8e42087575ac` (рабочая копия — HEAD, detached), 4 новых
|
||||
коммита после материала r1 (`7df2740f1ccc`).
|
||||
|
||||
## 1. Скоуп ревью
|
||||
|
||||
Это второй заход. По PROCESS.md §2.9/§4 объём разбора — по дельте, а не заново: r1
|
||||
(`docs/reviews/CODE-REVIEW-593-r1.md`) уже провёл полное ревью 245 файлов на
|
||||
`7df2740f` и признал 11 AC доказанными, найдя две находки Medium в скоупе (High — 0).
|
||||
Раунд закрыт жёлтым, вердикт вернул задачу автору без нового issue.
|
||||
|
||||
Дельта r1→r2:
|
||||
|
||||
```
|
||||
git diff --stat 7df2740f..fc4d55c7
|
||||
```
|
||||
|
||||
4 коммита, 49 файлов, из них по существу — 2 текстовых файла (`docs/ARCHITECTURE.md`,
|
||||
`src/furniture-art-runtime.ts`, только заголовочный комментарий), 4 принятых golden-
|
||||
эталона, пересборка `dist/**`/`custom_components/.../frontend/**` (класс D, следствие
|
||||
правки комментария) и `docs/images/screenshots.json` (отпечаток скриншотов). Ни одна
|
||||
строка исполняемой логики не менялась — весь диф `src/furniture-art-runtime.ts` это
|
||||
JSDoc-комментарий (проверено `git diff` построчно, см. §3).
|
||||
|
||||
Дельта локальна: не ребейз, не новая подсистема, не смена контракта поведения —
|
||||
полный разбор не требуется, разбираю только то, до чего дельта дотягивается.
|
||||
|
||||
## 2. Как проверялось
|
||||
|
||||
Дешёвые гейты уже зелёные на этом самом SHA: Validate run
|
||||
[35442063854](https://github.com/Matysh/houseplan-card/actions/runs/35442063854),
|
||||
проверил `head_sha` через `gh api` — совпадает с `fc4d55c7cdb36d35889f85b55f3a8e42087575ac`,
|
||||
`conclusion: success`. Поэтому `npx tsc --noEmit`, `npm test` заново не гонял.
|
||||
|
||||
Дополнительно (дёшево, и потому что «Golden-кадры» и «Смоки» в этом конкретном
|
||||
прогоне Validate вышли `skipped` — сработал шаг «Переиспользование: это дерево уже
|
||||
проверено», результат унаследован от прогона на предыдущем коммите дельты, а не
|
||||
получен заново на `fc4d55c7`; я перепроверил сам, а не доверился ярлыку):
|
||||
|
||||
| команда | результат |
|
||||
|---|---|
|
||||
| `npm run build && npm run bundle:sync` | бандл собран заново; `diff -rq dist custom_components/houseplan/frontend` и `diff -rq dist demo/srv/assets` — совпадение (расхождение только по статичным SVG/`icons.js` демо-харнесса, не части бандла) |
|
||||
| `npm run furniture:check` | `Furniture pack OK: 60 plan symbols, 33 menu icons (generated files current)` |
|
||||
| `node scripts/check-docs.mjs --external --screenshots=strict` | `Documentation checks passed (7 files, 12 external links)` |
|
||||
| `node scripts/smoke-select.mjs --base 7df2740f --head fc4d55c7` | «Изменено файлов src/\*\*: 1 · символов на изменённых строках: 0» → НЕОПРЕДЕЛЁННОСТЬ; решение см. §5 |
|
||||
| `npm run golden:verify` (полная матрица, пересобранный бандль этой вершины) | 173/173 сцен `passed`, **0** `different`, **0** `missing-baseline` |
|
||||
|
||||
Ручной проверкой кода (без исполнения): `git diff 7df2740f..fc4d55c7` построчно по
|
||||
всем нетривиальным файлам (`docs/ARCHITECTURE.md`, `src/furniture-art-runtime.ts`,
|
||||
`docs/images/screenshots.json`, тело issue §8/§9), провенанс коммитов (`Issue:`,
|
||||
`User-Visible:`, `Baseline-Reviewed:`/`Release:` на коммите с baselines), состав
|
||||
`scripts/mutation-registry.mjs` для `furniture-art-runtime.ts` (патчи адресуются
|
||||
`find/replace` по содержимому, а не по номеру строки — комментарий их не задевает).
|
||||
|
||||
## 3. Закрытие раунда r1
|
||||
|
||||
| находка r1 | чем закрыта | где это видно |
|
||||
|---|---|---|
|
||||
| **Medium 1** — `docs/ARCHITECTURE.md:249` называл «44 SVG drawings» и союз с примитивами, хотя ТЗ §9 явно требовало правки при таком условии | Коммит `ebc577d2`: абзац переписан — «the 60 SVG drawings», плюс новое предложение «Since #593 the library is designer artwork only — the twelve primitive symbols drawn from code are gone, so every piece waits for the chunk instead of twelve of them rendering regardless» | `git diff 7df2740f..fc4d55c7 -- docs/ARCHITECTURE.md`: было `the 44 SVG drawings live in…`, стало `the 60 SVG drawings live in… Since #593 the library is designer artwork only…`. То же условие закрыто и в коде: `src/furniture-art-runtime.ts` заголовок (коммит `0565c7ad`) — «The 60 designer symbols carry ~17 KB gzip… every piece now waits for this chunk instead of twelve of them rendering regardless. The `fallback` paragraph below is therefore the behaviour of the whole library, not of 48 pieces out of 60» — то же место, которое я называл источником путаницы в r1, теперь прямо снимает старое обещание. `grep -n "44" docs/ARCHITECTURE.md src/furniture-art-runtime.ts` — 0 совпадений |
|
||||
| **Medium 2** — golden-сцена `tray-narrow-palette-en` расходится (diffRatio 0,0022 на каноническом Chromium), но не объявлена в списке §8 ТЗ; команда `golden:accept` отказала бы приёмке необъявленной `different`-сцены | Тело issue обновлено (ред. 5, §8): таблица явно добавляет строку «`tray-narrow-palette-en` — different — **добавлена по ревью r1 M2**», рядом с уже объявленными `furniture-categories-light`, `furniture-placement-preview-light` и новой `furniture-new-symbols-light`. Эталоны фактически приняты коммитом `65e0c85d` со ссылкой на полный линуксовый прогон [35441152733](https://github.com/Matysh/houseplan-card/actions/runs/35441152733) (трейлеры `Baseline-Reviewed:`/`Release:` присутствуют) | Читал тело issue напрямую (`gh issue view 593 --json body`) — таблица §8 содержит все 4 сцены. Сам прогнал `npm run golden:verify` на пересобранном бандле `fc4d55c7` — **173/173 `passed`, 0 `different`, 0 `missing-baseline`**: `tray-narrow-palette-en` и `furniture-new-symbols-light` (была `missing-baseline` в r1) теперь совпадают с принятым эталоном. Находка закрыта не только текстом, но и исполнением |
|
||||
|
||||
Оба Medium из r1 закрыты предметно, не декларативно: у M1 я прочитал текст обоих
|
||||
файлов (docs и код) после правки, у M2 — перегнал сам `golden:verify` и получил ноль
|
||||
расхождений, а не поверил хендоффу автора.
|
||||
|
||||
## 4. Унаследовано из r1 (без повторной проверки)
|
||||
|
||||
Дельта не касается перечисленного ниже — принимаю выводы `CODE-REVIEW-593-r1.md` на
|
||||
SHA `7df2740f1ccc3bf14caeca1ae824eed853dda50f` без повторного исполнения:
|
||||
|
||||
- **AC1–AC6, AC9, AC10** — пакет 0.4.0 (33/60, ID-совместимость, mapping категорий,
|
||||
сохранённые размеры, inert-generator, UX палитры, бюджеты-гейты, провенанс/лицензия).
|
||||
Ни один из файлов, участвующих в доказательстве (`pack.json`,
|
||||
`scripts/generate-furniture-assets.mjs`, `src/furniture.ts`,
|
||||
`scripts/bundle-budget.mjs`, `assets/furniture/houseplan-0.4.0/README.md`) не входит
|
||||
в дельту r1→r2 (`git diff --stat 7df2740f..fc4d55c7` их не перечисляет).
|
||||
- **AC8** (lazy split, отказ чанка для всех 60) — логика `furniture-art-runtime.ts`
|
||||
не менялась, только комментарий; смок `smoke_furniture_lazy_art.mjs` перепроверять
|
||||
незачем, поведение то же самое, что r1 уже подтвердил исполнением.
|
||||
- **AC11** (доказательства/команды) — методология хендоффа не изменилась.
|
||||
- Ловушка союза `LEGACY_FURNITURE ∪ GENERATED_FURNITURE_CATALOG` (§5 ТЗ) — код,
|
||||
закрывающий её, не в дельте.
|
||||
- i18n (7 ключей × 4 локали) — не в дельте.
|
||||
- Разбор мутаций (5 новых + 1 исправленный) — `scripts/mutation-registry.mjs` не в
|
||||
дельте.
|
||||
- Вывод «diff не касается geometry/invariants/Python backend» — состав дельты (см.
|
||||
`git diff --stat`) подтверждает то же самое и в r2: ни одного файла
|
||||
`custom_components/houseplan/**/*.py`, ни изменений в моделях комнат/толщины.
|
||||
|
||||
## 5. Находки
|
||||
|
||||
Не найдено. High — 0, Medium — 0.
|
||||
|
||||
Обе находки r1 закрыты предметно (см. §3). Новых дефектов в дельте не нашёл: обе
|
||||
правки — точечные текстовые изменения ровно там, где условие ТЗ §9 их требовало, без
|
||||
побочных эффектов на код или контракт.
|
||||
|
||||
## 6. Чего не проверял и почему
|
||||
|
||||
- **`npx tsc --noEmit`, `npm test` «с нуля»** — не гонял отдельно: Validate зелёный
|
||||
именно на материале `fc4d55c7` (подтверждено `gh api`, см. §2). `npm run build` я
|
||||
всё же выполнил дважды — не ради этого гейта, а чтобы получить свежий бандл для
|
||||
`golden:verify`/сверки трёх копий; неявно typecheck подтверждён тоже (сборка чистая).
|
||||
- **`node demo/smoke_furniture*.mjs`, `smoke_decor.mjs` повторно** — не гонял: диф
|
||||
дельты не содержит ни строки исполняемой логики (`smoke-select.mjs` сам это
|
||||
показывает — 0 символов на изменённых строках), а r1 уже прогнал все релевантные
|
||||
смоки на той же логике на `7df2740f`. Инструмент вернул «НЕОПРЕДЕЛЁННОСТЬ», а не
|
||||
«прямое совпадение» или «связь» — я трактую это как отсутствие связи, потому что
|
||||
единственная изменённая строка кода — комментарий, не код.
|
||||
- **`python -m pytest tests_backend`** — diff дельты не касается
|
||||
`custom_components/houseplan/**/*.py` (`git diff --stat` подтверждает).
|
||||
- **`npm run invariants -- --config …`** — diff дельты не касается геометрии/ссылок;
|
||||
унаследовано из r1, дельта это не меняет.
|
||||
- **`node scripts/mutation-gate.mjs` полный прогон** — не гонял: диффовый
|
||||
mutation-gate — часть Validate, зелёного на этой вершине; сами мутанты,
|
||||
адресующие `furniture-art-runtime.ts`, патчат по `find/replace` строки кода, а не
|
||||
по номеру строки — комментарий их не сдвигает и не ломает (проверил чтением
|
||||
`scripts/mutation-registry.mjs:8755-8820`).
|
||||
- **`node scripts/process-gate.mjs --issues`** — не в компетенции код-ревью содержания.
|
||||
|
||||
## 7. Вердикт
|
||||
|
||||
Обе Medium-находки r1 закрыты предметно: `docs/ARCHITECTURE.md` и заголовок
|
||||
`src/furniture-art-runtime.ts` больше не называют число 44 и не намекают на союз с
|
||||
примитивами, а перечень golden-сцен §8 ТЗ дополнен `tray-narrow-palette-en`, эталон
|
||||
для неё и для `furniture-new-symbols-light` принят с полного линуксового прогона и
|
||||
подтверждён трейлерами `Release:`/`Baseline-Reviewed:`. Сам перегнал `golden:verify`
|
||||
на пересобранном бандле этой вершины — 173/173 сцен `passed`, необъявленных
|
||||
расхождений нет. Дельта не тронула ни одной строки исполняемого кода (комментарий +
|
||||
документация + принятые эталоны), поэтому весь массив AC1–AC11, подтверждённый r1,
|
||||
наследуется без риска регрессии. Новых находок нет.
|
||||
|
||||
**Вердикт: зелёный · заход r2 · блокирующих циклов 1/4 · High: 0 · Medium: 0**
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
<!-- material-anchors: сгенерировано конвейером (#414) -->
|
||||
|
||||
## Материал раунда
|
||||
|
||||
- Ветка: `issue/593-furniture-pack-0.4.0`, коммит `fc4d55c7cdb3` — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет.
|
||||
- Дерево материала: `3406b4590ff3a115016d03a9f6f5e5ce44d2945d`
|
||||
```
|
||||
git log --all --format='%H %T' | grep 3406b4590ff3
|
||||
```
|
||||
- Тело issue: `f0feb60aec3d2ab0c475ea3b6ca6cb54cff91300c80121b963b7deb3528d1bdb`
|
||||
- Вердикт конвейера: `green` · High 0
|
||||
Reference in New Issue
Block a user