docs: review document for #294

Issue: #294
User-Visible: no
This commit is contained in:
claude[bot]
2026-08-24 18:16:46 +00:00
parent 874838c954
commit 578eb5ebd3
+138
View File
@@ -0,0 +1,138 @@
# 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 закрыта по существу и проверена по коду/докам, а не по
заявлению автора; новых находок нет. Продуктовых вопросов владельцу нет.