diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98c82cd66..8a969e540 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -138,7 +138,8 @@ jobs: test: needs: changes runs-on: ${{ needs.changes.outputs.runner == 'korvid-runners' && 'korvid-runners' || 'ubuntu-latest' }} - timeout-minutes: 45 + # The full suite under coverage takes 39-46 minutes on Python 3.12 (#454). + timeout-minutes: 60 strategy: matrix: python-version: ["3.11", "3.12", "3.13"] diff --git a/docs/dev/quality-gates.md b/docs/dev/quality-gates.md index 6908a81cc..abf7128e3 100644 --- a/docs/dev/quality-gates.md +++ b/docs/dev/quality-gates.md @@ -169,7 +169,7 @@ only for this choice, run even if it fails, falling back to `ubuntu-latest`, because a required job skipped by a failed `needs` reports as passing. CodeQL keeps `ubuntu-latest` for every pull request. Change classification and dependency review always use `ubuntu-latest`; Windows always uses -`windows-latest`. Every job also has an explicit 10–45 minute deadline so a +`windows-latest`. Every job also has an explicit 10–60 minute deadline so a wedged runner cannot consume capacity indefinitely. That selection routes runs that are already allowed to start; it is not what diff --git a/tests/test_ci_workflow.py b/tests/test_ci_workflow.py index f6651ff92..1e05ee83e 100644 --- a/tests/test_ci_workflow.py +++ b/tests/test_ci_workflow.py @@ -72,7 +72,8 @@ WINDOWS_SEED = "${{ github.run_id }}" CI_JOB_TIMEOUTS = { "changes": 10, - "test": 45, + # The full suite under coverage takes 39-46 minutes on Python 3.12 (#454). + "test": 60, "windows-test": 45, "pre-commit": 20, "security": 15, diff --git a/uv.lock b/uv.lock index ffdc91885..0695a302b 100644 --- a/uv.lock +++ b/uv.lock @@ -2113,14 +2113,14 @@ wheels = [ [[package]] name = "opentelemetry-api" -version = "1.44.0" +version = "1.45.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ee/8b/aa9e2d8b8dfa7c946f7dec5d1f8f6ba8eca062f43509a06bdb5ce93d26c0/opentelemetry_api-1.44.0.tar.gz", hash = "sha256:67647e5e9566edcf421166fdf022b3537f818635daa852b289e34604dc6fb33a", size = 72406, upload-time = "2026-07-16T15:25:32.678Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/02/6e0ae9cc61bd3169d401077b507b3ebc344745171e1051ab430be012dcd9/opentelemetry_api-1.45.1.tar.gz", hash = "sha256:aa38ed19bcc084ba42782a73255b3582283eced7ad6dddbd6695189e69adfb75", size = 72804, upload-time = "2026-10-06T17:32:58.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/6f/a04e900f465ff3221ccc395522503e2d10e79fa21f2723c8e177aae1e0d1/opentelemetry_api-1.44.0-py3-none-any.whl", hash = "sha256:94b98c893a91b88657eaac1e3ba89618cdb85be6918196705354f34728b2cdef", size = 60018, upload-time = "2026-07-16T15:25:11.657Z" }, + { url = "https://files.pythonhosted.org/packages/1e/41/f7dcf80b81ee8e71c1a2b59f14208bc723edbd89ed027a73b175abf6348e/opentelemetry_api-1.45.1-py3-none-any.whl", hash = "sha256:b31553efa588ae44bc306f863c785c5333a9ecc091248c6ee68b4b6c87fdedfb", size = 60256, upload-time = "2026-10-06T17:32:33.506Z" }, ] [[package]]