diff --git a/docs/reviews/SPEC-REVIEW-360-r1.md b/docs/reviews/SPEC-REVIEW-360-r1.md new file mode 100644 index 00000000..8a55efb8 --- /dev/null +++ b/docs/reviews/SPEC-REVIEW-360-r1.md @@ -0,0 +1,151 @@ +# SPEC-REVIEW-360-r1 + +Issue: #360 · этап: spec (S4-spec-review) · трек: `small` (лёгкий) · заход: r1 · +блокирующих циклов израсходовано: 0 из 2 (лимит лёгкого трека, §4) + +Ревьюер: Claude (роль «ревьюер ТЗ», отдельная сессия от аналитика/автора). +ТЗ живёт в теле issue #360 (revision 1), файл `docs/specs/` не создаётся — +верно для `small`. + +## Скоуп ревью + +Проверялось ТЗ «Редактор подложки: цвет по умолчанию для новых элементов на +основной панели» — постоянный `hp-color-opacity` в основной панели Background +editor поверх уже существующего `_decorStyle`. Кода нет, ревью — только текст +ТЗ, его внутренняя непротиворечивость и соответствие: + +- `docs/SCOPE.md` (J4/J6); +- `docs/TOUCH-SUPPORT.md` (Background editor — reference editing environment, + правило маркировки новых editor-фич); +- `docs/DECOR-EDITOR.md` (канон подсистемы decor); +- фактическому коду `src/houseplan-editor-runtime.ts`, `src/hp-color-opacity.ts`, + `src/styles/chrome.styles.ts`, `test/color-picker.test.mjs`, `demo/smoke_decor.mjs`, + `src/i18n/{en,ru}.json`. + +## Как проверялось + +Код-ревью нет, поэтому это не проверка исполнения, а сверка утверждений ТЗ с +деревом на SHA `0decce8d` (dev, чистое рабочее дерево): + +| Утверждение ТЗ | Где сверено | Результат | +|---|---|---| +| `_decorStyle` — единый source, уже используется line/rect/ellipse/text/furniture | `houseplan-editor-runtime.ts:4100,4169-4183,4341-4342,4476-4479,4713` | подтверждено | +| Контекстный picker сейчас показывается только для Line/Rect/Ellipse (`draws`) и Backdrop | `houseplan-editor-runtime.ts:5252-5288` (`_renderDecorSecondary`) | подтверждено | +| Основная панель — `.editbar.decorbar`, инструменты в `.editbar-tools` (перенос), Undo/Redo там же, Close — в отдельном `.editbar-end` | `houseplan-editor-runtime.ts:5324-5389` | подтверждено | +| `.editbar-tools` использует `flex-wrap: wrap`, а не скролл | `styles/chrome.styles.ts:200-208` | подтверждено (ТЗ говорит «прокручиваемой/переносящейся» — верно описывает wrap) | +| Существующий смок явно утверждает «picker только в secondary, не в `.decorbar`» — эту строку ТЗ обязано заменить | `demo/smoke_decor.mjs:132-134` | подтверждено, находка ТЗ точная | +| `test/color-picker.test.mjs` содержит хрупкий общий счётчик `