From a72f5274ca4d73f6d6bf4a733c80409f06fd5be4 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 10 Sep 2026 09:34:41 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20main=20keeps=20its=20own=20validate.yml?= =?UTF-8?q?=20=E2=80=94=20only=20process.yml=20and=20mutation-gate.yml=20a?= =?UTF-8?q?re=20mirrored?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirroring validate.yml into main (e9638977, #510) left the branch with a workflow its own tests do not describe: main still carries the v1.73.0 test suite, which pins the pre-#510 `changed_mutants` condition, so every push to main has been red since 09.09 15:56. Only process.yml and mutation-gate.yml must match across branches — they run from the default branch, which is why the preflight compares exactly those two; validate.yml runs from the branch under test and travels with dev on the next stable promotion. Issue: #510 User-Visible: no --- .github/workflows/validate.yml | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 8896cd3f..07dbe1c2 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -18,15 +18,9 @@ on: workflow_dispatch: inputs: full: - description: 'Полный набор: смоки, golden, performance_smoke, мутанты по диффу' + description: 'Полный набор: смоки, golden, performance_smoke' type: boolean default: true - # Мутанты по диффу бегут по запросу (#510): ревью-конвейер и слияние - # кандидата запускают `-f full=false -f mutants=true` на материале. - mutants: - description: 'Мутанты по диффу на этом SHA (кандидат ревью)' - type: boolean - default: false # A new push supersedes an unfinished validation for the same branch or PR. # Exact-SHA release gates never depend on an obsolete commit. @@ -224,10 +218,10 @@ jobs: unknown_inputs: ${{ steps.classify.outputs.unknown_inputs }} # Тяжёлые job только на кандидате/по кнопке/на PR (#479), см. шаг heavy. heavy: ${{ steps.heavy.outputs.heavy }} - mutants_requested: ${{ steps.heavy.outputs.mutants_requested }} # #510 base: ${{ steps.base.outputs.base }} - # `base` — до какого коммита классифицировать файлы ветки (#387), - # `range_base` — от какого судить диапазон на dev (#388). + # Разные вещи под разными именами намеренно: `base` — до какого коммита + # классифицировать файлы ветки (#387), `range_base` — от какого судить + # диапазон на dev (#388): общее имя — чужая база у потребителя. range_base: ${{ steps.base.outputs.range_base }} steps: # `git diff --name-only` содержимого файлов не читает вовсе, поэтому @@ -247,7 +241,6 @@ jobs: EVENT_NAME: ${{ github.event_name }} HEAD_MESSAGE: ${{ github.event.head_commit.message }} FULL_INPUT: ${{ inputs.full }} - MUTANTS_INPUT: ${{ inputs.mutants }} run: node scripts/classify-changes.mjs --heavy | tee -a "$GITHUB_OUTPUT" - id: base if: github.event_name != 'pull_request' @@ -483,17 +476,10 @@ jobs: # что и остальные гейты ветки (#387/#388). Релизный диапазон всё же может # задеть сотню свидетелей, поэтому #480 делит тот же набор на три # детерминированных непересекающихся шарда вместо ослабления проверки. - # С #510 job бежит не на каждом пуше, а на кандидате: ревью-конвейер и - # слияние кандидата запускают Validate по кнопке с `mutants=true` на - # материале, ночной прогон/PR/кандидат беты берут её сами. За 08–09.09 на - # промежуточных пушах она стоила 48 из 56 часов job-минут и в основном - # отменялась следующим пушем. Когда мутанты запрошены, job бежит даже при - # диффе без входов (отбор пустой, минута на checkout): гейт ревью читает - # её исход по job, и skipped был бы неотличим от «не запрашивали». changed_mutants: name: "Мутанты по диффу (${{ matrix.shard }}/3): затронутые свидетели краснеют" needs: changes - if: needs.changes.outputs.mutants_requested == 'true' + if: needs.changes.outputs.frontend == 'true' || needs.changes.outputs.backend == 'true' || needs.changes.outputs.mutants == 'true' strategy: fail-fast: false matrix: