From 3daea2308e7a329c32b3eee329543bf1bb78a5ee Mon Sep 17 00:00:00 2001 From: Martin Vogel Date: Mon, 27 Jul 2026 08:58:06 +0200 Subject: [PATCH] ci(smoke): 30-minute smoke job budget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v4's PASSING smoke legs already ran 12-14 minutes against the 15-min timeout; v5 lost 13 green-path jobs to that wall (GitHub reports job timeouts as 'cancelled', zero real failures). The unified smoke legitimately runs more than the pre-unification one — artifact mode, real download/update phases, a Phase 15 that actually executes. Budget doctrine (see _soak.yml, violated twice there historically): the timeout sits above the worst case with headroom. Signed-off-by: Martin Vogel --- .github/workflows/_smoke.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/_smoke.yml b/.github/workflows/_smoke.yml index 763fe3867..26bb56795 100644 --- a/.github/workflows/_smoke.yml +++ b/.github/workflows/_smoke.yml @@ -92,7 +92,12 @@ jobs: fail-fast: false matrix: ${{ fromJSON(needs.setup-matrix.outputs.unix) }} runs-on: ${{ matrix.os }} - timeout-minutes: 15 + # 30, not 15: the unified smoke legitimately runs MORE (artifact mode, + # real download/update phases, a Phase 15 that actually executes), and + # v4's PASSING legs already took 12-14 min — v5 lost 13 green-path jobs + # to the 15-min wall (GitHub reports job timeouts as 'cancelled'). + # Budget doctrine: the timeout sits above the worst case, twice over. + timeout-minutes: 30 steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -168,7 +173,12 @@ jobs: fail-fast: false matrix: ${{ fromJSON(needs.setup-matrix.outputs.windows) }} runs-on: ${{ matrix.os }} - timeout-minutes: 15 + # 30, not 15: the unified smoke legitimately runs MORE (artifact mode, + # real download/update phases, a Phase 15 that actually executes), and + # v4's PASSING legs already took 12-14 min — v5 lost 13 green-path jobs + # to the 15-min wall (GitHub reports job timeouts as 'cancelled'). + # Budget doctrine: the timeout sits above the worst case, twice over. + timeout-minutes: 30 steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -270,7 +280,12 @@ jobs: fail-fast: false matrix: ${{ fromJSON(needs.setup-matrix.outputs.portable) }} runs-on: ${{ matrix.runner }} - timeout-minutes: 15 + # 30, not 15: the unified smoke legitimately runs MORE (artifact mode, + # real download/update phases, a Phase 15 that actually executes), and + # v4's PASSING legs already took 12-14 min — v5 lost 13 green-path jobs + # to the 15-min wall (GitHub reports job timeouts as 'cancelled'). + # Budget doctrine: the timeout sits above the worst case, twice over. + timeout-minutes: 30 steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0