Files
houseplan-card/docs/reviews/CODE-REVIEW-628-r2.md
T
2026-09-25 10:21:04 +00:00

13 KiB

CODE-REVIEW-628-r2

Issue: #628 · Материал раунда: a32744255f10b6d5dfa590ab24cb94b4e7d020de (HEAD, рабочая копия на нём) · диапазон origin/dev..HEAD (4 коммита), дифф origin/dev...HEAD.

Скоуп

Инфраструктурная задача без ТЗ (трек «infrastructure-only», AGENTS.md): разовый git gc --prune=now клона владельца на Windows-машине, замер до/после, фиксация решения в docs/DEVELOPMENT.md. Скоуп и AC не менялись с r1 (см. docs/reviews/CODE-REVIEW-628-r1.md).

Диапазон origin/dev..HEAD — четыре коммита:

774b7c7e docs: record repository GC baseline
f86bc34d docs: review document for #628                 (пайплайн, r1)
054a7139 docs: preserve workstation section hierarchy    (правка автора по r1)
a3274425 docs(reviews): индекс после сдвига каталога (#628)  (пайплайн)

774b7c7e содержит тот же текст, что рецензировался в r1 под именем 66b2b576 — этот SHA осиротел ребейзом, что документ r1 сам предсказал («ребейз его осиротит, и это нормально»); материал ищется по дереву/блобу (REVIEWER.md, «Повторный раунд»), и 774b7c7e — тот же diff +27 строк по docs/DEVELOPMENT.md, что и 66b2b576 в r1 (проверено построчным git diff — идентичен процитированному в r1 тексту). f86bc34d и a3274425 — служебные коммиты конвейера (публикация документа r1, пересчёт индекса); их дифф не относится к продукту задачи. Единственный содержательный коммит автора в этом раунде — 054a7139.

Трейлеры на 054a7139 и a3274425: Issue: #628, User-Visible: no — верно, оба коммита не меняют видимое пользователю поведение (внутренняя docs/DEVELOPMENT.md и служебный docs/reviews/INDEX.md); правка CHANGELOG не требуется и не сделана. Дифф не касается src/**, custom_components/**/*.py, манифестов — задача остаётся вне класса A.

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

Находка r1 Чем закрыта Где это видно
Medium: новый раздел ## Local repository maintenance (#628) разрывал секцию ## Local Windows workstation и её подсекцию ### ⚠️ File-sync pitfalls (critical), меняя владельца подсекции по дереву заголовков Коммит 054a7139 «docs: preserve workstation section hierarchy» переносит блок ## Local repository maintenance (#628) после ### ⚠️ File-sync pitfalls (critical) и перед ## Tests, оставляя File-sync pitfalls подсекцией Local Windows workstation git diff 774b7c7e 054a7139 -- docs/DEVELOPMENT.md — чистое перемещение блока (12 строк вверх/вниз, содержание не тронуто); grep -n '^#' docs/DEVELOPMENT.md на HEAD: 93 ## Local Windows workstation → 168 ### ⚠️ File-sync pitfalls (critical) → 177 ## Local repository maintenance (#628) → 204 ## Tests — иерархия и порядок ровно те, что требовала находка

Унаследовано из r1 (не перепроверялось заново)

  • Арифметика четырёх чисел раздела ## Local repository maintenance (#628) (1084.39 → 467.63 MiB, разница 616.76, порог 487.63) — перепроверена вручную в r1, текст блока в этом раунде не менялся (подтверждено диффом 054a7139: перемещение без правки содержимого) — доказательство r1 остаётся в силе.
  • AC1 (решение владельца зафиксировано текстом, совпадающим с выбранным «вариант 1» и умолчаниями-отказами по LFS/dist/**/истории) — та же логика и тот же неизменный текст, разобрано в r1.
  • Единственность источника чисел (size-pack/count-objects/git gc встречаются в docs/** только в этом разделе) — проверено в r1 по неизменному тексту; дополнительно перепроверено в этом раунде (см. ниже) на предмет того, что перемещение блока не создало второго вхождения.
  • Трейлеры коммита 774b7c7e (Issue: #628, User-Visible: no) — те же, что были на предыдущем SHA этого коммита, разобраны в r1.
  • Дешёвые гейты (typecheck/test/build) не нужны диффу без кода — установлено в r1 и остаётся верным: 054a7139 и a3274425 тоже не трогают код.

Как проверялось в этом раунде

  • Прочитаны новые комментарии issue #628 с r1: ответ владельца — не требовался (Medium в скоупе фиксится автором без эскалации); отчёт автора «Исправлен Medium из r1: File-sync pitfalls снова является подсекцией Local Windows workstation… Новый SHA: 78cdc4e5» — этот локальный SHA не встречается в текущей истории, что ожидаемо: пуш прошёл через ребейз пайплайна и лёг как 054a7139 (то же правило «SHA не резолвится — не находка», примерено уже ко всей цепочке этого раунда).
  • git log --oneline origin/dev..HEAD и git diff origin/dev...HEAD --stat — подтверждён полный список изменённых файлов: docs/DEVELOPMENT.md (+27/-0 относительно dev), docs/reviews/CODE-REVIEW-628-r1.md (новый, публикация r1), docs/reviews/INDEX.md (+2/-1, пересчёт индекса).
  • git diff origin/dev...HEAD -- docs/DEVELOPMENT.md прочитан целиком: единственный блок изменений — вставка раздела ## Local repository maintenance (#628) в 27 строк ровно между ### File-sync pitfalls и ## Tests; никакого разрыва существующих секций, содержание раздела не изменилось.
  • git diff 774b7c7e 054a7139 -- docs/DEVELOPMENT.md — прочитан отдельно, чтобы убедиться, что правка автора — чистое перемещение блока (12 строк вверх, 9 строк вниз в терминах unified diff), а не переписывание текста; подтверждено: строки внутри обоих блоков побайтово совпадают до и после.
  • grep -n '^#' docs/DEVELOPMENT.md на HEAD — построено полное дерево заголовков файла, порядок секций в диапазоне строк 93–236 прочитан целиком (Read offset 93, limit 115) и сверен со смыслом: Local Windows workstation → её подсекция File-sync pitfalls → новая Local repository maintenance (#628) → Tests. Логическая принадлежность подсекции восстановлена.
  • grep -rn "size-pack|count-objects|git gc" docs/ — повторно (после перемещения блока) единственное вхождение всё ещё в docs/DEVELOPMENT.md, второго источника с конфликтующим числом не появилось.
  • git diff origin/dev...HEAD --check — 0 находок (нет висячих пробелов/конфликт-маркеров).
  • node scripts/check-docs.mjs --screenshots=warn — прогнал сам: Documentation checks passed (7 files, 12 external links), то же неотносящееся к диффу предупреждение про устаревший screenshot fingerprint, что и в r1 и в отчёте автора.
  • Проверены трейлеры 054a7139 и a3274425 (git show -s --format) — Issue: #628, User-Visible: no на обоих.
  • Green Validate на материале раунда (a3274425) подтверждён владельцем промпта: https://github.com/Matysh/houseplan-card/actions/runs/36122795014 — покрывает typecheck/test/build+сверку бандла, их повторно не гонял.

Находки

Нет. Единственная Medium-находка r1 закрыта чистым перемещением блока без побочных изменений; новых находок при разборе дельты не появилось.

Что проверено и корректно

  • AC1 и AC2 — без изменений с r1, остаются доказанными (см. «Унаследовано из r1»).
  • Structural fix Medium-находки r1 — подтверждён построением дерева заголовков и побайтовым сравнением содержимого блоков до/после перемещения.
  • Трейлеры всех содержательных коммитов раунда корректны.
  • Дифф раунда не расширяет скоуп: единственный контентный файл — docs/DEVELOPMENT.md, правка ограничена перестановкой ранее рецензированного блока.
  • Единственность источника чисел сохранена после перемещения.

Чего не проверял и почему

  • npx tsc --noEmit, npm test, npm run build — не перегонял: дифф раунда не содержит кода (только docs/**), и зелёный Validate на точном SHA материала (a3274425, run 36122795014) уже покрывает эти гейты.
  • Смоки, golden:verify, pytest tests_backend, инварианты модели, performance-профили — не прогонял и не применимы: дифф не в src/**, demo/**, Python или геометрии, ни один не назван в AC1/AC2. smoke-select.mjs не запускал по той же причине.
  • Сам замер AC2 (2026-10-25 или позже) — вне предмета этого раунда, как и в r1: документ готовит критерий, будущий замер — отдельное действие.
  • Первичный факт измерений владельца (git gc на его Windows-машине) — не перепроверял повторно: числа не менялись с r1, где уже была пересчитана их внутренняя арифметика; повторный пересчёт дельта не требует, так как текст блока не редактировался, только перемещён.

Вердикт

Зелёный: единственная Medium-находка r1 закрыта точечным перемещением блока без изменения содержания и без побочных эффектов; новых находок нет. High: 0, Medium: 0.



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

  • Ветка: issue/628-repository-gc, коммит a32744255f10 — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет.
  • Дерево материала: 2b98213a6dc9ec3a9cb60908bcb00eb22dfdd0fd
    git log --all --format='%H %T' | grep 2b98213a6dc9
    
  • Тело issue: 9b54257641bbb6e8f0276842401740d958c3593af319626ccc1c8a88e0e6c671
  • Вердикт конвейера: green · High 0