From 6276d810b65db9dab45471058ad92e3a9296f0a5 Mon Sep 17 00:00:00 2001 From: woksin Date: Tue, 25 Aug 2026 22:18:07 +0200 Subject: [PATCH 1/2] chore: add job timeouts and pull request concurrency to workflows Jobs had no timeout-minutes, so a hung job could hold one of the organization's 20 shared hosted-runner slots for the 6 hour default - a contributor to the 2026-08-25 runner starvation. Verification workflows triggered by pull requests also lacked a concurrency group, so rapid successive pushes stacked duplicate runs instead of cancelling stale ones. Rules applied: quick checks 15 min, builds 30 min, publish/release 60 min, integration/benchmarks 120 min; cancel-in-progress only on pull-request verification workflows, never on publish, release or deploy workflows. --- .github/workflows/build.yml | 1 + .github/workflows/markdown-verification.yml | 1 + .github/workflows/publish.yml | 2 ++ .github/workflows/verify-semver-label.yml | 1 + 4 files changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 34b18b5..565567d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,6 +20,7 @@ jobs: quality: name: Python ${{ matrix.python-version }} runs-on: ubuntu-latest + timeout-minutes: 30 strategy: fail-fast: false matrix: diff --git a/.github/workflows/markdown-verification.yml b/.github/workflows/markdown-verification.yml index b36f014..4d131b7 100644 --- a/.github/workflows/markdown-verification.yml +++ b/.github/workflows/markdown-verification.yml @@ -20,6 +20,7 @@ permissions: jobs: markdown-lint: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@v7 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 281c80e..7aa37e3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,6 +10,7 @@ permissions: jobs: build: runs-on: ubuntu-latest + timeout-minutes: 60 steps: - name: Checkout @@ -39,6 +40,7 @@ jobs: publish: needs: build runs-on: ubuntu-latest + timeout-minutes: 60 environment: pypi permissions: id-token: write diff --git a/.github/workflows/verify-semver-label.yml b/.github/workflows/verify-semver-label.yml index e8274ad..2b23bca 100644 --- a/.github/workflows/verify-semver-label.yml +++ b/.github/workflows/verify-semver-label.yml @@ -16,6 +16,7 @@ permissions: jobs: verify: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - name: Require exactly one release disposition label env: From 06c3609a0ce679f6253bd50580b1b244dc2acd30 Mon Sep 17 00:00:00 2001 From: woksin Date: Tue, 25 Aug 2026 22:29:22 +0200 Subject: [PATCH 2/2] chore: retrigger checks (semver label was added after the gate first ran)