Skip to content

signing + tools fetch: retry the transient release-edge class - #169

Merged
ronaldtse merged 1 commit into
mainfrom
fix/sign-download-transients
Sep 16, 2026
Merged

ronaldtse merged 1 commit into
mainfrom
fix/sign-download-transients

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Two of the 0.16.24 publish's failures were GitHub release-edge transients under load, each costing a rerun cycle:

  • musl arm64/3.1.6 signing leg: gh release download … manifest.json → HTTP 500, after all five targets had already signed and converged.
  • registry: the runtime entry carries implementation: mri #166's windows build leg: ListArtifacts → intermediary 403 (the sibling matrix leg downloaded the same artifact fine).

upload_release.rb already carries a ~4.5-minute retry budget; downloads had none.

  • scripts/sign_release.rb: the executor seam re-asks the 5xx / intermediary-403 class (bounded 4 attempts, exponential backoff); deterministic failures raise immediately with the same NAMED FAILURE shape.
  • _build-platform.yml: the one direct gh release download (windows tfs CLI fetch) gets the same budget in bash.
  • Specs: retry-then-success, no-budget-on-404, full-budget-then-named — 18/18 green, rubocop clean.

@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:28 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:28 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:28 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:28 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:29 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:30 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 10:30 — with GitHub Actions Active
The 0.16.24 publish lost a musl signing leg to an HTTP 500 on a
manifest download — after every asset had already signed and converged
— and #166's windows leg to an intermediary 403. Both clear on a
re-ask; both cost a human round-trip instead.

The executor seam (every gh call in the signer rides it) now re-asks
the 5xx / intermediary-403 class with bounded backoff — deterministic
failures (404, auth, usage) still raise at once — and the workflow's
one direct gh release download gets the same budget in bash. Specs pin
the retry contract: success on re-ask, no budget spent on 404, the
full budget named on a persistent transient.
@ronaldtse
ronaldtse force-pushed the fix/sign-download-transients branch from 39ca505 to 6ccfb41 Compare September 16, 2026 11:16
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:18 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:18 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:18 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:18 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:19 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:19 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:19 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:19 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:21 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:21 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:21 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:21 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:23 — with GitHub Actions Active
@ronaldtse
ronaldtse deployed to windows-signing September 16, 2026 11:23 — with GitHub Actions Active
@ronaldtse
ronaldtse merged commit d2fa088 into main Sep 16, 2026
46 checks passed
@ronaldtse
ronaldtse deleted the fix/sign-download-transients branch September 16, 2026 12:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants