Волна 4 эпика #674. docs/testing-notes/: восемь ручных чек-листов по поверхностям и индекс удалены — ни одного отмеченного пункта, ручной фазы в PROCESS.md §2 нет. Правило #650 (пустое совпадение --test-name-pattern) перенесено в TESTING.md; пункты [manual] без автоматического свидетеля сведены в раздел «Чего не проверяет автоматика» (реальный HA, сенсорное устройство, ресурсы сервера, несколько клиентов, визуальная оценка, пользовательское содержимое). В TESTING.md снят блок чек-листов v1.43–1.44 и приложения по issue в разделе golden (#197/#249/#272/#275/#288/#261) — сцены объявлены в demo/golden/matrix.mjs. Остался реестр браузерных гвардов #659 (mutation-browser-guards.md). test/testing-notes-index.test.mjs → test/testing-doc.test.mjs: лимит 800 строк, правила #85, раздел ручных проверок и живые ссылки TESTING.md; каталог testing-notes содержит только реестр. Мутант testing-notes-index-drops-section (удалял строку индекса) → testing-doc-drops-manual-section. golden-matrix: копия 67 id сцен #242/#250 в чек-листе снята, список и способ его измерения — в demo/golden/matrix.mjs. docs/design/505-summary-panel удалён вместе с demo/capture_summary_panel_505.mjs и маршрутом /reference/ фикстуры диалога. docs/design/600-settings-dialogs: reference/, screenshots/, pairs/, ARCHIVE-README, ISSUE-FORM, OPEN-POINTS удалены; SPEC, IMPLEMENTATION-GUIDE, field-maps, ACCEPTANCE остаются; вывод capture_design_pairs_600.mjs и verify_ha_form_shell_609.mjs --capture — в artifacts/. docs/design: 68 файлов / 4,08 МБ → 13 / 0,70 МБ. README-ha-dialog-505.md → README-ha-dialog.md (путь в release-review.yml); demo/guard/README.md: запись гварда — в verify-guard.mjs, не в README. docs/design/649-25d-stage6 не тронут — пункт после стабильного v1.78.0. Issue: #681 User-Visible: no Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
Пробы гарда исключений (#404)
Здесь лежат фикстуры, которые должны падать: каждая проверяет, что гард «uncaught exception внутри карточки» умеет краснеть, а не только объявлен.
Три причины, по которым это отдельный каталог, а не demo/smoke_* и не
demo/fixtures/:
- Не
smoke_*— иначе шарды CI будут гонять заведомо красный файл и покрасят себя. - Не
demo/fixtures/— этот каталог входит в корпусsourceFingerprint(scripts/source-fingerprint.mjs), то есть каждый новый.mjsтам объявляет устаревшими закоммиченный бандл, скриншот-индекс документации и golden-индекс. Пробы гарда ни одного пикселя не касаются, платить пересъёмкой за них нечем. - Каталог, а не файл — проб несколько, и они читаются как набор.
Запускает их verify-guard.mjs; он же вызывается из job «Смоки в браузере»
и служит guard'ом мутантов в scripts/mutation-gate.mjs.
Одна проба живёт не здесь: --guard-probe у demo/benchmark_backdrop_decode.mjs
(#430). Benchmark нельзя переселить в этот каталог — его запускают руками при
рекалибровке порогов, — поэтому verify-guard.mjs умеет запускать файл выше
каталога и с аргументами. Режим --guard-probe пропускает все замеры, бросает
одно исключение внутри страницы и обязан выйти с кодом 1.
Новый benchmark, открывающий страницу Playwright, обязан получить такой же
режим и запись в verify-guard.mjs (file: '../<имя>.mjs', args: ['--guard-probe']): этого требует test/smoke-harness-contract.test.mjs, и
требует статически — потому что динамическое доказательство возможно только
там, где есть браузер. Этот README записи не заменяет.