From b3d9b80a199bc8251a87c7a072099b91d3b45d24 Mon Sep 17 00:00:00 2001 From: hellices Date: Thu, 22 Oct 2026 20:46:56 +0900 Subject: [PATCH 1/2] ci: give the test job 60 minutes The test job runs the full suite under coverage after lint and type checks, all within 45 minutes. On Python 3.12 that took 39-46 minutes: in the last 25 CI runs the 3.12 job took 43 minutes or more ten times, and it was cut off at the limit with no failures on 9793c5c4, on #446's 3dce28c3 (twice, at 99%), and on main at 0648d1b6 (at 93%, on korvid-runners). A cancelled required check blocks a pull request until someone reruns it, which an outside contributor cannot do. Raise the limit to 60 minutes and update the pinned value and the quality-gates note. Windows keeps 45; it finishes in about 30. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/ci.yml | 3 ++- docs/dev/quality-gates.md | 2 +- tests/test_ci_workflow.py | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) 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, From b4532b22da7ecbb844aeef01db492dd706e7e032 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 03:33:53 +0000 Subject: [PATCH 2/2] build: relock opentelemetry-api Regenerated by the Relock workflow, which runs on a runner with direct PyPI access. Locking is not possible from a machine behind a TLS-intercepting mirror: the resulting lock names the mirror, and the repository rejects that. (cherry picked from commit c5e3a4ea4621c8299d24fc150d6617cf68cd6978) --- uv.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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]]