mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
176 lines
37 KiB
Markdown
176 lines
37 KiB
Markdown
# Индекс ревью
|
||
|
||
Генерируется `node scripts/reviews-index.mjs` (#635) — не редактировать руками. Документов: 169, issue: 80. Вердикт: 🟢 зелёный · 🟡 жёлтый · 🔴 красный · ⚪ не распознан (свободная форма старых документов). H/M — число High/Medium по строке вердикта или заголовкам находок. Файлы — пути, названные в находках; ищите по имени файла: `grep form-kit INDEX.md`.
|
||
|
||
| Issue | Документ | Этап · раунд | Вердикт | H | M | Находки | Файлы |
|
||
|---|---|---|---|---:|---:|---|---|
|
||
| #691 | [SPEC-REVIEW-691-r1.md](SPEC-REVIEW-691-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | направление edge-swipe не квантифицировано и не отмечено как допущение | `src/houseplan-card.ts` |
|
||
| #689 | [SPEC-REVIEW-689-r1.md](SPEC-REVIEW-689-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #688 | [SPEC-REVIEW-688-r1.md](SPEC-REVIEW-688-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #688 | [CODE-REVIEW-688-r1.md](CODE-REVIEW-688-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | AC6 не покрывает спиральную лестницу и второй масштаб печати на уровне PDF-сцены | `test/pdf-scene.test.mjs` `test/stairs.test.mjs` `src/pdf/pdf-scene.ts` |
|
||
| #687 | [SPEC-REVIEW-687-r1.md](SPEC-REVIEW-687-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #687 | [CODE-REVIEW-687-r1.md](CODE-REVIEW-687-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #686 | [CODE-REVIEW-686-r1.md](CODE-REVIEW-686-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #685 | [SPEC-REVIEW-685-r1.md](SPEC-REVIEW-685-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #685 | [CODE-REVIEW-685-r1.md](CODE-REVIEW-685-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | scripts/mutation-registry.mjs: мутант hatch-stroke-not-scaled раньше целился в формулу … | `scripts/mutation-registry.mjs` `smoke_wall_hatch_density.mjs` |
|
||
| #684 | [CODE-REVIEW-684-r1.md](CODE-REVIEW-684-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #683 | [SPEC-REVIEW-683-r1.md](SPEC-REVIEW-683-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #683 | [CODE-REVIEW-683-r1.md](CODE-REVIEW-683-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | AC13 не показывает «пользовательские цвета» в golden | `demo/golden/matrix.mjs` `demo/golden/harness.mjs` `demo/smoke_stairs.mjs` `plan.styles.ts` |
|
||
| #683 | [CODE-REVIEW-683-r2.md](CODE-REVIEW-683-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #682 | [CODE-REVIEW-682-r1.md](CODE-REVIEW-682-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | систематически битые относительные ссылки в перенесённых документах; два архивных ТЗ без документированной причины остаться | `docs/reviews/X.md` `legacy/reviews/v1.68.0/SPEC-REVIEW-223-r1.md` `legacy/reviews/v1.77.0/SPEC-REVIEW-593-r3.md` `legacy/specs/262-readd-child-entity-after-device-delete.md` `legacy/reviews/v1.68.0/SPEC-REVIEW-262-r1.md` `docs/reviews/CODE-REVIEW-635-r1.md` `LIGHT.md` `scripts/support-relay/README.md` |
|
||
| #682 | [CODE-REVIEW-682-r2.md](CODE-REVIEW-682-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #681 | [CODE-REVIEW-681-r1.md](CODE-REVIEW-681-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #680 | [CODE-REVIEW-680-r1.md](CODE-REVIEW-680-r1.md) | code · r1 | 🟢 зелёный | 0 | 1 | вне скоупа (заведён отдельный issue) | `docs/UX-MODES.md` `docs/TOUCH-SUPPORT.md` `docs/WALL-THICKNESS.md` `UX-MODES.md` `TOUCH-SUPPORT.md` `src/houseplan-card.ts` `src/houseplan-editor-runtime.ts` `src/writer-fixed-point.ts` |
|
||
| #679 | [CODE-REVIEW-679-r1.md](CODE-REVIEW-679-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #678 | [CODE-REVIEW-678-r1.md](CODE-REVIEW-678-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #677 | [CODE-REVIEW-677-r1.md](CODE-REVIEW-677-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | раздел «Environment (cowork sessions)» снят сверх заявленного объёма ТЗ | `docs/DEVELOPMENT.md` `STATUS.md` `DEVELOPMENT.md` `PROCESS.md` |
|
||
| #676 | [SPEC-REVIEW-676-r1.md](SPEC-REVIEW-676-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 2 | AC8 не называет проверку двух из трёх ветвей подавления подсказки; риск «рамка перехватывает события под другим инструментом» не привязан ни к одному AC; не задан tie-break для равного протяжки по обеим осям (снимаю сам) | `src/stairs-editor-model.ts` `stairs-view.ts` `demo/smoke_stairs.mjs` `src/furniture.ts` |
|
||
| #676 | [SPEC-REVIEW-676-r2.md](SPEC-REVIEW-676-r2.md) | spec · r2 | 🟡 жёлтый | 0 | 1 | AC8/К8 перечисляют четыре ветви stairTargetState, а не пять; состояние self выпадает из… | `src/stairs-editor-model.ts` `docs/STAIRS.md` `src/stairs.ts` `stairs-view.ts` |
|
||
| #676 | [SPEC-REVIEW-676-r3.md](SPEC-REVIEW-676-r3.md) | spec · r3 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #676 | [CODE-REVIEW-676-r1.md](CODE-REVIEW-676-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #675 | [CODE-REVIEW-675-r1.md](CODE-REVIEW-675-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #673 | [CODE-REVIEW-673-r1.md](CODE-REVIEW-673-r1.md) | code · r1 | 🟡 жёлтый | 0 | 0 | docs/images/screenshots.json: закоммиченный sourceFingerprint не совпадает с тем, что р…; Комментарий автора в issue #673 называет SHA реализации 557d4e38e26b647437f2c931454737f… | `docs/images/screenshots.json` `demo/golden/matrix.mjs` `scripts/source-fingerprint.mjs` `accept.mjs` `policy.mjs` `AGENTS.md` `baselines-index.json` |
|
||
| #673 | [CODE-REVIEW-673-r2.md](CODE-REVIEW-673-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #672 | [CODE-REVIEW-672-r1.md](CODE-REVIEW-672-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #671 | [CODE-REVIEW-671-r1.md](CODE-REVIEW-671-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #670 | [CODE-REVIEW-670-r1.md](CODE-REVIEW-670-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #669 | [SPEC-REVIEW-669-r1.md](SPEC-REVIEW-669-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | AC3 не гарантирует заявленную цель issue; фактическая неточность в «Проблема» (не блокирует) | — |
|
||
| #669 | [SPEC-REVIEW-669-r2.md](SPEC-REVIEW-669-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #669 | [CODE-REVIEW-669-r1.md](CODE-REVIEW-669-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #668 | [SPEC-REVIEW-668-r1.md](SPEC-REVIEW-668-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | AC4 смешивает две проверки под одним недоопределённым методом доказательства; пересечение с существующим гейтом check-docs.mjs | `check-docs.mjs` `scripts/check-docs.mjs` |
|
||
| #668 | [SPEC-REVIEW-668-r2.md](SPEC-REVIEW-668-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #668 | [CODE-REVIEW-668-r1.md](CODE-REVIEW-668-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #667 | [CODE-REVIEW-667-r1.md](CODE-REVIEW-667-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #666 | [CODE-REVIEW-666-r1.md](CODE-REVIEW-666-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #665 | [SPEC-REVIEW-665-r1.md](SPEC-REVIEW-665-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | заявленная правка docs/ISOMETRIC.md | `docs/ISOMETRIC.md` `docs/adr/160-isometric-stage3-overlays.md` `check-docs.mjs` `ISOMETRIC.md` |
|
||
| #665 | [CODE-REVIEW-665-r1.md](CODE-REVIEW-665-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | golden-влияние диффа занижено в отчёте автора вдвое-без-остатка: 0 заявлено, 8 подтверж…; , снято без возврата — расположение строки в docs/ISOMETRIC.md | `golden-report.json` `demo/golden/matrix.mjs` `demo/golden/harness.mjs` `AGENTS.md` `docs/ISOMETRIC.md` `src/iso-tiles.ts` `src/styles/iso-tiles.styles.ts` `src/styles/plan.styles.ts` |
|
||
| #665 | [CODE-REVIEW-665-r2.md](CODE-REVIEW-665-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #664 | [CODE-REVIEW-664-r1.md](CODE-REVIEW-664-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #663 | [SPEC-REVIEW-663-r1.md](SPEC-REVIEW-663-r1.md) | spec · r1 | 🟡 жёлтый | 1 | 0 | §6.2 (wall snap) и §8 (canonicalization/Optimize) описывают два; AC7 называет четыре состояния сломанной; AC13 не называет конкретный бюджет | `docs/CANVAS.md` `docs/WALL-THICKNESS.md` |
|
||
| #663 | [SPEC-REVIEW-663-r2.md](SPEC-REVIEW-663-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #663 | [CODE-REVIEW-663-r1.md](CODE-REVIEW-663-r1.md) | code · r1 | 🟡 жёлтый | 0 | 3 | AC3 разметка ступеней неверна для direction: 'backward'; защитный AC7 (состояния битой ссылки) без mutation witness; защитный AC11 (round-trip/совместимость) без mutation witness | `src/stairs.ts` `stairs.ts` `test/stairs.test.mjs` `scripts/mutation-registry.mjs` `demo/smoke_stairs.mjs` `custom_components/houseplan/import_export.py` |
|
||
| #663 | [CODE-REVIEW-663-r2.md](CODE-REVIEW-663-r2.md) | code · r2 | 🟡 жёлтый | 0 | 2 | AC12: golden-эталон устарел для 4 сцен с лестницами, фикс AC3 не сопровождён обновление…; AC2 smoke-свидетель wallMagnetUsesPhysicalFace статистически ненадёжен из-за бага в соб… | `demo/golden/matrix.mjs` `src/stairs.ts` `demo/smoke_stairs.mjs` `src/junction-limits.ts` |
|
||
| #663 | [CODE-REVIEW-663-r3.md](CODE-REVIEW-663-r3.md) | code · r3 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #662 | [SPEC-REVIEW-662-r1.md](SPEC-REVIEW-662-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | «Входящие» не существует в UI, и текущая классификация каталога кладёт неразмещённую ле…; «Не скоуп» отсутствует внутри формального ## ТЗ | `src/device-inbox.ts` `USER-GUIDE.ru.md` `docs/USER-GUIDE.ru.md` `demo/smoke_led_strip_bind.mjs` `device-inbox.ts` `SPEC-REVIEW-661-r1.md` |
|
||
| #662 | [SPEC-REVIEW-662-r2.md](SPEC-REVIEW-662-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #661 | [SPEC-REVIEW-661-r1.md](SPEC-REVIEW-661-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #660 | [SPEC-REVIEW-660-r1.md](SPEC-REVIEW-660-r1.md) | spec · r1 | 🔴 красный | 2 | 1 | Раздел ## ТЗ в теле issue отсутствует целиком; Изменение прямо противоречит двум местам; AC «расстояние уменьшено ровно вдвое» не | `docs/process/AUTHOR.md` `REVIEWER.md` `test/core-file-budget.test.mjs` `scripts/smoke-select.mjs` `demo/helpers/hp-test.mjs` `docs/UX-MODES.md` `docs/reviews/SPEC-REVIEW-647-r1.md` |
|
||
| #660 | [SPEC-REVIEW-660-r2.md](SPEC-REVIEW-660-r2.md) | spec · r2 | 🔴 красный | 1 | 0 | Скоуп п.3 переносит крестик внутрь .modes, но .modes | `src/styles/chrome.styles.ts` `src/houseplan-card.ts` `docs/USER-GUIDE.ru.md` `docs/UX-MODES.md` `src/houseplan-editor-runtime.ts` `src/header-menu.ts` `smoke_mobile_view_header.mjs` |
|
||
| #660 | [SPEC-REVIEW-660-r3.md](SPEC-REVIEW-660-r3.md) | spec · r3 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #660 | [CODE-REVIEW-660-r1.md](CODE-REVIEW-660-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #659 | [CODE-REVIEW-659-r1.md](CODE-REVIEW-659-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | AC5 «замер до/после» не закрыт | — |
|
||
| #659 | [CODE-REVIEW-659-r2.md](CODE-REVIEW-659-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #658 | [CODE-REVIEW-658-r1.md](CODE-REVIEW-658-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #657 | [CODE-REVIEW-657-r1.md](CODE-REVIEW-657-r1.md) | code · r1 | 🔴 красный | 1 | 0 | после fast-forward слияния (dev не двигался за время ревью) docs/reviews/INDEX.md остаё… | `docs/reviews/INDEX.md` `test/reviews-index.test.mjs` `_process.yml` `merge-candidate.mjs` `test/merge-candidate.test.mjs` `scripts/reviews-index.mjs` |
|
||
| #657 | [CODE-REVIEW-657-r2.md](CODE-REVIEW-657-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | из r1 — проверка закрытия | `scripts/merge-candidate.mjs` `PROCESS.md` `mutation-registry.mjs` `INDEX.md` |
|
||
| #656 | [CODE-REVIEW-656-r1.md](CODE-REVIEW-656-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #655 | [SPEC-REVIEW-655-r1.md](SPEC-REVIEW-655-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #655 | [CODE-REVIEW-655-r1.md](CODE-REVIEW-655-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | защитный flush_lock в VirtualLightController не имеет собственного доказательства (в ск… | `custom_components/houseplan/virtual_lights.py` `store.py` `__init__.py` |
|
||
| #655 | [CODE-REVIEW-655-r2.md](CODE-REVIEW-655-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #654 | [SPEC-REVIEW-654-r1.md](SPEC-REVIEW-654-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | «Release-артефакты» не называют обновление docs/ISOMETRIC.md | `docs/ISOMETRIC.md` `docs/CHANGELOG.md` `docs/CHANGELOG.ru.md` `docs/reviews/INDEX.md` |
|
||
| #654 | [SPEC-REVIEW-654-r2.md](SPEC-REVIEW-654-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #654 | [CODE-REVIEW-654-r1.md](CODE-REVIEW-654-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #651 | [SPEC-REVIEW-651-r1.md](SPEC-REVIEW-651-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | устаревшая формулировка «экспериментальный 2.5D-вид» противоречит текущему статусу функции | `CHANGELOG.md` `CHANGELOG.ru.md` `docs/ISOMETRIC.md` `docs/USER-GUIDE.ru.md` `docs/STATUS.md` `USER-GUIDE.ru.md` |
|
||
| #651 | [SPEC-REVIEW-651-r2.md](SPEC-REVIEW-651-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #651 | [CODE-REVIEW-651-r1.md](CODE-REVIEW-651-r1.md) | code · r1 | 🟡 жёлтый | 0 | 2 | AC1 «другая комната исключена» не доказан ни тестом, ни мутацией; AC4 «деградированный fallback группы» не доказан ни тестом, ни мутацией; неточная формулировка в комментарии к реализации (снято без правки) | `src/iso-overlays.ts` `test/iso-overlays.test.mjs` `scripts/mutation-registry.mjs` |
|
||
| #651 | [CODE-REVIEW-651-r2.md](CODE-REVIEW-651-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #650 | [CODE-REVIEW-650-r1.md](CODE-REVIEW-650-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #649 | [SPEC-REVIEW-649-r1.md](SPEC-REVIEW-649-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | в скоупе задачи (возвращается автору); принято ревьюером с записью, правки не требует | `lab.js` `houseplan-card.ts` |
|
||
| #649 | [SPEC-REVIEW-649-r2.md](SPEC-REVIEW-649-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #649 | [CODE-REVIEW-649-r1.md](CODE-REVIEW-649-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | AC7: обрезка барьерами (физические тела и Solid-перегородки) луча света в 2.5D нигде не…; Устаревшие «alpha/hidden»-формулировки, оставшиеся рядом с уже исправленным текстом в т…; Число в хендоффе не совпадает с фактическим значением в диффе. Комментарий автора в iss…; isoTileStateCss() жёстко считает торец состояний в theme: 'light' без ветки .theme-dark…; AC5: явно не проверены «Alert > чистый Hover» и «Alert > чистый Selected» по отдельност…; Нет отдельного теста на виртуальные устройства (Q1: «без пунктира, как обычные»). noRin… | `src/iso-sun.ts` `physical-geometry.ts` `houseplan-card.ts` `test/iso-stage6.test.mjs` `demo/smoke_iso_sun.mjs` `docs/DEVELOPMENT.md` `docs/ARCHITECTURE.md` `iso-scene-render.ts` |
|
||
| #649 | [CODE-REVIEW-649-r2.md](CODE-REVIEW-649-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #648 | [SPEC-REVIEW-648-r1.md](SPEC-REVIEW-648-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | «Сценарий» не называет персону и; AC10 называет provenance-gate | `docs/SCOPE.md` `scripts/validate-commit-provenance.mjs` `validate.yml` |
|
||
| #648 | [CODE-REVIEW-648-r1.md](CODE-REVIEW-648-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | AC3 документально обещает browser smoke | `demo/smoke_sections_resize.mjs` `docs/TESTING.md` `smoke_sections_resize.mjs` |
|
||
| #648 | [CODE-REVIEW-648-r3.md](CODE-REVIEW-648-r3.md) | code · r3 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #647 | [SPEC-REVIEW-647-r1.md](SPEC-REVIEW-647-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 2 | П.4 ТЗ переносит на новый слот прежнее; ТЗ не упоминает и не защищает документированный | `src/styles/dialogs.styles.ts` `src/styles.ts` `smoke_glow_blending.mjs` `smoke_test_facade.mjs` `smoke_unified_wall_tool.mjs` `docs/UX-MODES.md` `docs/reviews/CODE-REVIEW-195-r1.md` `src/styles/chrome.styles.ts` |
|
||
| #647 | [SPEC-REVIEW-647-r2.md](SPEC-REVIEW-647-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #647 | [CODE-REVIEW-647-r1.md](CODE-REVIEW-647-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #646 | [CODE-REVIEW-646-r1.md](CODE-REVIEW-646-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #645 | [SPEC-REVIEW-645-r1.md](SPEC-REVIEW-645-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 2 | Отсутствует обязательная строка Touch editor: … из docs/TOUCH-SUPPORT.md → «Documentati…; ТЗ не учитывает существующую зависимость live-подписей Resize от позиции кнопки «Настро…; / Low | `docs/TOUCH-SUPPORT.md` `docs/reviews/SPEC-REVIEW-449-r1.md` `docs/specs/359-furniture-placement-preview.md` `docs/specs/449-double-fit-all.md` `src/houseplan-editor-runtime.ts` `src/houseplan-card.ts` `src/resize-labels.ts` `docs/process/REVIEWER.md` |
|
||
| #645 | [SPEC-REVIEW-645-r2.md](SPEC-REVIEW-645-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #645 | [CODE-REVIEW-645-r1.md](CODE-REVIEW-645-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | Resize-preview безвозвратно стирает ещё валидную временную позицию кнопки; мёртвый gearPtCache | `src/houseplan-editor-runtime.ts` `src/room-gear-drag.ts` `scripts/fix-test-build.mjs` `smoke_resize_labels.mjs` `room-gear-drag.test.mjs` `src/houseplan-card.ts` |
|
||
| #645 | [CODE-REVIEW-645-r2.md](CODE-REVIEW-645-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #643 | [CODE-REVIEW-643-r1.md](CODE-REVIEW-643-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #642 | [SPEC-REVIEW-642-r1.md](SPEC-REVIEW-642-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #642 | [CODE-REVIEW-642-r1.md](CODE-REVIEW-642-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #642 | [CODE-REVIEW-642-r2.md](CODE-REVIEW-642-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | Идентичность дерева коду, который уже разобрал r1; Что именно принёс второй ребейз (до 7bb55c2a) — не заявление, а diff; Полный построчный разбор диффа origin/dev...HEAD (72 файла); Гейты — что унаследовано, что перепрогнано лично на этом SHA | — |
|
||
| #642 | [CODE-REVIEW-642-r3.md](CODE-REVIEW-642-r3.md) | code · r3 | 🟢 зелёный | 0 | 0 | Идентичность дерева коду, который разобрали r1 и r2; Что именно принёс третий ребейз — не заявление, а diff; Гейты — что унаследовано из Validate CI на этом точном SHA, что перепрогнано лично | — |
|
||
| #641 | [CODE-REVIEW-641-r1.md](CODE-REVIEW-641-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | нет исполняемого автотеста на ключевой guard в accept.mjs | `accept.mjs` `demo/golden/accept.mjs` `test/golden-wsl-artifact.test.mjs` `wsl-attestation.json` `test/golden-capture-provenance.test.mjs` `scripts/mutation-registry.mjs` `scripts/golden-wsl-artifact.mjs` |
|
||
| #641 | [CODE-REVIEW-641-r2.md](CODE-REVIEW-641-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #640 | [SPEC-REVIEW-640-r1.md](SPEC-REVIEW-640-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | AC3 называет browser-smoke «unit»-тестом | `demo/smoke_furniture_lazy_art.mjs` |
|
||
| #640 | [CODE-REVIEW-640-r1.md](CODE-REVIEW-640-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #639 | [CODE-REVIEW-639-r1.md](CODE-REVIEW-639-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | Новая запись smoke-links.mjs для smoke_space_settings_form.mjs описывает проверку, кото… | `smoke-links.mjs` `smoke_space_settings_form.mjs` `scripts/smoke-links.mjs` `demo/smoke_space_settings_form.mjs` `src/editors/space-form.ts` `form-kit.ts` |
|
||
| #639 | [CODE-REVIEW-639-r2.md](CODE-REVIEW-639-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #638 | [CODE-REVIEW-638-r1.md](CODE-REVIEW-638-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #637 | [CODE-REVIEW-637-r1.md](CODE-REVIEW-637-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | ложный «—» вместо настоящего «0 ч» в медианах | `scripts/process-metrics.mjs` |
|
||
| #637 | [CODE-REVIEW-637-r2.md](CODE-REVIEW-637-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #636 | [CODE-REVIEW-636-r1.md](CODE-REVIEW-636-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #635 | [CODE-REVIEW-635-r1.md](CODE-REVIEW-635-r1.md) | code · r1 | 🟡 жёлтый | 1 | 0 | индекс молчаливо теряет находки и врёт числами по текущему | `docs/reviews/CODE-REVIEW-639-r1.md` `CODE-REVIEW-637-r1.md` `docs/reviews/CODE-REVIEW-594-r1.md` `docs/LESSONS.md` |
|
||
| #635 | [CODE-REVIEW-635-r2.md](CODE-REVIEW-635-r2.md) | code · r2 | 🟡 жёлтый | 1 | 1 | docs/reviews/INDEX.md, зафиксированный в материале ревью, устарел на собственном SHA — …; parseFindings/parseFiles: фолбэк «первая строка тела блока» вырезает начало буллета и п… | `docs/reviews/INDEX.md` `SPEC-REVIEW-625-r1.md` `SPEC-REVIEW-625-r2.md` `CODE-REVIEW-625-r1.md` `CODE-REVIEW-625-r2.md` `process.yml` `test/reviews-index.test.mjs` `INDEX.md` |
|
||
| #635 | [CODE-REVIEW-635-r3.md](CODE-REVIEW-635-r3.md) | code · r3 | 🟢 зелёный | 0 | 0 | firstParagraph: ветка нет\b в фильтре мёртвая из-за ASCII-only \b в JS-регэкспах, расхо… | `scripts/reviews-index.mjs` |
|
||
| #634 | [CODE-REVIEW-634-r1.md](CODE-REVIEW-634-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #633 | [CODE-REVIEW-633-r1.md](CODE-REVIEW-633-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #632 | [CODE-REVIEW-632-r1.md](CODE-REVIEW-632-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | trivial-трек не входит в признаки продуктового потока | `scripts/task-packet.mjs` `task-packet.mjs` |
|
||
| #632 | [CODE-REVIEW-632-r2.md](CODE-REVIEW-632-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #632 | [CODE-REVIEW-632-r3.md](CODE-REVIEW-632-r3.md) | code · r3 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #631 | [CODE-REVIEW-631-r1.md](CODE-REVIEW-631-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #631 | [CODE-REVIEW-631-r2.md](CODE-REVIEW-631-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #630 | [CODE-REVIEW-630-r1.md](CODE-REVIEW-630-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #629 | [SPEC-REVIEW-629-r1.md](SPEC-REVIEW-629-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #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 | — | — |
|
||
| #627 | [CODE-REVIEW-627-r3.md](CODE-REVIEW-627-r3.md) | code · r3 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #626 | [SPEC-REVIEW-626-r1.md](SPEC-REVIEW-626-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | Раздел «что человек увидит» | — |
|
||
| #626 | [CODE-REVIEW-626-r1.md](CODE-REVIEW-626-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | Потеряна прямая регрессионная проверка HTTP-загрузки при admin_only=true (значение по у…; custom_components/houseplan/auth.py:35-37 — комментарий «HA normally exposes admin grou… | `tests_backend/test_ha_upload.py` `http_api.py` `scripts/mutation-registry.mjs` `test_ha_upload.py` `custom_components/houseplan/auth.py` |
|
||
| #626 | [CODE-REVIEW-626-r2.md](CODE-REVIEW-626-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #625 | [SPEC-REVIEW-625-r1.md](SPEC-REVIEW-625-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | новый инвариант markers[].id не описывает исход для уже испорченной хранимой конфигурации; продуктовые формулировки §7.1 неполны; не проговорены явные «нет» по i18n/touch | `validation.py` `__init__.py` |
|
||
| #625 | [SPEC-REVIEW-625-r2.md](SPEC-REVIEW-625-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #625 | [CODE-REVIEW-625-r1.md](CODE-REVIEW-625-r1.md) | code · r1 | 🟡 жёлтый | 0 | 0 | Три из четырёх точек вызова validate_active_marker_ids не имеют ни одного теста, exerci…; AC5 текстуально обещает «отдельные тесты сохраняют поведение при отсутствующем length» …; store.py:async_save_config_state — controller.async_flush() и последующий controller.re… | `custom_components/houseplan/websocket_api.py` `test_validation.py` |
|
||
| #625 | [CODE-REVIEW-625-r2.md](CODE-REVIEW-625-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #624 | [SPEC-REVIEW-624-r1.md](SPEC-REVIEW-624-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | AC1-b: «чем краснеет» не соответствует заявленному свидетелю | `scripts/gate-small.mjs` `scripts/bundle-budget.mjs` `scripts/monolith-baseline.json` |
|
||
| #624 | [SPEC-REVIEW-624-r2.md](SPEC-REVIEW-624-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #624 | [CODE-REVIEW-624-r1.md](CODE-REVIEW-624-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #623 | [CODE-REVIEW-623-r1.md](CODE-REVIEW-623-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #622 | [CODE-REVIEW-622-r1.md](CODE-REVIEW-622-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #621 | [CODE-REVIEW-621-r1.md](CODE-REVIEW-621-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #620 | [CODE-REVIEW-620-r1.md](CODE-REVIEW-620-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #619 | [CODE-REVIEW-619-r1.md](CODE-REVIEW-619-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #618 | [SPEC-REVIEW-618-r1.md](SPEC-REVIEW-618-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | нотация h<ref> в B5 не встречается в коде | `docs/FILTERING.md` |
|
||
| #618 | [CODE-REVIEW-618-r1.md](CODE-REVIEW-618-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | 1. Число gzip лениво-редактора продублировано трижды с расхождением в 2 байта. Хендофф-…; / Medium | `scripts/bundle-budget.mjs` `bundle-budget.mjs` |
|
||
| #618 | [CODE-REVIEW-618-r2.md](CODE-REVIEW-618-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | / Medium; Нет новых. Оба Low из r1 закрыты (см. «Закрытие раунда r1»), TODO не остаётся | — |
|
||
| #617 | [SPEC-REVIEW-617-r1.md](SPEC-REVIEW-617-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | «новый необязательный параметр» уже существует | `src/backdrop-pick.ts` `houseplan-editor-runtime.ts` |
|
||
| #617 | [CODE-REVIEW-617-r1.md](CODE-REVIEW-617-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #617 | [CODE-REVIEW-617-r2.md](CODE-REVIEW-617-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #616 | [SPEC-REVIEW-616-r1.md](SPEC-REVIEW-616-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | AC8 не перечисляет поимённо весь набор golden-фикстур; AC2 не называет .projection-toggle в списке скрытых классов | `demo/golden/matrix.mjs` `houseplan-card.ts` |
|
||
| #616 | [CODE-REVIEW-616-r1.md](CODE-REVIEW-616-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #615 | [SPEC-REVIEW-615-r1.md](SPEC-REVIEW-615-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | AC3 называет несуществующую защиту от расползания на плашки цвета | `smoke_room_settings_form.mjs` `smoke_space_settings_form.mjs` `smoke_device_settings_form.mjs` `smoke_dialog_polish_605.mjs` `smoke_general_settings_form.mjs` |
|
||
| #615 | [SPEC-REVIEW-615-r2.md](SPEC-REVIEW-615-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #615 | [CODE-REVIEW-615-r1.md](CODE-REVIEW-615-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #614 | [SPEC-REVIEW-614-r1.md](SPEC-REVIEW-614-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #614 | [CODE-REVIEW-614-r1.md](CODE-REVIEW-614-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | AC1/AC2/AC3 требуют unit-тест, а он не написан | `test/dialog-baseline.test.mjs` `test/space-dialog.test.mjs` `general-form-state.ts` `space-form-state.ts` `marker-form-state.ts` `tsconfig.test.json` `dialog-baseline.ts` `scripts/mutation-registry.mjs` |
|
||
| #614 | [CODE-REVIEW-614-r2.md](CODE-REVIEW-614-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #613 | [SPEC-REVIEW-613-r1.md](SPEC-REVIEW-613-r1.md) | spec · r1 | 🟡 жёлтый | 1 | 1 | High. Принятое предположение о scroll-инвалидации не работает в основном заявленном сце…; Medium (в скоупе), сопутствует H1. AC1/AC2 не требуют, чтобы smoke-контейнер пересекал … | `demo/serve.mjs` |
|
||
| #613 | [SPEC-REVIEW-613-r2.md](SPEC-REVIEW-613-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #613 | [CODE-REVIEW-613-r1.md](CODE-REVIEW-613-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #612 | [CODE-REVIEW-612-r1.md](CODE-REVIEW-612-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #611 | [SPEC-REVIEW-611-r1.md](SPEC-REVIEW-611-r1.md) | spec · r1 | 🟡 жёлтый | 0 | 1 | контракт не называет второй код-путь с идентичным дефектом (_repair_target_space_refs) | `custom_components/houseplan/import_export.py` `import_export.py` |
|
||
| #611 | [SPEC-REVIEW-611-r2.md](SPEC-REVIEW-611-r2.md) | spec · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #611 | [CODE-REVIEW-611-r1.md](CODE-REVIEW-611-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | ветки live/ambiguous AC2 не имеют собственного мутанта | `import_export.py` `scripts/mutation-registry.mjs` |
|
||
| #610 | [SPEC-REVIEW-610-r1.md](SPEC-REVIEW-610-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #610 | [CODE-REVIEW-610-r1.md](CODE-REVIEW-610-r1.md) | code · r1 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #610 | [CODE-REVIEW-610-r2.md](CODE-REVIEW-610-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #609 | [SPEC-REVIEW-609-r1.md](SPEC-REVIEW-609-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | строки :558/574 для ветки ha-dialog в преамбуле устарели на ~8 строк; план автотестов не называет явно «влияние на производительность: нет» | `PROCESS.md` |
|
||
| #609 | [CODE-REVIEW-609-r1.md](CODE-REVIEW-609-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | AC5 не доказан ни одним добавленным свидетелем; некорректная ссылка на AC в mutation-registry.mjs | `demo/verify_ha_form_shell_609.mjs` `demo/smoke_ha_form_shell_parity.mjs` `demo/srv/demo.html` `verify_ha_form_shell_609.mjs` `mutation-registry.mjs` `hp-dialog.ts` `scripts/mutation-registry.mjs` |
|
||
| #609 | [CODE-REVIEW-609-r2.md](CODE-REVIEW-609-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #608 | [SPEC-REVIEW-608-r1.md](SPEC-REVIEW-608-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | «Шесть потребителей» на самом деле семь вызовов rangeLine; Ответ владельца на Q1–Q3 не оставлен отдельным комментарием | `marker-dialog.ts` `form-kit.ts` `docs/SCOPE.md` |
|
||
| #608 | [CODE-REVIEW-608-r1.md](CODE-REVIEW-608-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | Русский changelog: сломанное предложение (Medium, в скоупе — правится в этой же задаче) | `docs/CHANGELOG.ru.md` `docs/CHANGELOG.md` |
|
||
| #608 | [CODE-REVIEW-608-r2.md](CODE-REVIEW-608-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|
||
| #607 | [SPEC-REVIEW-607-r1.md](SPEC-REVIEW-607-r1.md) | spec · r1 | 🟢 зелёный | 0 | 0 | предварительный блок ## AC в начале тела issue называет несуществующую кнопку | — |
|
||
| #607 | [CODE-REVIEW-607-r1.md](CODE-REVIEW-607-r1.md) | code · r1 | 🟡 жёлтый | 0 | 1 | новые guard'ы AC4 проверяются только смоком, но не зарегистрированы в scripts/mutation-… | `scripts/mutation-registry.mjs` `demo/smoke_dialog_modal_recovery.mjs` `scripts/mutation-gate.mjs` |
|
||
| #607 | [CODE-REVIEW-607-r2.md](CODE-REVIEW-607-r2.md) | code · r2 | 🟢 зелёный | 0 | 0 | — | — |
|