diff --git a/.github/workflows/call-occ-preflight.yml b/.github/workflows/call-occ-preflight.yml index 82e553b0e7..a5b34455b6 100644 --- a/.github/workflows/call-occ-preflight.yml +++ b/.github/workflows/call-occ-preflight.yml @@ -21,8 +21,6 @@ on: pull_request: branches: [main, dev, "hotfix/**"] types: [opened, synchronize, reopened, ready_for_review] - merge_group: - types: [checks_requested] concurrency: # OMN-13949: cancel superseded PR runs to free saturated runners. merge_group diff --git a/.github/workflows/check-handshake.yml b/.github/workflows/check-handshake.yml index 9f632659cc..5e5dc288e5 100644 --- a/.github/workflows/check-handshake.yml +++ b/.github/workflows/check-handshake.yml @@ -5,7 +5,6 @@ on: branches: [main, develop] pull_request: branches: [main, dev, develop] - merge_group: workflow_dispatch: concurrency: diff --git a/.github/workflows/check-sibling-compat.yml b/.github/workflows/check-sibling-compat.yml index 193dabb2ff..b2e9945d3a 100644 --- a/.github/workflows/check-sibling-compat.yml +++ b/.github/workflows/check-sibling-compat.yml @@ -13,7 +13,6 @@ on: paths: - 'pyproject.toml' - 'uv.lock' - merge_group: workflow_dispatch: concurrency: diff --git a/.github/workflows/compose-config-lint.yml b/.github/workflows/compose-config-lint.yml index 884d9c4423..430429e5d8 100644 --- a/.github/workflows/compose-config-lint.yml +++ b/.github/workflows/compose-config-lint.yml @@ -18,7 +18,6 @@ on: - "scripts/lint_compose_dangling_deps.py" - "tests/scripts/test_lint_compose_dangling_deps.py" - ".github/workflows/compose-config-lint.yml" - merge_group: workflow_dispatch: concurrency: diff --git a/.github/workflows/dispatch-parity-gate.yml b/.github/workflows/dispatch-parity-gate.yml index 66bcd72001..5df630e9b2 100644 --- a/.github/workflows/dispatch-parity-gate.yml +++ b/.github/workflows/dispatch-parity-gate.yml @@ -36,7 +36,6 @@ on: - "tests/fixtures/dispatch_parity/**" - "tests/integration/runtime/test_dispatch_selection_parity.py" - ".github/workflows/dispatch-parity-gate.yml" - merge_group: workflow_dispatch: concurrency: diff --git a/.github/workflows/env-parity.yml b/.github/workflows/env-parity.yml index acae2a5a2f..d774db7d9c 100644 --- a/.github/workflows/env-parity.yml +++ b/.github/workflows/env-parity.yml @@ -13,7 +13,6 @@ on: paths: - "docker/docker-compose*.yml" - "tests/ci/test_env_parity.py" - merge_group: workflow_dispatch: concurrency: diff --git a/.github/workflows/fresh-deploy-fitness.yml b/.github/workflows/fresh-deploy-fitness.yml index 0f8ecee7fe..a619cba998 100644 --- a/.github/workflows/fresh-deploy-fitness.yml +++ b/.github/workflows/fresh-deploy-fitness.yml @@ -30,7 +30,6 @@ on: branches: [main, dev] push: branches: [main] - merge_group: concurrency: # OMN-13949: cancel superseded PR runs to free saturated runners. merge_group diff --git a/.github/workflows/lane-census-staleness.yml b/.github/workflows/lane-census-staleness.yml index beac7dcba3..265797e5c3 100644 --- a/.github/workflows/lane-census-staleness.yml +++ b/.github/workflows/lane-census-staleness.yml @@ -41,7 +41,6 @@ on: - "scripts/check_lane_census_age.py" - "scripts/check_lane_env_drift.py" - "scripts/generate_claude_lane_block.py" - merge_group: workflow_dispatch: inputs: max_age_days: diff --git a/.github/workflows/no-bare-compose-teardown.yml b/.github/workflows/no-bare-compose-teardown.yml index 48ef6d587b..ed46b97a22 100644 --- a/.github/workflows/no-bare-compose-teardown.yml +++ b/.github/workflows/no-bare-compose-teardown.yml @@ -14,7 +14,6 @@ name: No bare compose teardown (OMN-13886) on: pull_request: - merge_group: push: branches: [dev, main] diff --git a/.github/workflows/node-migration-sync.yml b/.github/workflows/node-migration-sync.yml index 5875850c21..be01980d44 100644 --- a/.github/workflows/node-migration-sync.yml +++ b/.github/workflows/node-migration-sync.yml @@ -24,7 +24,6 @@ on: branches: [main, dev] push: branches: [main] - merge_group: concurrency: # OMN-13949: cancel superseded PR runs to free saturated runners. merge_group diff --git a/.github/workflows/runner-disk-preflight.yml b/.github/workflows/runner-disk-preflight.yml index 4621fd94cf..c26ceb24b7 100644 --- a/.github/workflows/runner-disk-preflight.yml +++ b/.github/workflows/runner-disk-preflight.yml @@ -31,7 +31,6 @@ on: branches: [main, dev] pull_request: branches: [main, dev] - merge_group: workflow_dispatch: inputs: warn_gb: diff --git a/.github/workflows/runner-routing-audit.yml b/.github/workflows/runner-routing-audit.yml index 7c1ef08cda..34e0e46d1c 100644 --- a/.github/workflows/runner-routing-audit.yml +++ b/.github/workflows/runner-routing-audit.yml @@ -11,7 +11,6 @@ on: - "config/runner_routing_policy.yaml" - "scripts/audit-runner-routing.py" - ".github/workflows/runner-routing-audit.yml" - merge_group: schedule: - cron: "17 * * * *" workflow_dispatch: diff --git a/.github/workflows/skill-node-mapping-sync.yml b/.github/workflows/skill-node-mapping-sync.yml index a9824c0b9e..81ee8048eb 100644 --- a/.github/workflows/skill-node-mapping-sync.yml +++ b/.github/workflows/skill-node-mapping-sync.yml @@ -30,7 +30,6 @@ on: branches: [main, dev] push: branches: [main] - merge_group: concurrency: # OMN-13949: cancel superseded PR runs to free saturated runners. merge_group diff --git a/.github/workflows/url-authority-gate.yml b/.github/workflows/url-authority-gate.yml index 596365a413..809c51a385 100644 --- a/.github/workflows/url-authority-gate.yml +++ b/.github/workflows/url-authority-gate.yml @@ -29,14 +29,6 @@ on: branches: [main, dev] merge_group: -env: - # OMN-14017: this workflow runs a raw `uv sync` / `uv run --with git+https` - # (not the hardened setup-python-uv composite), which otherwise inherits uv's - # 30s default and fails HARD on the first PyPI/git timeout under fleet egress - # saturation (WS-F). Match the composite's 600s so downloads ride out - # contention. Propagates to every uv invocation in the job. - UV_HTTP_TIMEOUT: "600" - concurrency: # OMN-13949: cancel superseded PR runs to free saturated runners. merge_group # entries carry a unique github.ref, so queue entries never cross-cancel. @@ -46,6 +38,9 @@ concurrency: permissions: contents: read +env: + UV_HTTP_TIMEOUT: "600" + jobs: occ-preflight: # self-gating-ok: centralized OCC preflight reusable is the canonical cross-repo gate for non-OCC repositories. diff --git a/.github/workflows/validate-validator-requirements.yml b/.github/workflows/validate-validator-requirements.yml index 52a07caa47..752d13a93b 100644 --- a/.github/workflows/validate-validator-requirements.yml +++ b/.github/workflows/validate-validator-requirements.yml @@ -9,7 +9,6 @@ on: branches: [main, dev] pull_request: branches: [main, dev] - merge_group: workflow_dispatch: env: @@ -26,6 +25,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +env: + UV_HTTP_TIMEOUT: "600" + jobs: occ-preflight: # self-gating-ok: centralized OCC preflight reusable is the canonical cross-repo gate for non-OCC repositories. diff --git a/.github/workflows/validator-runtime-profiles.yml b/.github/workflows/validator-runtime-profiles.yml index 1bfc74b846..b6c6877963 100644 --- a/.github/workflows/validator-runtime-profiles.yml +++ b/.github/workflows/validator-runtime-profiles.yml @@ -24,8 +24,6 @@ on: branches: [main, develop, dev, "hotfix/**"] pull_request: branches: [main, develop, dev] - merge_group: - branches: [main, develop, dev] env: PYTHON_VERSION: "3.12" diff --git a/tests/ci/test_runner_disk_preflight.py b/tests/ci/test_runner_disk_preflight.py index 7221e662c7..229afa0219 100644 --- a/tests/ci/test_runner_disk_preflight.py +++ b/tests/ci/test_runner_disk_preflight.py @@ -72,8 +72,8 @@ def test_preflight_job_has_distinct_name() -> None: ) -def test_preflight_workflow_triggers_on_pr_and_push() -> None: - """Preflight must run on every PR and push so it always provides a check. +def test_preflight_workflow_triggers_on_pr_push_and_manual_only() -> None: + """Preflight must run on PR and push, without rejoining merge_group fanout. Note: PyYAML parses the YAML 'on:' key as Python True (YAML boolean alias). We check both the canonical string form and the boolean form for robustness. @@ -85,7 +85,11 @@ def test_preflight_workflow_triggers_on_pr_and_push() -> None: assert isinstance(triggers, dict) assert "pull_request" in triggers, "Must trigger on pull_request events" assert "push" in triggers, "Must trigger on push events" - assert "merge_group" in triggers, "Must trigger on merge_group events" + assert "workflow_dispatch" in triggers, "Must support manual dispatch" + assert "merge_group" not in triggers, ( + "runner-disk-preflight is intentionally excluded from merge_group fanout; " + "required merge-queue verdicts are handled by the aggregate required checks." + ) def test_preflight_step_emits_runner_disk_annotation() -> None: