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

168 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
---
<!-- material-anchors: заполняется конвейером (#414) -->
---
<!-- material-anchors: сгенерировано конвейером (#414) -->
## Материал раунда
- Ветка: `issue/628-repository-gc`, коммит `a32744255f10` — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет.
- Дерево материала: `2b98213a6dc9ec3a9cb60908bcb00eb22dfdd0fd`
```
git log --all --format='%H %T' | grep 2b98213a6dc9
```
- Тело issue: `9b54257641bbb6e8f0276842401740d958c3593af319626ccc1c8a88e0e6c671`
- Вердикт конвейера: `green` · High 0