From 9edc7d4f72315dfa9312c8ae67f7de460d2d763f Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Fri, 6 Nov 2026 03:39:49 -0500 Subject: [PATCH 1/3] ci: gate jobs get their own pool, so a path question stops blocking real work Measured on the forge rather than guessed: of 918 jobs waiting in this repository, **293 (32%) were gate jobs** -- "does this change touch it" -- and every one of them was queued on `linux`, the most contended label in the fleet (555 of the 918). A gate is `actions/checkout` plus `python3 scripts/pr-touches-paths.py`: seconds of work. They were sitting behind multi-hour Kani proofs on the same five-to-fourteen slots, and because every other job in a workflow `needs:` the gate, nothing in that workflow could start until one was picked up. The mechanism built to save runner time had become the thing filling the runner queue. This routes them to a dedicated `gate` label. Nothing else changes: the diff is **62 files, one line each**, `runs-on: linux` -> `runs-on: gate`, with no edit to any step, condition or output. Why a gate job can run anywhere, which is what makes the pool cheap: it clones and matches paths, and compiles nothing. So the label is served by hosts that cannot serve `linux` at all -- thor2-gate arm64 (NVIDIA Thor, 14 cores/122 GB), capacity 8 jetson-hub-gate x86_64, capacity 4 -- which adds 12 slots of gate throughput without taking a single slot away from real work. `gate:docker://catthehacker/ubuntu:act-22.04` resolves to each host's native architecture, so the two are interchangeable. Two providers on purpose: with one, a host going down would stall all 62 workflows at their gate. Two things were verified before the sweep, because a blind substitution would have been wrong: * The gate `name:` is followed immediately by `runs-on: linux` in 62 of 63 cases. The 63rd, `standards-build.yml:174`, is a *step* called "which workspaces this change touches", not a job -- it has no `runs-on` and is untouched. * After the change all 77 workflows still parse, and every `runs-on: gate` in the repository belongs to a job whose name is a gate. No other job moved. What this does not fix, stated plainly: the remaining 625 waiting jobs are real work, and 21 of the 22 open pull requests here were opened on one day. Taking a third of the queue out of the way makes the real jobs reachable; it does not make the fleet big enough for that rate. Co-Authored-By: Claude Opus 5 --- .github/workflows/conformance.yml | 2 +- .github/workflows/joule-moq-remote.yml | 2 +- .github/workflows/joule-moq-room.yml | 2 +- .github/workflows/joule-moq-web.yml | 2 +- .github/workflows/standards-build.yml | 2 +- .github/workflows/wai-app.yml | 2 +- .github/workflows/wai-audit.yml | 2 +- .github/workflows/wai-byte-equality.yml | 2 +- .github/workflows/wai-catalogue.yml | 2 +- .github/workflows/wai-conformance.yml | 2 +- .github/workflows/wai-energy-receipts.yml | 2 +- .github/workflows/wai-fleet.yml | 2 +- .github/workflows/wai-formal-verification.yml | 2 +- .github/workflows/wai-http.yml | 2 +- .github/workflows/wai-jpegai-e2e.yml | 2 +- .github/workflows/wai-key-proxy.yml | 2 +- .github/workflows/wai-ledger.yml | 2 +- .github/workflows/wai-neural-e2e.yml | 2 +- .github/workflows/wai-neural-gates.yml | 2 +- .github/workflows/wai-ops-gpu.yml | 2 +- .github/workflows/wai-ops-npu.yml | 2 +- .github/workflows/wai-ops.yml | 2 +- .github/workflows/wai-pack.yml | 2 +- .github/workflows/wai-quantum-cli.yml | 2 +- .github/workflows/wai-quantum-contract.yml | 2 +- .github/workflows/wai-quantum-cuda.yml | 2 +- .github/workflows/wai-quantum-dataflow.yml | 2 +- .github/workflows/wai-quantum-docs.yml | 2 +- .github/workflows/wai-quantum-dsp.yml | 2 +- .github/workflows/wai-quantum-editors.yml | 2 +- .github/workflows/wai-quantum-estimate.yml | 2 +- .github/workflows/wai-quantum-formats.yml | 2 +- .github/workflows/wai-quantum-fpga.yml | 2 +- .github/workflows/wai-quantum-hip.yml | 2 +- .github/workflows/wai-quantum-js.yml | 2 +- .github/workflows/wai-quantum-lang.yml | 2 +- .github/workflows/wai-quantum-metal.yml | 2 +- .github/workflows/wai-quantum-npu-cores.yml | 2 +- .github/workflows/wai-quantum-npu.yml | 2 +- .github/workflows/wai-quantum-opencl.yml | 2 +- .github/workflows/wai-quantum-pulse.yml | 2 +- .github/workflows/wai-quantum-py.yml | 2 +- .github/workflows/wai-quantum-qec.yml | 2 +- .github/workflows/wai-quantum-qpu.yml | 2 +- .github/workflows/wai-quantum-registry.yml | 2 +- .github/workflows/wai-quantum-service.yml | 2 +- .github/workflows/wai-quantum-sme.yml | 2 +- .github/workflows/wai-quantum-studio.yml | 2 +- .github/workflows/wai-quantum-tensor-engine.yml | 2 +- .github/workflows/wai-quantum-tensor-program.yml | 2 +- .github/workflows/wai-quantum-variational.yml | 2 +- .github/workflows/wai-quantum-vector.yml | 2 +- .github/workflows/wai-quantum-verdict.yml | 2 +- .github/workflows/wai-quantum-views.yml | 2 +- .github/workflows/wai-quantum-webgpu.yml | 2 +- .github/workflows/wai-sink-android.yml | 2 +- .github/workflows/wai-sink-swift.yml | 2 +- .github/workflows/wai-sota-vectors.yml | 2 +- .github/workflows/wai-studio.yml | 2 +- .github/workflows/wai-vector.yml | 2 +- .github/workflows/wai-web-reach.yml | 2 +- .github/workflows/wai-web-wasm.yml | 2 +- 62 files changed, 62 insertions(+), 62 deletions(-) diff --git a/.github/workflows/conformance.yml b/.github/workflows/conformance.yml index 9dc89976d..4de525a3c 100644 --- a/.github/workflows/conformance.yml +++ b/.github/workflows/conformance.yml @@ -42,7 +42,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/joule-moq-remote.yml b/.github/workflows/joule-moq-remote.yml index adf524b9b..aabe8c335 100644 --- a/.github/workflows/joule-moq-remote.yml +++ b/.github/workflows/joule-moq-remote.yml @@ -42,7 +42,7 @@ jobs: # the paths above (scripts/pr-touches-paths.py, which fails open). relevant: name: joule-moq-remote · does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/joule-moq-room.yml b/.github/workflows/joule-moq-room.yml index ebc1574ba..afd41b10a 100644 --- a/.github/workflows/joule-moq-room.yml +++ b/.github/workflows/joule-moq-room.yml @@ -88,7 +88,7 @@ jobs: # the paths above (scripts/pr-touches-paths.py, which fails open). relevant: name: joule-moq-room · does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/joule-moq-web.yml b/.github/workflows/joule-moq-web.yml index a7bb218e7..13853e778 100644 --- a/.github/workflows/joule-moq-web.yml +++ b/.github/workflows/joule-moq-web.yml @@ -194,7 +194,7 @@ jobs: # the paths above (scripts/pr-touches-paths.py, which fails open). relevant: name: joule-moq-web · does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/standards-build.yml b/.github/workflows/standards-build.yml index b42184e4b..fa1b9b542 100644 --- a/.github/workflows/standards-build.yml +++ b/.github/workflows/standards-build.yml @@ -70,7 +70,7 @@ jobs: # matrix is the entries it selects. plan: name: which workspaces this change touches - runs-on: linux + runs-on: gate outputs: include: ${{ steps.plan.outputs.include }} any: ${{ steps.plan.outputs.any }} diff --git a/.github/workflows/wai-app.yml b/.github/workflows/wai-app.yml index 930b6391e..8c7436a7e 100644 --- a/.github/workflows/wai-app.yml +++ b/.github/workflows/wai-app.yml @@ -67,7 +67,7 @@ jobs: # the paths above (scripts/pr-touches-paths.py, which fails open). relevant: name: wai-app · does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-audit.yml b/.github/workflows/wai-audit.yml index c69130b4c..0349d939a 100644 --- a/.github/workflows/wai-audit.yml +++ b/.github/workflows/wai-audit.yml @@ -46,7 +46,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-byte-equality.yml b/.github/workflows/wai-byte-equality.yml index bae9986b3..aec12c869 100644 --- a/.github/workflows/wai-byte-equality.yml +++ b/.github/workflows/wai-byte-equality.yml @@ -132,7 +132,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-catalogue.yml b/.github/workflows/wai-catalogue.yml index f7c5a56b8..c900e0ca3 100644 --- a/.github/workflows/wai-catalogue.yml +++ b/.github/workflows/wai-catalogue.yml @@ -76,7 +76,7 @@ jobs: # diff (scripts/pr-touches-paths.py, reading the list above), as wai-pack.yml explains. relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-conformance.yml b/.github/workflows/wai-conformance.yml index 650393dfb..e8e6a1b9c 100644 --- a/.github/workflows/wai-conformance.yml +++ b/.github/workflows/wai-conformance.yml @@ -145,7 +145,7 @@ jobs: # `wai/extensions/**` replaced by the paths the verifier steps' files name (--wide). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-energy-receipts.yml b/.github/workflows/wai-energy-receipts.yml index dbb581e4b..480fcae1d 100644 --- a/.github/workflows/wai-energy-receipts.yml +++ b/.github/workflows/wai-energy-receipts.yml @@ -114,7 +114,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-fleet.yml b/.github/workflows/wai-fleet.yml index a6e178948..dd38d8c1b 100644 --- a/.github/workflows/wai-fleet.yml +++ b/.github/workflows/wai-fleet.yml @@ -45,7 +45,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-formal-verification.yml b/.github/workflows/wai-formal-verification.yml index 48a5c738e..b7590e42f 100644 --- a/.github/workflows/wai-formal-verification.yml +++ b/.github/workflows/wai-formal-verification.yml @@ -95,7 +95,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-http.yml b/.github/workflows/wai-http.yml index eb07a5221..916f0dea7 100644 --- a/.github/workflows/wai-http.yml +++ b/.github/workflows/wai-http.yml @@ -109,7 +109,7 @@ jobs: # schedule has no pull-request context and runs everything. relevant: name: WAI HTTP · does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} falsify: ${{ steps.gate.outputs.falsify }} diff --git a/.github/workflows/wai-jpegai-e2e.yml b/.github/workflows/wai-jpegai-e2e.yml index 80acf783a..8887efa46 100644 --- a/.github/workflows/wai-jpegai-e2e.yml +++ b/.github/workflows/wai-jpegai-e2e.yml @@ -142,7 +142,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-key-proxy.yml b/.github/workflows/wai-key-proxy.yml index 5c4e6411e..c25ef7145 100644 --- a/.github/workflows/wai-key-proxy.yml +++ b/.github/workflows/wai-key-proxy.yml @@ -34,7 +34,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-ledger.yml b/.github/workflows/wai-ledger.yml index f412c9100..496a71af3 100644 --- a/.github/workflows/wai-ledger.yml +++ b/.github/workflows/wai-ledger.yml @@ -38,7 +38,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-neural-e2e.yml b/.github/workflows/wai-neural-e2e.yml index 245553dca..e77ba4af8 100644 --- a/.github/workflows/wai-neural-e2e.yml +++ b/.github/workflows/wai-neural-e2e.yml @@ -49,7 +49,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-neural-gates.yml b/.github/workflows/wai-neural-gates.yml index 191e36ffb..8dba153cb 100644 --- a/.github/workflows/wai-neural-gates.yml +++ b/.github/workflows/wai-neural-gates.yml @@ -121,7 +121,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-ops-gpu.yml b/.github/workflows/wai-ops-gpu.yml index 2c97e22bd..671f7ae71 100644 --- a/.github/workflows/wai-ops-gpu.yml +++ b/.github/workflows/wai-ops-gpu.yml @@ -90,7 +90,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-ops-npu.yml b/.github/workflows/wai-ops-npu.yml index 2ff435369..1a185df9e 100644 --- a/.github/workflows/wai-ops-npu.yml +++ b/.github/workflows/wai-ops-npu.yml @@ -55,7 +55,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-ops.yml b/.github/workflows/wai-ops.yml index 024e605da..f4841c898 100644 --- a/.github/workflows/wai-ops.yml +++ b/.github/workflows/wai-ops.yml @@ -82,7 +82,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-pack.yml b/.github/workflows/wai-pack.yml index b53b0138b..a898ca127 100644 --- a/.github/workflows/wai-pack.yml +++ b/.github/workflows/wai-pack.yml @@ -69,7 +69,7 @@ jobs: # `true` — a push to main runs everything, as before. relevant: name: wai-pack · does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-cli.yml b/.github/workflows/wai-quantum-cli.yml index 8c2bc37e3..f1bea7999 100644 --- a/.github/workflows/wai-quantum-cli.yml +++ b/.github/workflows/wai-quantum-cli.yml @@ -36,7 +36,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-contract.yml b/.github/workflows/wai-quantum-contract.yml index de34d70d4..b5405bd9e 100644 --- a/.github/workflows/wai-quantum-contract.yml +++ b/.github/workflows/wai-quantum-contract.yml @@ -83,7 +83,7 @@ jobs: # (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-cuda.yml b/.github/workflows/wai-quantum-cuda.yml index 33a35c4cd..f7a8abf01 100644 --- a/.github/workflows/wai-quantum-cuda.yml +++ b/.github/workflows/wai-quantum-cuda.yml @@ -51,7 +51,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-dataflow.yml b/.github/workflows/wai-quantum-dataflow.yml index a61e9d6ab..2e0e818a8 100644 --- a/.github/workflows/wai-quantum-dataflow.yml +++ b/.github/workflows/wai-quantum-dataflow.yml @@ -32,7 +32,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-docs.yml b/.github/workflows/wai-quantum-docs.yml index 007641dc8..ec3e763d8 100644 --- a/.github/workflows/wai-quantum-docs.yml +++ b/.github/workflows/wai-quantum-docs.yml @@ -58,7 +58,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-dsp.yml b/.github/workflows/wai-quantum-dsp.yml index 253598676..84ac119c4 100644 --- a/.github/workflows/wai-quantum-dsp.yml +++ b/.github/workflows/wai-quantum-dsp.yml @@ -49,7 +49,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-editors.yml b/.github/workflows/wai-quantum-editors.yml index f2f55a0c5..3cd182069 100644 --- a/.github/workflows/wai-quantum-editors.yml +++ b/.github/workflows/wai-quantum-editors.yml @@ -53,7 +53,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-estimate.yml b/.github/workflows/wai-quantum-estimate.yml index ef1f8364b..e698778d1 100644 --- a/.github/workflows/wai-quantum-estimate.yml +++ b/.github/workflows/wai-quantum-estimate.yml @@ -36,7 +36,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-formats.yml b/.github/workflows/wai-quantum-formats.yml index 19cad7c8d..8c481eedb 100644 --- a/.github/workflows/wai-quantum-formats.yml +++ b/.github/workflows/wai-quantum-formats.yml @@ -39,7 +39,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-fpga.yml b/.github/workflows/wai-quantum-fpga.yml index c15b04b4d..934b98d35 100644 --- a/.github/workflows/wai-quantum-fpga.yml +++ b/.github/workflows/wai-quantum-fpga.yml @@ -36,7 +36,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-hip.yml b/.github/workflows/wai-quantum-hip.yml index a4f7b8a73..ab52d3727 100644 --- a/.github/workflows/wai-quantum-hip.yml +++ b/.github/workflows/wai-quantum-hip.yml @@ -46,7 +46,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-js.yml b/.github/workflows/wai-quantum-js.yml index ea63e2a2b..2aa176e7b 100644 --- a/.github/workflows/wai-quantum-js.yml +++ b/.github/workflows/wai-quantum-js.yml @@ -35,7 +35,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-lang.yml b/.github/workflows/wai-quantum-lang.yml index e098dda17..a8b23677a 100644 --- a/.github/workflows/wai-quantum-lang.yml +++ b/.github/workflows/wai-quantum-lang.yml @@ -37,7 +37,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-metal.yml b/.github/workflows/wai-quantum-metal.yml index 0f09bf61d..dff399b5a 100644 --- a/.github/workflows/wai-quantum-metal.yml +++ b/.github/workflows/wai-quantum-metal.yml @@ -33,7 +33,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-npu-cores.yml b/.github/workflows/wai-quantum-npu-cores.yml index e1d6a2a76..2b224740e 100644 --- a/.github/workflows/wai-quantum-npu-cores.yml +++ b/.github/workflows/wai-quantum-npu-cores.yml @@ -42,7 +42,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-npu.yml b/.github/workflows/wai-quantum-npu.yml index f9a3cf48c..5fae83935 100644 --- a/.github/workflows/wai-quantum-npu.yml +++ b/.github/workflows/wai-quantum-npu.yml @@ -34,7 +34,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-opencl.yml b/.github/workflows/wai-quantum-opencl.yml index 365a62c83..a9e2bfc94 100644 --- a/.github/workflows/wai-quantum-opencl.yml +++ b/.github/workflows/wai-quantum-opencl.yml @@ -48,7 +48,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-pulse.yml b/.github/workflows/wai-quantum-pulse.yml index 7885a947e..cdbdad608 100644 --- a/.github/workflows/wai-quantum-pulse.yml +++ b/.github/workflows/wai-quantum-pulse.yml @@ -33,7 +33,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-py.yml b/.github/workflows/wai-quantum-py.yml index d3d834e53..567317b42 100644 --- a/.github/workflows/wai-quantum-py.yml +++ b/.github/workflows/wai-quantum-py.yml @@ -36,7 +36,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-qec.yml b/.github/workflows/wai-quantum-qec.yml index 817525814..2d8e8d477 100644 --- a/.github/workflows/wai-quantum-qec.yml +++ b/.github/workflows/wai-quantum-qec.yml @@ -39,7 +39,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-qpu.yml b/.github/workflows/wai-quantum-qpu.yml index 60e65e157..d194ee78d 100644 --- a/.github/workflows/wai-quantum-qpu.yml +++ b/.github/workflows/wai-quantum-qpu.yml @@ -36,7 +36,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-registry.yml b/.github/workflows/wai-quantum-registry.yml index b81a47c15..bc35f272f 100644 --- a/.github/workflows/wai-quantum-registry.yml +++ b/.github/workflows/wai-quantum-registry.yml @@ -34,7 +34,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-service.yml b/.github/workflows/wai-quantum-service.yml index 05e707fc9..cab24be2d 100644 --- a/.github/workflows/wai-quantum-service.yml +++ b/.github/workflows/wai-quantum-service.yml @@ -37,7 +37,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-sme.yml b/.github/workflows/wai-quantum-sme.yml index 4f49399dd..adb2b7cf9 100644 --- a/.github/workflows/wai-quantum-sme.yml +++ b/.github/workflows/wai-quantum-sme.yml @@ -35,7 +35,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-studio.yml b/.github/workflows/wai-quantum-studio.yml index 80a1866b9..0a0247b94 100644 --- a/.github/workflows/wai-quantum-studio.yml +++ b/.github/workflows/wai-quantum-studio.yml @@ -74,7 +74,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-tensor-engine.yml b/.github/workflows/wai-quantum-tensor-engine.yml index ecae048f8..e71d0e262 100644 --- a/.github/workflows/wai-quantum-tensor-engine.yml +++ b/.github/workflows/wai-quantum-tensor-engine.yml @@ -39,7 +39,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-tensor-program.yml b/.github/workflows/wai-quantum-tensor-program.yml index 9528e9b11..861beb3ef 100644 --- a/.github/workflows/wai-quantum-tensor-program.yml +++ b/.github/workflows/wai-quantum-tensor-program.yml @@ -54,7 +54,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-variational.yml b/.github/workflows/wai-quantum-variational.yml index c6c6ae01b..b9491c254 100644 --- a/.github/workflows/wai-quantum-variational.yml +++ b/.github/workflows/wai-quantum-variational.yml @@ -44,7 +44,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-vector.yml b/.github/workflows/wai-quantum-vector.yml index 268560eb3..08d94d2ac 100644 --- a/.github/workflows/wai-quantum-vector.yml +++ b/.github/workflows/wai-quantum-vector.yml @@ -41,7 +41,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-verdict.yml b/.github/workflows/wai-quantum-verdict.yml index 9c3025626..339dcff71 100644 --- a/.github/workflows/wai-quantum-verdict.yml +++ b/.github/workflows/wai-quantum-verdict.yml @@ -43,7 +43,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-views.yml b/.github/workflows/wai-quantum-views.yml index 73a512cb6..d2fff0f08 100644 --- a/.github/workflows/wai-quantum-views.yml +++ b/.github/workflows/wai-quantum-views.yml @@ -51,7 +51,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-quantum-webgpu.yml b/.github/workflows/wai-quantum-webgpu.yml index 1a6c49078..e5a3ba8f1 100644 --- a/.github/workflows/wai-quantum-webgpu.yml +++ b/.github/workflows/wai-quantum-webgpu.yml @@ -73,7 +73,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-sink-android.yml b/.github/workflows/wai-sink-android.yml index 15e49f094..c1626e29d 100644 --- a/.github/workflows/wai-sink-android.yml +++ b/.github/workflows/wai-sink-android.yml @@ -50,7 +50,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-sink-swift.yml b/.github/workflows/wai-sink-swift.yml index 7b29f2dff..27de53c29 100644 --- a/.github/workflows/wai-sink-swift.yml +++ b/.github/workflows/wai-sink-swift.yml @@ -46,7 +46,7 @@ on: jobs: relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-sota-vectors.yml b/.github/workflows/wai-sota-vectors.yml index 509877404..56630157e 100644 --- a/.github/workflows/wai-sota-vectors.yml +++ b/.github/workflows/wai-sota-vectors.yml @@ -157,7 +157,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-studio.yml b/.github/workflows/wai-studio.yml index 319a11a2d..936750fb4 100644 --- a/.github/workflows/wai-studio.yml +++ b/.github/workflows/wai-studio.yml @@ -71,7 +71,7 @@ jobs: # diff (scripts/pr-touches-paths.py, reading the list above), as wai-pack.yml explains. relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-vector.yml b/.github/workflows/wai-vector.yml index 1e9fd1ac5..69e6c51c9 100644 --- a/.github/workflows/wai-vector.yml +++ b/.github/workflows/wai-vector.yml @@ -90,7 +90,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-web-reach.yml b/.github/workflows/wai-web-reach.yml index 0b465c6a9..89d38b699 100644 --- a/.github/workflows/wai-web-reach.yml +++ b/.github/workflows/wai-web-reach.yml @@ -79,7 +79,7 @@ jobs: # build runs only when it touches them. On a push to main it answers `true`. relevant: name: wai-web reach · does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: diff --git a/.github/workflows/wai-web-wasm.yml b/.github/workflows/wai-web-wasm.yml index 8c9fe61c5..7472b3323 100644 --- a/.github/workflows/wai-web-wasm.yml +++ b/.github/workflows/wai-web-wasm.yml @@ -88,7 +88,7 @@ jobs: # `true` (scripts/pr-touches-paths.py). relevant: name: does this change touch it - runs-on: linux + runs-on: gate outputs: run: ${{ steps.gate.outputs.run }} steps: -- 2.54.0 (Apple Git-157) From bf4d7446b756fe70280ee8581900fbf881da96bd Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Fri, 6 Nov 2026 07:24:20 -0500 Subject: [PATCH 2/3] ci: re-run, after the sccache fault that failed this branch's macOS legs No change to the tree. The previous run of this branch was 244 green and 23 red, and all 23 were one infrastructure fault rather than anything here: every failing job inspected (13 of 13) died with sccache: error: failed to execute compile sccache: caused by: error reading compile response from server `tx-mbp-m4max-128` was the only one of the three `macos` runners routing compiles through sccache -- a `rustc-wrapper = "sccache"` line in its `~/.cargo/config.toml`, where `tx-dev-mac` has no sccache at all and `tx-mbp-m5max-48` has the binary and no wrapper. So a macOS job passed or failed according to which runner claimed it. Its server had wedged, and `--show-stats` reported "Mismatch of client/server versions?", which is what sccache prints whenever it cannot reach the server. The wrapper is now disabled on that host, so the three macOS runners compile identically. This commit exists only because the forge has no rerun endpoint: a tag or branch push is the only way to re-run a job. The gate change itself was already proven by that run -- all **62** gate contexts were green on the new `gate` label, and every `linux`, `linux-arm64` and wasm leg passed. Co-Authored-By: Claude Opus 5 -- 2.54.0 (Apple Git-157) From 2e2ff920cc4c42b3d2a61c056dcbcc7ab241db67 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Fri, 6 Nov 2026 13:43:24 -0500 Subject: [PATCH 3/3] ci: re-run, after removing the one linux host that could not emulate aarch64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No change to the tree. The previous run of this branch settled at 264 green and 3 red, and all three were traced to a single host rather than to anything here. `framework-32gb-0000` was added to the `linux` label earlier today. It is the only host on that label with **no QEMU binfmt handler** -- Ubuntu 26.04 dropped `qemu-user-static`, and the box never had it -- so an emulated aarch64 job landing there hands its ELF to execvp, glibc falls back to /bin/sh and the test dies with "exited abnormally", exit 2. Confirmed by runner uuid: both failing legs (`sve 2048-bit` and `matrix extension`) ran on `7049b355…` = fw32-0000-linux, while the sve 128-bit, sve 512-bit and both riscv64 legs passed on hosts that do have the handler. Job placement is a lottery, so the symptom looked like flakiness. That runner is now stopped and disabled. Every remaining `linux` host carries `qemu-user-static 1:8.2.2`, which is the exact version these workflows record as provenance (`qemu-user 8.2.2 (the host's binfmt handler)`). Installing QEMU on that host instead was rejected deliberately: 26.04 offers only 10.2.1, and running it under a label whose workflows publish "8.2.2" would make the report state a version that did not run. A false provenance string is worse than less capacity. The third failure, `macOS energy backends`, was a job whose log stops mid-compile with no error -- an interrupted run, not a verdict. It re-runs with everything else. Forgejo 16.0.6 has no usable per-job re-run (the web route returns 404 and there is no API route), so a push is the only way to re-run a job. Co-Authored-By: Claude Opus 5 -- 2.54.0 (Apple Git-157)