13 KiB
CODE-REVIEW-673-r2
Материал: 2475403469650fb4f45181a5049f5fce5ef89d5a (issue/673-stage6-golden, HEAD == материал), делта — git diff 855bede537e7b7dd9bdd11aab1d1cbb4b6f6623d..HEAD
Заход: r2 · блокирующих циклов израсходовано 1 из 4
Скоуп
Issue #673: пять сцен Stage 6 (утверждённых по эскизу приёмкой #649) переведены
из диагностического экспорта STAGE6_ACCEPTANCE_SCENARIOS в канонический
GOLDEN_SCENARIOS с baseline-файлами и защитным тестом. Механизм задачи разобран
и принят полностью в r1 (жёлтый вердикт с единственной находкой Medium в
скоупе). Этот раунд — проверка закрытия ровно той находки; продукт не меняется,
User-Visible: no.
Материал раунда r1 и дельта
- Документ r1:
docs/reviews/CODE-REVIEW-673-r1.md, материал855bede537e7b7dd9bdd11aab1d1cbb4b6f6623d. - Дельта:
git diff 855bede537e7b7dd9bdd11aab1d1cbb4b6f6623d..HEAD(git log --onelineмежду ними):2aeda2df— «docs: review document for #673»: коммит публикации документа r1 в ветку (пайплайн, класс вне A/B, трейлерыIssue: #673/User-Visible: noна месте). Правок продукта не несёт.24754034— «docs: обновить fingerprint после ребейза #673» (автор): единственный правящий коммит, единственный файл —docs/images/screenshots.json(24 строки, толькоsourceFingerprintи одиннадцатьsourceSha256; все одиннадцатьimageSha256не тронуты). ТрейлерыIssue: #673/User-Visible: noна месте.
- Дельта локальна: один файл, одна правка, адресующая ровно находку r1. Полный
повторный разбор механизма задачи (перенос сцен в
GOLDEN_SCENARIOS, тест, мутант, baseline) не требуется — ничего из этого дельта не касается. git log --oneline origin/dev..HEADне показывает коммитов dev впереди материала r1 — рёбейза на ушедший вперёдdevне было, несмотря на формулировку сообщения коммита («после ребейза» относится к внутреннему шагу пайплайна, не к смещению базы).
Закрытие раунда r1
| Находка r1 | Чем закрыта | Где это видно |
|---|---|---|
Medium: docs/images/screenshots.json — закоммиченный sourceFingerprint (843b7c30…) не совпадал с тем, что реально даёт visualFingerprint() на дереве материала; check-docs.mjs --screenshots=strict был красным на 855bede5 |
Коммит 24754034 заменил sourceFingerprint и все одиннадцать sourceSha256 на 4c475f0121499124efd0ae3233a06b05f0ab4a117adf17d942e792bcc7462238 |
git diff 855bede5..HEAD -- docs/images/screenshots.json; независимо пересчитал visualFingerprint(process.cwd()) на HEAD — результат побайтово совпал с новым значением в файле; node scripts/check-docs.mjs --external --screenshots=strict на HEAD — Documentation checks passed (7 files, 12 external links), exit 0 (прогнал сам, не со слов автора) |
Low: SHA 557d4e38… в комментарии автора не резолвится в репозитории (снято ревьюером без правки) |
Не требовало действия автора — уже снято ревьюером в r1 с явной записью | docs/reviews/CODE-REVIEW-673-r1.md, раздел «Low» |
imageSha256 во всех одиннадцати сценариях не изменился между 855bede5 и
HEAD — подтверждает заявление автора «PNG не менялись, обновлён только
отпечаток исходников» (сверил построчно по диффу выше).
Унаследовано из r1 (без повторной проверки в этом раунде)
Дельта их не касается, повторно не перепроверялось:
- Перенос
STAGE6_ACCEPTANCE_SCENARIOSвGOLDEN_SCENARIOS, версия матрицы 66 —docs/reviews/CODE-REVIEW-673-r1.md, материал855bede537e7b7dd9bdd11aab1d1cbb4b6f6623d. - Защитный тест
test/golden-matrix.test.mjs(«#673 Stage 6 designer acceptance scenes are canonical golden entries») + мутантstage6-acceptance-left-diagnostic-only, мутационно доказан красным в r1 вручную — там же. golden:verify184/184, включая пятьisometric-stage6-*побайтово — там же.- Правки
ACCEPTANCE.md/ комментария вmatrix.mjs(текст, не будущая работа) — там же. - Классификация коммитов по AGENTS.md (A/B/C/D), трейлеры
Baseline-Reviewed-Localи его sha256-соответствиеbaselines-index.json— там же. - Условный AC про недетерминизм (два независимых захвата дали одинаковый SHA-256) — принят в r1 как факт по issue, не переисполнялся; в этом раунде тоже не переисполнялся, дельта его не касается.
Как проверялось в этом раунде
Validate на материале 24754034 зелёный
(https://github.com/Matysh/houseplan-card/actions/runs/36306459071) —
typecheck, npm test, npm run build + bundle-policy --verify доверяю
этому прогону, отдельно ради них не перегонял (единственный изменённый файл —
JSON-манифест метаданных скриншотов, не код и не тест).
Прогнано мной лично в этом раунде (адресно к находке r1, а не для галочки):
| Гейт | Команда | Результат |
|---|---|---|
| Typecheck (доп. подтверждение, дёшево) | npx tsc --noEmit |
чисто |
| Пересчёт отпечатка независимо от закоммиченного значения | node -e "import('./scripts/source-fingerprint.mjs').then(m=>console.log(m.visualFingerprint(process.cwd())))" |
4c475f0121499124efd0ae3233a06b05f0ab4a117adf17d942e792bcc7462238 — совпадает с записанным в docs/images/screenshots.json |
| Доки-гейт, строгий режим (ровно тот, что был красным в r1) | node scripts/check-docs.mjs --external --screenshots=strict |
Documentation checks passed (7 files, 12 external links), exit 0 |
| Режим гейта на текущей вершине (для полноты — какой режим реально действует в CI) | node scripts/classify-changes.mjs --screenshots-mode |
warn (на HEAD по-прежнему нет Release:) — не имеет значения: strict тоже зелёный, находка закрыта не «отступлением в warn», а фактическим совпадением отпечатка |
| Диапазон делты, дерево чистое | git status --short (пусто), git log --oneline origin/dev..HEAD |
подтверждает: рёбейза на ушедший вперёд dev не было, делта — ровно два коммита выше |
Не прогонял и почему: npm test, npm run build, bundle-policy --verify,
golden:verify, мутационную пробу — унаследованы от зелёного Validate на этом
же SHA и от полного разбора r1 (механизм задачи дельта не трогает);
pytest tests_backend, инварианты модели, performance, browser-смоки — как и
в r1, диф этого коммита не трогает custom_components/**/*.py, геометрию,
src/** или AC, называющий их.
AC · чем доказан · чем краснеет
Формальных AC issue дельта не добавляет и не меняет (см. таблицу в r1 — она не пересматривается). Единственный релевантный этому раунду пункт — процессное условие «оба гейта строгие на финальном дереве», проверенное исполнением выше; защитного мутационного свидетеля это условие не предполагает (не код, а согласованность вычисляемого значения с сохранённым — доказательство пересчётом и есть исчерпывающая проба, других состояний, которые нужно было бы уметь ронять, здесь нет).
Что проверено и корректно
- Пересчитанный
visualFingerprint()совпал с сохранённым значением на всех двенадцати местах, где оно встречается в файле (шапка + одиннадцатьsourceSha256) — «одно число, один источник» восстановлено: до правки расходились ровно эти же двенадцать вхождений с прежним неверным значением. imageSha256— не тронуты, соответствует заявлению «PNG не менялись».- Трейлеры
Issue: #673/User-Visible: noна исправляющем коммите корректны и соответствуют характеру правки (метаданные, не поведение). - Дельта не расширяет и не сужает скоуп: единственный файл, единственная причина изменения.
Находки
Нет. Единственная находка r1 (Medium, docs/images/screenshots.json) закрыта и подтверждена исполнением, не со слов автора. High: 0, Medium: 0.
Чего не проверял
- Повторный полный разбор механизма задачи (перенос сцен, тест, мутант, baseline, golden:verify) — не требовался: дельта их не касается, они разобраны и подтверждены исполнением в r1 (см. «Унаследовано из r1»).
pytest tests_backend,npm run invariants, performance-профили — как и в r1: вне AC этой задачи, дельта не трогает Python/геометрию.- Реальный повторный WSL-захват кадров — не требовался в этом раунде: правка
не меняла ни один PNG (
imageSha256идентичны), только метаданные отпечатка исходников.
Вердикт
Зелёный. Находка r1 (Medium, устаревший sourceFingerprint) закрыта и
подтверждена независимым пересчётом и строгим прогоном check-docs.mjs
лично, а не заявлением автора. High: 0, Medium: 0. Цикл не образуется.
Материал раунда
- Ветка:
issue/673-stage6-golden, коммит247540346965— ребейз его осиротит, и это нормально: ниже якоря, которые ребейз не меняет. - Дерево материала:
74d76079b3ba59c93e8838b55a6f3913c37ac81bgit log --all --format='%H %T' | grep 74d76079b3ba - Тело issue:
2d5e8509154786e88d54451c677aae851abbbb856cf4fef150eeb92d232af154 - Вердикт конвейера:
green· High 0