From c544c26b666c53bca855cf1fc946263e12a8be7a Mon Sep 17 00:00:00 2001 From: Codex Date: Wed, 9 Sep 2026 21:12:20 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20mirror=20mutation-gate.yml=20from=20dev?= =?UTF-8?q?=20(#513=20=E2=80=94=20nightly=20schedule)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The schedule runs from the default branch; byte-identical to dev@fa01aa00. Issue: #513 User-Visible: no --- .github/workflows/mutation-gate.yml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) 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, а не дополняют (прецедент —