Files
houseplan-card/docs/reviews/SPEC-REVIEW-361-r2.md
T
2026-08-29 07:55:23 +00:00

7.8 KiB
Raw Blame History

SPEC-REVIEW-361-r2

Issue: #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.