mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 19:58:50 +00:00
Бандл собирался пятью job независимо: три шарда смоков, golden, перф-смок — каждая гоняла `bundle:sync`, то есть `tsc --noEmit` плюс rollup. Теперь его собирает `frontend` и выкладывает артефактом, остальные скачивают и раскладывают `bundle-sync.mjs`. Подмену артефакта отдельной проверкой ловить не нужно: assertFreshDemoBundle сверяет вшитый в бандл отпечаток с sourceFingerprint выкачанного дерева, и каждая браузерная job делает это перед первым кадром. `npm ci` остаётся во всех: браузерным job нужен playwright из node_modules, а не только бандл. Артефакт node_modules был бы медленнее `npm ci` с тёплым кэшем. docs, process-workflow-sync, provenance и process-gate стали шагами одной job `preflight`. Независимость сохранена намеренно: у каждого шага continue-on-error, вердикт в конце падает и перечисляет всё упавшее сразу. Прежняя запись «краснеет сам и не роняет остальные» продолжает действовать — на уровне шагов, с той же гранулярностью в логе. hacs и hassfest не тронуты: предложение сузить их до dev и тегов уже выполнено классификатором `changes` — на ветках задач они и так идут только при правке манифестов, а на dev фильтров нет намеренно (гейт беты требует, чтобы «зелёный Validate» значил одно и то же). test/validate-workflow.test.mjs закрепляет то, что в диффе строк не видно: висячая зависимость `needs` не роняет YAML, а молча пропускает job навсегда. Три мутанта проверены руками — висячая зависимость, вернувшаяся вторая сборка, шаг без continue-on-error, — каждый убит. Issue: #336 User-Visible: no