Files
houseplan-card/docs/reviews/SPEC-REVIEW-294-r2.md
T
2026-08-24 18:16:46 +00:00

139 lines
12 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.
# SPEC-REVIEW-294-r2
- **Issue:** https://github.com/Matysh/houseplan-card/issues/294
- **Этап:** ревью ТЗ (PROCESS.md §2.4)
- **Заход:** r2 · блокирующих циклов израсходовано 1/4 (зелёный вердикт цикла не тратит, #227)
- **Ревьюер:** Claude (роль «ревьюер ТЗ», сессия отдельна от автора ТЗ)
- **Предыдущий раунд:** [SPEC-REVIEW-294-r1](SPEC-REVIEW-294-r1.md), вердикт жёлтый,
на SHA `8e86b0a5` (ветка `issue/294-wall-esc-detach`). SHA в вердикте r1 назван
явно (в шапке документа r1), это не находка.
- **Предмет ревью:** `docs/specs/294-wall-esc-detach.md` на SHA `6b857087`
(текущий `HEAD` ветки) и комментарий автора «Правки ТЗ после SPEC-REVIEW r1».
## Разбор по дельте (PROCESS.md §2.9/§2.10, issue #214)
Дельта объявлена: `git diff 8e86b0a5..HEAD` — два файла:
`docs/reviews/SPEC-REVIEW-294-r1.md` (публикация документа предыдущего раунда,
не предмет разбора) и `docs/specs/294-wall-esc-detach.md`, **+43/-7 строк**,
только раздел 5 («Подсказки и документация») и AC7 в разделе 7. Правки в
`docs/specs/README.md` и создание самого файла спецификации относятся к
исходному коммиту `8e86b0a5`, уже разобранному в r1, и в дельту r2 не входят.
Дельта **локальна**: правит формулировку одного раздела и одного AC того же
файла, не меняет продуктовый контракт Esc (разделы 1–4), не задевает новую
подсистему, не связана с ребейзом (branch содержит весь `origin/dev`, что
подтверждает пустой diff `docs/specs/README.md` кроме одной добавленной
строки реестра). Объём разбора сокращён до дельты; заново проверены только
AC7 и раздел 5, а также согласованность новой формулировки с разделами 1–4,
6, 8, 9, которые эту дельту упоминают (раздел 6 «Не входит» и раздел 9
«Документация врёт после изменения»).
## Закрытие раунда r1
| Находка r1 | Чем закрыта | Где это видно |
|---|---|---|
| Medium: AC7 формулировкой («старое утверждение… отсутствует в затронутых Walls-разделах») не покрывает четыре конкретных места старого контракта вне «Walls»-раздела (`USER-GUIDE.ru.md:223`, `:241`, `USER-GUIDE.md:207`, `:216-217`), и EN «Create a room» не решён на паритет с RU | Раздел 5 переписан: перечисляет **шесть** именованных поверхностей (RU: строка «Рисование и точный drag», таблица «Клавиши отмены» с явным разделением Draw/Split, «Комнаты и стены»; EN: строка “Draw or precise drag”, “Cancel and undo”, “Create a room” — последняя явно получает паритет с RU). AC7 дублирует тот же список пронумерованными пунктами 1–6, каждый — проверяемое утверждение по конкретному месту, а не общая цитата | `docs/specs/294-wall-esc-detach.md:109-127` (раздел 5) и `:190-208` (AC7), коммит `6b857087` |
Проверка не ограничилась заявлением автора: каждая из шести строк раздела 5 и
AC7 сверена построчно с текущим содержимым `docs/USER-GUIDE.ru.md` и
`docs/USER-GUIDE.md` на `HEAD` дерева (не на ветке спецификации, а в самом
репозитории, поскольку изменение поведения ещё не реализовано и тексты
руководств пока старые):
- `docs/USER-GUIDE.ru.md:223` — строка «Рисование и точный drag»: `` `Shift`
меняет магнит/угол; `Esc` отменяет операцию `` — совпадает с описанием в §5
п.1/AC7 п.1, требующим разделения;
- `docs/USER-GUIDE.ru.md:241` — таблица «Клавиши отмены», строка
«Незавершённый Draw/Split»: «Убирает последнюю точку или выходит из
инструмента» — совпадает с §5 п.2/AC7 п.2;
- `docs/USER-GUIDE.ru.md:412` — «Комнаты и стены»: «Esc/Ctrl+Z удаляет
последнюю точку» — совпадает с §5 п.3/AC7 п.3;
- `docs/USER-GUIDE.md:207` — строка “Draw or precise drag”: “`Esc` cancels
the operation” — совпадает с §5 п.4/AC7 п.4;
- `docs/USER-GUIDE.md:216-217` — “Cancel and undo”: “`Esc` cancels an
unfinished path… without undoing an already committed action” — совпадает
с §5 п.5/AC7 п.5;
- `docs/USER-GUIDE.md:294-299` — “Create a room”: раздел сегодня **не
содержит** упоминания Esc/Ctrl+Z вовсе (в отличие от RU-версии, `:412`) —
совпадает с тем, что §5 п.6/AC7 п.6 явно требуют добавить паритет, а не
оставляют вопрос открытым.
Все шесть мест реальны, названы верно и покрывают в точности исходные четыре
цитаты r1 плюс оба открытых вопроса того раунда (RU «Комнаты и стены» и EN
паритет). Разбор по коду/докам, не по заявлению автора.
Отдельно проверено, что деление таблицы «Клавиши отмены» на Walls/Split не
является новой догадкой: `split` — существующий отдельный `MarkupTool` в
`src/houseplan-card.ts` (`type MarkupTool = … | 'draw' | … | 'split' | …`,
собственная кнопка активации, собственная обработка курсора/preview), то есть
разнесение «Draw (Walls)» и «Split» в разных строках описывает два реально
разных инструмента, а не искусственное разделение одного.
## Унаследовано из r1
Без повторной проверки принято из [SPEC-REVIEW-294-r1](SPEC-REVIEW-294-r1.md)
на SHA `8e86b0a5`, поскольку дельта r2 их не затрагивает:
- продуктовая рамка и персона (Home admin, Plan editor, десктоп) — раздел
«Что проверено и корректно», п.1 документа r1;
- отсутствие догадок, выданных за факт, в разделах 1–4 (контракт Esc) —
сверено с `_onKey`, `_finishWallChain`, `_undoPoint`, `_undoActiveDraftPoint`,
`_resumeLastDraft`, `_resumeDraftBySpace` на той же ветке в r1;
- однозначность и проверяемость AC1–AC6, AC8 — не изменились байт в байт
между `8e86b0a5` и `HEAD` (единственная правка дельты — AC7 и раздел 5,
подтверждено `git diff` выше);
- полнота раздела 6 «Не входит», разделов 8–13 (совместимость/touch/security/
performance, риски, откат, ожидаемые файлы, release, принятые предположения)
— не затронуты дельтой;
- корректность трейлеров коммита спецификации (`Issue: #294`,
`User-Visible: no`) и трек (обычный, не `small`).
## Гейты
Класс изменённых файлов в дельте — только C (`docs/specs/**`). Продуктовый код
(класс A/B) на ветке отсутствует: `git diff origin/dev...HEAD --stat` даёt
только `docs/reviews/**`, `docs/specs/294-wall-esc-detach.md`,
`docs/specs/README.md`. `typecheck`/`test`/`build`/`check-docs` неприменимы к
этапу ТЗ (то же решение, что в r1) — ничего не проверяют для файла
спецификации и не запускались сознательно, а не по умолчанию.
## Находки
Нет. High: 0, Medium: 0, Low: 0.
## Что проверено и корректно
- Единственная находка r1 (Medium) закрыта по существу, а не переформулирована
так, чтобы формально пройти проверку: новая формулировка AC7 привязана к
шести конкретным, поимённо названным местам в обоих руководствах, включая
оба места, которые r1 привёл цитатами, и оба открытых вопроса r1 (RU
«Комнаты и стены», EN «Create a room» паритет).
- Новая формулировка не вводит непомеченных догадок: разделение таблицы
«Клавиши отмены» на Walls/Split опирается на существующий отдельный
инструмент `split` в коде, а не является произвольным решением автора.
- Раздел 6 «Не входит» синхронизирован с расширенным разделом 5: пункт «переработка
всех общих текстов про Escape вне затронутого Walls-контекста» по-прежнему
верно ограничивает работу — новый список из шести мест целиком относится к
контракту wall chain, ничего избыточного не добавлено.
- Продуктовый вопрос владельцу не появился: оба уточнения из r1 (нужно ли
разносить Draw/Split, нужен ли EN-паритет) решены автором технически, без
эскалации, что соответствует PROCESS.md §7.1 («всё, чего пользователь не
наблюдает, агенты решают сами»); паритет текста руководств — не продуктовое
поведение, а формулировка документации одного и того же уже согласованного
контракта.
## Чего не проверял
- Гейты `typecheck`/`test`/`build`/`check-docs`/смоки — не запускались:
дельта правит только `docs/specs/**`, продуктового кода нет, issue не в
`S5-ready`. То же решение объёма, что в r1.
- Реализуемость AC7 на уровне будущего диффа кода/документации — предмет
код-ревью после реализации, не ТЗ-ревью.
- Разделы 1–4, 6, 8–13 не перечитывались построчно заново — они наследуются
из r1 согласно разделу «Унаследовано из r1» выше, дельта их не касается.
## Вердикт
Зелёный: находка r1 закрыта по существу и проверена по коду/докам, а не по
заявлению автора; новых находок нет. Продуктовых вопросов владельцу нет.