From e0222facd20be0b36e0df8c4a4b69af67da7202d Mon Sep 17 00:00:00 2001 From: tarikgul Date: Mon, 14 Sep 2026 10:33:44 -0400 Subject: [PATCH 1/2] ci: bound how long every job may run Fourteen of eighteen jobs set no timeout, so GitHub's six-hour default applied. A job that hangs rather than fails is the worst case: it reads as slowness, it holds the pull request, and nobody gets a signal until the day is gone. The rust job did exactly that today, sitting in post-job cleanup with every real step already green. Budgets come from the worst duration over six successful runs on the default branch, with headroom for a cold cache. Rust peaks at fourteen minutes and gets forty-five; nothing else exceeds five and gets ten, except the uniffi bindings at fifteen. These are a backstop for a hung runner, not a performance target. A job that starts legitimately approaching its budget wants the budget raised. --- .github/workflows/ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 347f520e6..5310a984a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,7 @@ jobs: rust: needs: codegen name: Rust workspace + timeout-minutes: 45 runs-on: ubuntu-latest env: RUSTFLAGS: "-D warnings" @@ -69,6 +70,7 @@ jobs: wasm-provider: name: truapi-provider (wasm browser tests) + timeout-minutes: 10 runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -90,6 +92,7 @@ jobs: licenses: name: Dependency licenses + timeout-minutes: 10 runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -103,6 +106,7 @@ jobs: codegen: name: Codegen + timeout-minutes: 10 runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -161,6 +165,7 @@ jobs: ios-bindings: name: iOS bindings (uniffi) needs: codegen + timeout-minutes: 15 runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -194,6 +199,7 @@ jobs: changes: name: Change filter + timeout-minutes: 10 runs-on: ubuntu-latest outputs: sdk_swift: ${{ steps.filter.outputs.sdk_swift }} @@ -412,6 +418,7 @@ jobs: ts-client: name: "@parity/truapi" + timeout-minutes: 10 runs-on: ubuntu-latest needs: codegen env: @@ -449,6 +456,7 @@ jobs: ts-host: name: "@parity/truapi-host" + timeout-minutes: 10 runs-on: ubuntu-latest needs: codegen env: @@ -482,6 +490,7 @@ jobs: ts-debugger: name: "@parity/truapi-debugger" + timeout-minutes: 10 runs-on: ubuntu-latest needs: codegen env: @@ -521,6 +530,7 @@ jobs: playground: name: Playground (build + lint + unit) + timeout-minutes: 10 runs-on: ubuntu-latest needs: ts-client env: @@ -574,6 +584,7 @@ jobs: explorer: name: Explorer (build + lint) + timeout-minutes: 10 runs-on: ubuntu-latest needs: ts-client env: @@ -717,6 +728,7 @@ jobs: -color release-guard: name: Release guard + timeout-minutes: 10 runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -791,6 +803,7 @@ jobs: name: Changeset guard needs: changes if: github.event_name == 'pull_request' && needs.changes.outputs.needs_changeset == 'true' + timeout-minutes: 10 runs-on: ubuntu-latest permissions: pull-requests: read @@ -823,6 +836,7 @@ jobs: ci-status: name: CI Status if: always() + timeout-minutes: 10 runs-on: ubuntu-latest # Writing the sticky summary needs more than the workflow's read-only # default. Nothing else here writes anything. From 54c89f6a745c4aad2b80cbd05b998d3a3280bb19 Mon Sep 17 00:00:00 2001 From: tarikgul Date: Mon, 14 Sep 2026 13:32:22 -0400 Subject: [PATCH 2/2] ci: tighten the rust budget from 45 to 30 minutes Forty five was too generous. Over twenty five successful runs the job sits at a p50 of 7.5 minutes with a maximum of 14.4, so thirty is a little over twice the worst case while cutting the dead time a hang can waste by a third. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5310a984a..58321baab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: rust: needs: codegen name: Rust workspace - timeout-minutes: 45 + timeout-minutes: 30 runs-on: ubuntu-latest env: RUSTFLAGS: "-D warnings"