mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-28 19:01:34 +00:00
Ревью #682 r1, Medium: перенос добавляет документу уровень вложенности (`docs/reviews/X.md` → `legacy/reviews/<тег>/X.md`, `docs/specs/` → `legacy/specs/`), а относительные ссылки внутри перенесённых документов и в соседях, ссылавшихся на них, никто не пересчитывал — на `97d19268` 53 битые ссылки в 46 файлах (заявление «все 26 резолвятся» в `7feb6177` было верно только до переноса документов ревью). Гейты архив не смотрят. `reviews-archive.mjs`: `repairLinks` пересчитывает ссылку, если она не резолвится от нового места, а цель находится от нового или старого места через карту переносов; битая и до переноса ссылка не трогается. `--apply` делает это само, `--repair-links=<rev>` — для всех переименований `<rev>..HEAD`, `--check-links` печатает битые. Этим коммитом `--repair-links=origin/dev` переписал ровно 53 ссылки в 46 файлах; остались две прежние «...»-заглушки в CODE-REVIEW-448-r2 (битые и на dev). Тесты: перенесённый документ, сосед со ссылкой в архив, ТЗ со ссылкой на позже перенесённое ревью, битая-до-переноса не трогается, в `legacy/` битых нет; мутант `reviews-archive-links-from-new-place-only`. PROCESS §2.10 и DEVELOPMENT › Release называют переписывание и `--check-links`. Issue: #682 User-Visible: no Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
9.0 KiB
9.0 KiB
SPEC-REVIEW-204-r1
- Issue: #204
- ТЗ: docs/specs/204-space-create-display-defaults.md
- Ветка:
issue/204-space-create-display-defaults, коммитf703242 - Трек: обычный (метка
smallне выставлена — файл ТЗ обязателен и присутствует) - Вердикт: зелёный
Скоуп ревью
Этап spec по PROCESS.md §2.4: проверяется ТЗ на выполнимость, однозначность
AC и отсутствие догадок, выданных за решения. Продуктовый код не менялся —
диапазон origin/dev..HEAD содержит один docs-коммит (204-*.md +
запись в docs/specs/README.md), что соответствует стадии S4-spec-review.
Как проверялось
- Прочитаны в порядке:
docs/SCOPE.md,AGENTS.md,PROCESS.md(§2.4, §7.1, §7.2), тело issue #204 и оба комментария (аналитика+вопросы, ТЗ готово), timeline issue (gh api .../timeline) — подтверждено, чтоblockedснят владельцем (17:08:25) до публикации ТЗ (17:12:03), т.е. Q1/Q2 закрыты не умолчанием, а явным действием с правом записи. - Сверены обязательные разделы §7.1 (сценарий, что человек увидит, проблема, скоуп/не-скоуп, контракт, UX, данные/миграция, i18n, AC, тест-план, риски, откат, release-артефакты) — все присутствуют и в правильном порядке.
- Корневая причина ТЗ (§3) сверена построчно с кодом на ветке:
src/houseplan-card.ts:13232-13251(_openSpaceDialog('create')) —showBorders:false, showNames:falseподтверждено;src/houseplan-card.ts:13605-13625(_openNextImport) — тот же дефолт подтверждён;src/houseplan-card.ts:19521,19548— радиокнопки File/Draw меняют толькоsource, переключатели не трогают;src/houseplan-card.ts:13476-13477— скрытая веткаshow_borders: draw && d.mode === 'create' ? true : d.showBorders(и аналогичноshow_names) подтверждена буквально;src/logic.ts:1238-1244(spaceDisplayOf) — реальный runtime-дефолтs.show_borders ?? noPlanподтверждает, зачем скрытая ветка вообще появилась (сохранить видимый план без фона с включённой разметкой), и объясняет, почему File-create сfalse/falseне деградирует:plan_urlна этот момент уже отличен от null,noPlanне участвует. Причина не является догадкой — она voспроизведена по коду, а не предположена.
- Терминология переключателей сверена с
src/i18n/ru.json:353-354("Всегда отображать границы комнат","Отображать названия комнат (перетаскиваются)") — совпадает буквально с телом issue и с ТЗ.docs/UX-MODES.md(таблица «Display section», строки 119-147) не противоречит: она описывает общий backend-дефолт (?? noPlan), ТЗ трогает только create-dialog UX и Save, а не резолвер — это explicitно вынесено в «Non-scope» (§5) и совпадает с уже закрытым #203 (тот же резолвер, другое поле, не пересекается). - Проверено, что #203 закрыт (
state: CLOSED) и правда не про создание пространства — исключает риск дублирования и конфликта non-scope. - Проверены трейлеры коммита
f703242:Issue: #204,User-Visible: no— корректно для docs-only коммита на этапе spec. - Проверена запись в
docs/specs/README.md— индекс обновлён, ссылка на правильный файл, порядок строк в таблице уже был не отсортирован до этого коммита (не новая проблема, см. «Не находки»).
Находки
Нет ни High, ни Medium, ни Low.
Что проверено и корректно
- Персона и сценарий (§1): администратор, создание пространства / шаг
Floors-Areas onboarding — соответствует J4/J6
docs/SCOPE.md, скоуп по размеру задачи (одна поверхность — create-dialog) корректен для полного трека без меткиsmall(сложность 4/10 по аналитике, что уже выше порогаsmall≤3 — трек выбран верно). - До/после (§2) сформулировано в пользовательских терминах, без деталей реализации.
- Контракт (§6) описывает конечный автомат
displayTouchedбез противоречий: 6 пунктов покрывают init, source-switch до/после touch, Save, Cancel — не осталось необозначенных переходов (File→Draw→File с touched, повторный File→Draw и т.д. выводятся из п.2 и п.4 однозначно). - AC1–AC10 (§9) пронумерованы, каждый привязан к способу доказательства
(smoke/unit/mutation/regression), формулировки проверяемы без домысливания
— включая мутационный гейт AC9, что соответствует существующей практике
проекта (
scripts/mutation-gate.mjs, см.docs/TESTING.md), а не новой выдумке. - Non-scope (§5) явно исключает резолвер #203, миграцию, i18n, дизайн диалога — предотвращает расширение скоупа при реализации.
- Предположения (§13) отделены от решений: имя
displayTouched, выбор smoke-файла и общий helper прямо помечены «технически, менять свободно», продуктовые Q1/Q2 закрыты явным ответом владельца (снятиеblocked) до публикации ТЗ. - Release-артефакты (§12):
User-Visible: yesдля будущей реализации корректно предполагает оба changelog,USER-GUIDE.ru.md,TESTING.md,STATUS.md— соответствует DoD §2.5. - Откат (§12): явно описан (revert коммита возвращает скрытую подмену) — пункт DoR «откат» закрыт.
Чего не проверял
- Не проверялась реализация — её ещё нет (стадия spec, диапазон дальше
докс-коммита пуст). Гейты
typecheck/test/buildне запускались: предмета для них на этой стадии нет (класс A/B файлы не менялись). - Не проверялся сам механизм существующего смока
demo/smoke_space_settings.mjsна предмет того, легко ли он расширяется под AC1–AC8 — это техническое решение автора кода (§13 п.3 ТЗ), не предмет ревью ТЗ. - Не запрашивался
docs/specs/040-floor-area-onboarding.mdна полноту вне грепа поshow_borders/show_names/default— грепом подтверждено отсутствие конфликтующих утверждений про defaults, дальше документ не читался целиком.
Не находки (сознательно не заведены)
- Таблица
docs/specs/README.mdуже была не отсортирована по номеру issue до этого коммита (150после157,201/203/186в произвольном порядке) — вставка#204между#197и#201не создаёт новую проблему, это косметика существующего файла, не relevant к ТЗ #204.