Files
houseplan-card/docs/reviews/CODE-REVIEW-665-r2.md
T
2026-09-26 13:14:50 +00:00

11 KiB

CODE-REVIEW-665-r2

Issue: #665 — «2.5D: показатели комнаты под названием «плавают» при зуме». Этап: code-review, заход r2, лёгкий трек small, лимит циклов 2, потрачен 1. Материал: ровно d06cca2c19a3b5a062b79b4073227e5682636c90, рабочая копия уже на нём (git rev-parse HEAD совпадает). Fetch/checkout не выполнялись.

Скоуп

Дельта к материалу r1 (8ffbdf8a28f8, см. «Материал раунда» в docs/reviews/CODE-REVIEW-665-r1.md):

git diff 8ffbdf8a..d06cca2c --stat
 docs/reviews/CODE-REVIEW-665-r1.md | 216 +++++++++++++++++++++++++++++++++++++
 1 file changed, 216 insertions(+)

Единственный новый коммит — d06cca2c (docs: review document for #665, User-Visible: no) — публикация конвейером документа r1. Продуктовый код, тесты, реестр мутаций, docs/ISOMETRIC.md, changelog не менялись ни на строку с момента r1. Автор ответил на жёлтый вердикт r1 комментарием в issue, не коммитом — это соответствует характеру находки: единственный Medium r1 был не дефектом кода, а неточной записью о влиянии диффа на golden-матрицу, и её устранение прямо ограничено записью в issue (сама находка так и формулировала фикс: «Кода это не касается — правка чисто в разделе учёта диффа»).

Работа по-прежнему закрывает J1/J5 (docs/SCOPE.md), скоуп и класс (A+B+C) не изменились — оценка из r1 остаётся в силе, см. «Унаследовано из r1» ниже.

Как проверялось

Раз код не менялся, повторный прогон дешёвых/тяжёлых гейтов не даёт новой информации — «код изменился» (условие §2.10 для обязательного повтора дешёвых гейтов) здесь ложно. Дешёвые гейты уже подтверждены зелёным Validate именно на этом SHA d06cca2c (https://github.com/Matysh/houseplan-card/actions/runs/36243964626) — не перегонял. Тяжёлые гейты (golden:verify, мутант, оба смока, отрицательная проба) были исполнены на r1 против идентичного кода — код с тех пор не менялся, дельта не задевает ни одного AC, поэтому не перегонял; см. «Унаследовано из r1».

Единственное, что реально проверялось в этом раунде — закрытие находки r1: сверил текст нового комментария автора в issue (2026-09-26T13:04:07Z, «Правка по CODE-REVIEW-665-r1 (жёлтый) — учёт golden») построчно со списком восьми сценариев, которые я сам получил в r1 прогоном golden:verify HEAD vs origin/dev в отдельном worktree.

Что проверял Как Результат
Материал ревью — ровно то же дерево, что у r1 + один docs-коммит git diff 8ffbdf8a..d06cca2c --stat, git status --short подтверждено: только docs/reviews/CODE-REVIEW-665-r1.md, рабочая копия чистая
Список из 8 golden-сценариев в новом комментарии автора совпадает с найденным ревьюером в r1 построчное сравнение таблицы в комментарии Matysh (13:04) с таблицей находки в CODE-REVIEW-665-r1.md совпадают все 8 id: isometric-geometry-view-dark/light, isometric-touch-kiosk-dark, isometric-large-warm-remount-dark, isometric-stage3-overlays-light/dark, isometric-stage3-forced-colors-dark, isometric-stage3-no-filter-dark
Эстафета на кандидат беты явно передана чтение комментария да: npm run golden:accept -- --reviewed --from=<Linux-артефакт>, вместе с 12 известными и кадрами #666 — названо прямо, тот, кто примет бету, не гадает
Трейлеры нового коммита git show --stat d06cca2c Issue: #665, User-Visible: no — корректно для docs-only правки, changelog не требуется

Находки

Нет. Единственная находка r1 (Medium в скоупе, учёт golden) закрыта записью в issue — см. таблицу ниже. Новых находок дельта не создаёт: она добавляет только опубликованный документ прошлого раунда, продуктового кода не касается.

Закрытие раунда r1

Находка r1 Чем закрыта Где это видно
Medium (в скоупе) — хендофф автора занижал golden-влияние диффа: заявлено 0 задетых 2.5D-кадров с показателями, реально 8; эстафета на кандидат беты не передана Комментарий автора в issue от 2026-09-26T13:04:07Z «Правка по CODE-REVIEW-665-r1 (жёлтый) — учёт golden»: (1) признаёт ошибку прямо и называет команду проверки (node -e "import('./demo/golden/matrix.mjs')..."), (2) приводит таблицу всех 8 сценариев — построчно совпадает с найденной ревьюером в r1, (3) явно передаёт эстафету: golden:accept -- --reviewed --from=<Linux-артефакт> вместе с 12 известными и кадрами #666 Issue #665, комментарий 2026-09-26T13:04:07Z; исходная находка — docs/reviews/CODE-REVIEW-665-r1.md, раздел «Находки → Medium»
Low, снято без возврата — расположение строки в docs/ISOMETRIC.md Не требовало действия и в r1 (оставлено на усмотрение автора при следующей правке файла); дельта r2 файл не трогает docs/reviews/CODE-REVIEW-665-r1.md, раздел Low

Унаследовано из r1

Всё, кроме учёта golden-влияния, принято без повторной проверки — код с момента r1 не менялся (см. «Скоуп» выше), материал r1 доказан исполнением, а не заявлением:

  • AC1 (отступ имя→показатели в 2.5D = Flat на обоих зумах) — доказан запуском demo/smoke_iso_room_label_metrics.mjs на материале 8ffbdf8a.
  • AC2 (цель касания 44×44 px) — доказан положительно и отрицательно (ручной снятый ::before красит floorIs44/floorOwnsTheTarget — проба ревьюера, не автора).
  • AC3 (мутант iso-room-label-44-box-centres-name) — реально пойман запуском mutation-gate.mjs без --check.
  • C3 (Flat/редакторы/houseplan-space-card/isoRaisedOverlayHalfSize не задеты) — подтверждено чтением диффа (ограничен plan.styles.ts) и прогоном smoke_isometric_contract.
  • Причина бага и приём фикса (перенос пола 44×44 в ::before, копия .oplock::before, z-index локальный, не мировой) — проверено построчно по коду.
  • Трейлеры c93b3a90/8ffbdf8a — Issue:/User-Visible: корректны, yes сопровождён правкой обоих changelog в том же коммите.
  • «Одно число — один источник» — литерал 44px в новом ::before повторяет существующую конвенцию (.oplock::before, .dev), не создаёт второй источник истины.
  • no-new-private-writes — второй коммит 8ffbdf8a существует именно для этого, проверено, что смок больше не пишет card._view.
  • Golden-влияние диффа (сам факт: 8 новых different, все — ожидаемый побочный эффект правильной работы фикса, не регрессия) — доказано двойным прогоном golden:verify (HEAD и origin/dev в отдельном worktree) в r1; в r2 проверялась только точность записи об этом факте, не сам факт.

Документ и SHA источника: docs/reviews/CODE-REVIEW-665-r1.md, материал 8ffbdf8a28f89f956fe6a0e550aec7b1d42efbf5 (база 72d49040).

Чего не проверял

  • Дешёвые гейты (tsc --noEmit, npm test, npm run build, bundle-policy --verify, check-docs) — не перегонял: код не менялся с r1, а на точном SHA этого раунда (d06cca2c) Validate уже зелёный.
  • golden:verify, оба смока, мутант, отрицательная проба на AC2 — не перегонял повторно: делал это в r1 против идентичного кода, дельта r2 их доказательств не задевает.
  • pytest tests_backend, npm run invariants, perf — как и в r1: диф не трогает Python/геометрию модели, перф не в AC.
  • Полную golden-матрицу/golden:accept — не входит в код-ревью; беты кандидата это касается, не этой задачи.

Вердикт

Единственная блокирующая находка r1 закрыта записью в issue, новых находок нет. High: 0, Medium: 0 (в задаче).



Материал раунда

  • Ветка: issue/665-iso-label-metrics, коммит d06cca2c19a3 — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет.
  • Дерево материала: 8cdf9bae3bd399886d6fbd8d6f3d255e21827107
    git log --all --format='%H %T' | grep 8cdf9bae3bd3
    
  • Тело issue: 8da493f662bb94963a92e6ca40c224f16235947efbd137e809e313833e01cc97
  • Вердикт конвейера: green · High 0