mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
168 lines
13 KiB
Markdown
168 lines
13 KiB
Markdown
# 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
|