12 KiB
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, вердикт жёлтый,
на SHA
8e86b0a5(веткаissue/294-wall-esc-detach). SHA в вердикте r1 назван явно (в шапке документа r1), это не находка. - Предмет ревью:
docs/specs/294-wall-esc-detach.mdна SHA6b857087(текущий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”: “Esccancels the operation” — совпадает с §5 п.4/AC7 п.4;docs/USER-GUIDE.md:216-217— “Cancel and undo”: “Esccancels 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
на 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 закрыта по существу и проверена по коду/докам, а не по заявлению автора; новых находок нет. Продуктовых вопросов владельцу нет.