mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
@@ -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 закрыта по существу и проверена по коду/докам, а не по
|
||||
заявлению автора; новых находок нет. Продуктовых вопросов владельцу нет.
|
||||
Reference in New Issue
Block a user