feat(retry): also retry a step the runner's resolver failed #17

Merged
Cody Bryant merged 1 commit from feat/retry-transient-network-failures into main 2026-09-16 07:41:55 -07:00
Owner

Observed on whiskerless run 35055059591: brew test bootstrapped Homebrew's Ruby harness and the macOS runner could not resolve rubygems.org. The failure landed in one of our named steps, so the step-name rule refused the retry and the run stayed red until Renovate pushed again.

The discriminator now also reads each failed job's log. A step of ours is retryable only when its closing lines, bounded to its own timestamps with boundary seconds excluded, carry an exact resolver-failure spelling AND name a host CI is known to reach. Tests pin the refusals: a log printed by another step, a resolver error the step survived, a typo'd hostname, timeouts and refusals, a missing log, and a genuine failure elsewhere in the run.

Consumers need gh api --allow-escape-sequences .../jobs/<id>/logs per failed job and to pass the logs directory; that lands with the pin bump in each.

Observed on whiskerless run 35055059591: `brew test` bootstrapped Homebrew's Ruby harness and the macOS runner could not resolve rubygems.org. The failure landed in one of our named steps, so the step-name rule refused the retry and the run stayed red until Renovate pushed again. The discriminator now also reads each failed job's log. A step of ours is retryable only when its closing lines, bounded to its own timestamps with boundary seconds excluded, carry an exact resolver-failure spelling AND name a host CI is known to reach. Tests pin the refusals: a log printed by another step, a resolver error the step survived, a typo'd hostname, timeouts and refusals, a missing log, and a genuine failure elsewhere in the run. Consumers need `gh api --allow-escape-sequences .../jobs/<id>/logs` per failed job and to pass the logs directory; that lands with the pin bump in each.
feat(retry): also retry a step the runner's resolver failed (a DNS outage inside brew test left a run red that nothing in the repo could have prevented)
All checks were successful
CI / Shell scripts (pull_request) Successful in 8s
CI / Lint and test the standard's own code (pull_request) Successful in 35s
CI / The standard can actually be vendored (pull_request) Successful in 19s
a7c4eef2b0
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
SisyphusMD/project-standard!17
No description provided.