You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Permanent transport-integrity errors can enter API rate-limit retries based on branch names #68787
Review of #68732 at commit 40c71f95ad05d3f2da56bc19e38e3f041495f7e9 found a P2 retry regression: a permanent local integrity failure is classified as transient when its branch-derived artifact path contains words such as network or timeout.
Related classifier: actions/setup/js/error_recovery.cjs:isTransientError.
Reproduction and evidence
Invoke createOrUpdatePullRequest with an assertTransportUnchanged callback that throws an actual TransportIntegrityError for /tmp/gh-aw/aw-fix-network-timeout.patch.
A reproduction accelerated timer execution while recording requested delays. It observed:
Six assertion attempts.
Zero GitHub API writes.
Five retry sleeps totaling approximately 699 seconds of requested delay.
The callback runs inside withRetry, whose message-based transient classifier matches the artifact path. A branch such as fix-typo does not produce the same classification.
Expected behavior
Transport-integrity failures must terminate immediately and must never consume API retry backoff, regardless of branch name or path text.
Suggested fix and coverage
Explicitly classify integrity errors as non-retryable using a stable error type/code rather than message text. Cover the PR creation and fallback-issue retry paths that use integrity callbacks. Add tests using real typed errors and realistic branch-derived paths containing network and timeout, asserting no retry timer and no API write.
The existing added retry test uses a generic error without a realistic path and does not cover this case. No fix was applied.
Activity
Fix safe-output transport guard regressions
Bind safe-output patch and bundle application to validated bytes (#68732