Files
houseplan-card/docs/reviews/SPEC-REVIEW-443-r2.md
T
2026-09-03 20:08:17 +00:00

8.7 KiB

SPEC-REVIEW-443-r2

  • Issue: https://github.com/Matysh/houseplan-card/issues/443
  • Этап: ревью ТЗ (PROCESS.md §2.4)
  • Заход: r2, блокирующих циклов израсходовано 1 из 4
  • Материал: docs/specs/443-vacuum-route-polish.md на ветке issue/443-vacuum-route-polish, коммит 0d8cfffb (Validate на этом SHA зелёный — https://github.com/Matysh/houseplan-card/actions/runs/33800001581)
  • Предыдущий раунд: r1, жёлтый, SHA a488e898, документ docs/reviews/SPEC-REVIEW-443-r1.md
  • Дельта: git diff a488e898..0d8cfffb -- docs/specs/443-vacuum-route-polish.md — 12 строк в двух разделах («Карта реализации», «Release-артефакты»), один коммит 0d8cfffb ("docs: address spec review for vacuum routes")

Почему разбор сокращён, а не заново

Дельта строго локальна: правка целиком лежит в тексте документа, не трогает разделы «Сценарий», «Что человек увидит», «Контракт» (§1–§4), список AC1–AC8, «Не-скоуп», «План тестирования» или «Принятые предположения». Автор прямо заявил в комментарии к issue: «Контракт и acceptance criteria не менялись» — и git diff это подтверждает построчно: единственные изменённые строки — путь src/i18n/support/{en,ru,de,fr}.json в карте реализации и четыре новые строки в разделе «Release-артефакты» про docs/CONFIG-COMPATIBILITY.md и docs/USER-GUIDE.ru.md. Продуктовый контракт не менялся, новая подсистема не затронута, ребейза не было (SHA r1 — прямой предок SHA r2, git merge-base a488e898 0d8cfffb = a488e898). Оснований для полного повторного разбора нет — разбор ограничен закрытием двух находок r1 и беглой проверкой, что дельта не задела ничего, признанного выполненным в r1.

Закрытие раунда r1

Находка r1 Чем закрыта Где это видно
Medium: раздел «Release-артефакты» не называет docs/CONFIG-COMPATIBILITY.md и docs/USER-GUIDE.ru.md Оба документа добавлены и в «Карту реализации», и в «Release-артефакты», с конкретной формулировкой правки (различие absent/null/explicit-empty/[] для первого; новая группа «Пространство удалено» для второго) docs/specs/443-vacuum-route-polish.md:279-281 (карта реализации), :301-305 (release-артефакты)
Low: путь i18n src/locales/{en,ru,de,fr}.ts не существует Путь исправлен на фактический src/i18n/support/{en,ru,de,fr}.json docs/specs/443-vacuum-route-polish.md:275

Обе правки текстовые, ограничены заявленными строками, AC/контракт/скоуп не менялись — соответствует тому, что фикс требовался «чисто текстовый».

Унаследовано из r1

Всё содержательное сверение кода/документов из r1 наследуется без повторной проверки — дельта r2 не касается ни одного из проверенных там утверждений:

  • обе (frontend/backend) причины пункта (а) issue, kept_routes or None в export, детерминированный (но не сгруппированный) comparator пункта (б), полный скан ростера в _renderVacuums пункта (в) — построчно сверены с origin/dev;
  • контракт §1 (4-состояния authority), §2 (single-space export), §3 (группа удалённых пространств), §4 (vacuum-only snapshot) — однозначны, не оставляют выбора автору;
  • все восемь AC пронумерованы, у каждого указан способ доказательства, включая обязательный отрицательный прогон в AC2;
  • план автотестов называет два новых мутанта scripts/mutation-gate.mjs;
  • «Принятые предположения» отделяют технические решения от уже принятых владельцем фактов, догадка за факт не выдаётся;
  • открытых продуктовых вопросов нет;
  • i18n-текст группы не изобретён с нуля (vac.route_status_missing_space);
  • «одно число — один источник» неприменимо (задача не вводит новую пользовательскую величину) — рассмотрено и отклонено в r1, не заново.

Источник: docs/reviews/SPEC-REVIEW-443-r1.md, SHA a488e898.

Находки r2

Нет. Обе находки r1 закрыты текстуально и точно, новых текстовых проблем в делте не внесено.

Что проверено в r2

  • Полный git diff a488e898..0d8cfffb — единственный тронутый файл документов класса-C — docs/specs/443-vacuum-route-polish.md (плюс сам документ ревью r1, который конвейер закоммитил как артефакт — его содержание не является предметом проверки автора).
  • Раздел «Карта реализации» (docs/specs/443-vacuum-route-polish.md:269-281) и «Release-артефакты» (:296-311) прочитаны целиком в актуальном состоянии, не только по диффу — формулировки конкретны («различает absent, null, explicit empty и non-empty», «новую видимую группу … в Device editor»), не общие фразы.
  • docs/specs/README.md не затронут дельтой — трассируемость §7.1, подтверждённая в r1, не могла испортиться этой правкой.
  • Merge-base SHA r1/r2 подтверждает отсутствие ребейза (git merge-base a488e898 0d8cfffb = a488e898).

Чего не проверял

  • Не перечитывал заново разделы «Сценарий», «Что человек увидит», «Контракт» §1–§4, AC1–AC8, «Не-скоуп», «План тестирования», «Принятые предположения» — дельта их не касается, наследуются из r1 (см. выше).
  • Не запускал typecheck/test/build — этап ревью ТЗ, диапазон изменений только docs/specs/**, Validate уже зелёный на этом SHA (см. материал выше); продуктового кода по-прежнему нет.
  • Не проверял golden/смоки/perf/инварианты модели — относятся к implementation loop и предрелизному гейту, кода ещё нет.

Материал раунда

  • SHA: 0d8cfffb (ветка issue/443-vacuum-route-polish)
  • Дерево ТЗ: docs/specs/443-vacuum-route-polish.md
  • Round: r2, budget циклов 1/4
  • Предыдущий раунд: r1, SHA a488e898, docs/reviews/SPEC-REVIEW-443-r1.md

Материал раунда

  • Ветка: issue/443-vacuum-route-polish, коммит 0d8cfffb9286 — ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет.
  • Дерево материала: b899b29a6fbe75966853a43a6282cff22c146762
    git log --all --format='%H %T' | grep b899b29a6fbe
    
  • ТЗ docs/specs/443-vacuum-route-polish.md, блоб eb5bc721764abebb38a642cf9e450f52c6e608d7
    git log --all --find-object=eb5bc721764abebb38a642cf9e450f52c6e608d7 -- docs/specs/443-vacuum-route-polish.md