mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 11:49:16 +00:00
@@ -0,0 +1,97 @@
|
||||
# SPEC-REVIEW-361-r2
|
||||
|
||||
Issue: [#361](https://github.com/Matysh/houseplan-card/issues/361) — «Мебель: физическая
|
||||
толщина линий не масштабируется при zoom»
|
||||
ТЗ: `docs/specs/361-furniture-stroke-zoom.md`, commit `31c6e77c` (`docs: require targeted
|
||||
furniture smoke`, Issue: #361, User-Visible: no)
|
||||
Этап: spec (§2.4) · трек: полный · заход r2 · блокирующих циклов израсходовано 1 из 4
|
||||
|
||||
## Предыдущий раунд
|
||||
|
||||
r1: жёлтый, High: 0, Medium: 1 (в скоупе). Документ: `docs/reviews/SPEC-REVIEW-361-r1.md`,
|
||||
получен на SHA `ccaf34d6` (SHA назван в самом документе r1 — недостающего SHA как находки
|
||||
здесь нет).
|
||||
|
||||
## Дельта раунда (PROCESS.md §2.10)
|
||||
|
||||
Автор сам назвал дельту в хендоффе: `02e96750..31c6e77c`. Диф спеки за этот диапазон:
|
||||
|
||||
```
|
||||
git diff 02e96750..31c6e77c -- docs/specs/
|
||||
```
|
||||
|
||||
даёт ровно одно изменение — пункт 7 раздела «План автотестов» в
|
||||
`docs/specs/361-furniture-stroke-zoom.md` (5 добавлений / 4 удаления, единственный
|
||||
изменённый файл в диапазоне). Никакие другие разделы ТЗ, тело issue, `docs/specs/README.md`
|
||||
или иные файлы в этом диапазоне не тронуты.
|
||||
|
||||
**Дельта локальна** в терминах §2.10: это не ребейз на ушедший вперёд `dev` (сравнение с
|
||||
`origin/dev` — родитель по-прежнему тот же), не смена контракта поведения (AC1…AC9 и разделы
|
||||
«Контракт поведения» / «Технический render-контракт» не менялись), не задета новая
|
||||
подсистема, объём (5/4 строк) несравним с объёмом исходного ТЗ (287 строк). Поэтому полный
|
||||
повторный разбор не требуется — разбор ограничен дельтой плюс тем, до чего она дотягивается.
|
||||
|
||||
## Закрытие раунда r1
|
||||
|
||||
| Находка r1 (Medium) | Чем закрыта | Где это видно |
|
||||
|---|---|---|
|
||||
| Пункт 7 «Плана автотестов» откладывал `demo/smoke_furniture.mjs` до предрелизного прогона, хотя AC1/AC3/AC4/AC6 называют именно его доказательством — противоречие правилу `AGENTS.md` («before moving an issue to `S7-code-review`, run the smokes named in its AC locally»), issue #151. | Пункт 7 переписан: «перед переводом в `S7-code-review` дополнительно запустить названный в AC целевой `node demo/smoke_furniture.mjs`». Golden, полный набор browser smoke, performance и полный gate по-прежнему явно отнесены к предрелизному прогону — эта часть не тронута и не должна была быть. | `docs/specs/361-furniture-stroke-zoom.md:236-240` (commit `31c6e77c`); формулировка дословно соответствует правилу `AGENTS.md:340-341`. |
|
||||
|
||||
Находка закрыта полностью и точно — не общим заявлением автора, а конкретной строкой текста,
|
||||
процитированной выше и сверенной с `AGENTS.md` посимвольно по смыслу требования (какой смок,
|
||||
когда, обязательность).
|
||||
|
||||
## Что перепроверено в этом раунде
|
||||
|
||||
Дельта — правка процесса гейтов в «Плане автотестов», не поведенческая. Она не задевает
|
||||
доказательство ни одного AC (AC1…AC9 остаются описывать *что* доказывается; правка меняет
|
||||
только *когда* один из способов доказательства обязан быть исполнен). Поэтому по правилу
|
||||
«заново проверять только те AC, чьё доказательство дельта задевает» — предметных AC для
|
||||
повторной проверки нет.
|
||||
|
||||
Проверено отдельно, поскольку это прямой предмет находки r1:
|
||||
- новая формулировка не создаёт новое противоречие — `demo/smoke_furniture.mjs` назван
|
||||
обязательным именно там же, где AC1/AC3/AC4/AC6 называют его доказательством (раздел
|
||||
«Критерии приёмки», не менявшийся в дельте): `docs/specs/361-furniture-stroke-zoom.md:183,
|
||||
190, 194, 203`;
|
||||
- `golden`, полный набор browser smoke, `performance_smoke` и полный gate остались
|
||||
предрелizными, как и было в r1-версии — эта граница дельтой не сдвинута, значит регрессии
|
||||
§11.4 (предрелизные гейты не подменяют код-ревью) нет;
|
||||
- трейлеры коммита `31c6e77c`: `Issue: #361`, `User-Visible: no` — корректно, изменение
|
||||
докс-only и не видно пользователю продукта.
|
||||
|
||||
## Унаследовано из r1
|
||||
|
||||
Без повторной проверки в этом раунде, по документу `docs/reviews/SPEC-REVIEW-361-r1.md`
|
||||
(SHA `ccaf34d6`), поскольку дельта их не касается:
|
||||
|
||||
- диагноз дефекта (line/rect/ellipse без `vector-effect` vs. furniture с
|
||||
`vector-effect="non-scaling-stroke"`, `plan-svg viewBox` от `_applyView(zoom, …)`) сверен с
|
||||
кодом и не догадка;
|
||||
- обязательные разделы §7.1 присутствуют и полны;
|
||||
- скоуп/не-скоуп корректны и не расширены относительно аналитики #361;
|
||||
- терминология сверена с `docs/USER-GUIDE.ru.md`;
|
||||
- AC1…AC9 однозначны и указывают способ доказательства;
|
||||
- раздел «Принято предположительно, поменять свободно» корректно отделяет техническое от
|
||||
продуктового;
|
||||
- сложность/риск/трек (полный, не `small`) не оспаривались и не изменились.
|
||||
|
||||
## Гейты
|
||||
|
||||
Дельта — правка одного docs-файла в `docs/specs/**`, `src/**` не затронут. Продуктовый код не
|
||||
менялся (спек-этап). Поэтому:
|
||||
- `npx tsc --noEmit`, `npm test`, `npm run build`, `node scripts/check-docs.mjs` — не
|
||||
прогонялись в этом раунде: их предмет (код/бандл/отпечаток скриншотов по `src/**`) дельтой
|
||||
не затронут, а автор уже подтвердил `node scripts/check-docs.mjs` → PASS и `process-gate
|
||||
pre-push` → PASS в хендоффе на этом SHA;
|
||||
- смоки, golden, инварианты модели, backend pytest, performance-профили — неприменимы на
|
||||
этапе spec без кода, как и в r1.
|
||||
|
||||
## Находки
|
||||
|
||||
Нет. High: 0, Medium: 0.
|
||||
|
||||
## Вердикт
|
||||
|
||||
Зелёный. Дельта r2 точно и полностью закрывает единственную Medium-находку r1, не открывая
|
||||
новых расхождений; ТЗ в текущей редакции (`31c6e77c`) готово к DoR/S5.
|
||||
Reference in New Issue
Block a user