diff --git a/.github/workflows/mutation-gate.yml b/.github/workflows/mutation-gate.yml index 984bf18a..013c48a2 100644 --- a/.github/workflows/mutation-gate.yml +++ b/.github/workflows/mutation-gate.yml @@ -5,11 +5,12 @@ name: Мутационный гейт # оставшийся зелёным на сломанном коде, ничего не защищает — он лишь выглядит # защитой, и это хуже его отсутствия. # -# Прогон дорогой, поэтому он не входит в Validate и не идёт на каждый push. -# Его место — перед стабильным релизом (PROCESS.md §8) и раз в неделю по -# расписанию, чтобы дрейф тестов не копился до релиза. Дешёвая половина — -# «якоря патчей живы, guard-файлы существуют» — идёт с обычными юнитами: -# test/mutation-gate.test.mjs. +# Прогон дорогой и проверяет не продукт, а тесты, поэтому он не входит ни в +# Validate, ни в цикл разработки, ни в релизный гейт (#513, решение владельца +# 09.09): каждую ночь по расписанию, отказ — issue с отчётом (#472). +# Мутанты, задетые диффом, конвейер ревью гоняет отдельно на кандидате (#510). +# Дешёвая половина — «якоря патчей живы, guard-файлы существуют» — идёт с +# обычными юнитами: test/mutation-gate.test.mjs. # # #332: бандл собирается только мутантам с браузерным гвардом (guardNeedsBundle), # компиляция тестов в worktree стартует с тёплого test-build (инкрементальный @@ -25,14 +26,15 @@ on: required: false default: dev schedule: - # Понедельник, 05:20 UTC — до начала рабочего дня владельца. - - cron: '20 5 * * 1' + # Каждую ночь, 01:00 UTC (04:00 MSK) — после суток правок и до ночного + # полного Validate (nightly.yml, 02:30 UTC), чтобы не делить раннеры (#513). + - cron: '0 1 * * *' permissions: contents: read # Группа зависит от события (#472). Прежде она была одна на всё, и ручной -# запуск перед релизом отменял идущий по расписанию — так 24.08 погиб +# запуск (отладка гейта) отменял идущий по расписанию — так 24.08 погиб # еженедельный прогон, а отменённый в списке выглядит «не красным». Поймать # отмену изнутри нельзя: вместе с прогоном отменяются и не начавшиеся job, # включая любой репортёр. Значит отмену надо не ловить, а не допускать. @@ -111,8 +113,8 @@ jobs: if-no-files-found: warn retention-days: 30 - # Адресат у отказа (#472). Только по расписанию: ручные прогоны перед - # релизом падают по замыслу, их результат владелец смотрит сам — issue на + # Адресат у отказа (#472). Только по расписанию: ручной dispatch остаётся + # для отладки самого гейта, его результат смотрят в прогоне — issue на # каждый такой отказ был бы шумом, который снова перестанут читать. # # Права job-уровня ЗАМЕНЯЮТ права workflow, а не дополняют (прецедент —