From e095c710f95a2313dbd4502e451c5b5e137e3d2e Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Fri, 25 Sep 2026 10:21:04 +0000 Subject: [PATCH] docs: review document for #628 Issue: #628 User-Visible: no --- docs/reviews/CODE-REVIEW-628-r2.md | 167 +++++++++++++++++++++++++++++ docs/reviews/INDEX.md | 3 +- 2 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 docs/reviews/CODE-REVIEW-628-r2.md diff --git a/docs/reviews/CODE-REVIEW-628-r2.md b/docs/reviews/CODE-REVIEW-628-r2.md new file mode 100644 index 00000000..04ad8af2 --- /dev/null +++ b/docs/reviews/CODE-REVIEW-628-r2.md @@ -0,0 +1,167 @@ +# 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 diff --git a/docs/reviews/INDEX.md b/docs/reviews/INDEX.md index 9e2191e8..7b00cc6d 100644 --- a/docs/reviews/INDEX.md +++ b/docs/reviews/INDEX.md @@ -1,6 +1,6 @@ # Индекс ревью -Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 1050, issue: 370. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`. +Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 1051, issue: 370. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`. | Issue | Документ | Этап · раунд | Вердикт | H | M | Находки | Файлы | |---|---|---|---|---:|---:|---|---| @@ -42,6 +42,7 @@ | #629 | [CODE-REVIEW-629-r1.md](CODE-REVIEW-629-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — | | #629 | [CODE-REVIEW-629-r2.md](CODE-REVIEW-629-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — | | #628 | [CODE-REVIEW-628-r1.md](CODE-REVIEW-628-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | Новый раздел разрывает существующую секцию «Local Windows workstation» и меняет владель… | `docs/DEVELOPMENT.md` | +| #628 | [CODE-REVIEW-628-r2.md](CODE-REVIEW-628-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — | | #627 | [SPEC-REVIEW-627-r1.md](SPEC-REVIEW-627-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | избыточное (не противоречивое) условие в AC2; влияние на touch не названо явным пунктом | `docs/TOUCH-SUPPORT.md` | | #627 | [CODE-REVIEW-627-r1.md](CODE-REVIEW-627-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | demo/smoke_danger_confirmation.mjs не переведён на ожидание составного гейта; диалог оп… | `demo/smoke_danger_confirmation.mjs` `src/houseplan-card.ts` `de.ts` `smoke_danger_confirm_branches.mjs` | | #627 | [CODE-REVIEW-627-r2.md](CODE-REVIEW-627-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |