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
compose-pr: retry gh pr create with backoff and guard resilience (#4203)
## Summary
Add bounded shell-level retry around the Step 5 `gh pr create` command
in `src/autoskillit/skills_extended/compose-pr/SKILL.md`. The retry runs
only after `gh auth status` has passed, preserves the existing `pr_url =
...` output contract, retries only transient API or network failures,
and keeps the PR body closing-issue guard effective for the new command
shape. The remediation pass keeps HTTP 429 and secondary rate-limit
responses retryable, keeps `compose_pr_body_guard.py` effective for the
actual Step 5 `PR_CREATE_BODY` command shape, and reports the final
executed attempt's stderr when transient retries are exhausted. Step 5
success is defined by capturing or recovering a PR URL, not by `gh pr
create` returning exit code 0 alone. The empty `pr_url =` success path
remains reserved for Step 4's `gh auth status` preflight when GitHub CLI
is unavailable or unauthenticated.
<details>
<summary>Individual Group Plans</summary>
### Group 1: Original retry plan
Add bounded shell-level retry around the Step 5 `gh pr create` command
in
[SKILL.md](/home/talon/projects/autoskillit-runs/impl-20260707-054510-064511/src/autoskillit/skills_extended/compose-pr/SKILL.md).
The retry should apply only after `gh auth status` has passed, preserve
the existing `pr_url = ...` output contract, retry only transient API or
network failures, and keep the PR body closing-issue guard effective for
the new command shape.
### Group 2: Remediation plan
Remediate the remaining `compose-pr` `gh pr create` retry gaps
identified by audit-impl. The implementation must keep HTTP 429 and
secondary rate-limit responses retryable, keep
`compose_pr_body_guard.py` effective for the actual Step 5
`PR_CREATE_BODY` command shape, and report the final executed attempt's
stderr when transient retries are exhausted.
Step 5 success must be defined by capturing or recovering a PR URL, not
by `gh pr create` returning exit code 0 alone. The empty `pr_url =`
success path remains reserved for Step 4's `gh auth status` preflight
when GitHub CLI is unavailable or unauthenticated.
</details>
Closes#3987
## Implementation Plan
Plan files:
-
`/home/talon/projects/autoskillit-runs/impl-20260707-054510-064511/.autoskillit/temp/make-plan/compose_pr_gh_pr_create_retry_plan_2026-07-07_060736.md`
-
`/home/talon/projects/autoskillit-runs/impl-20260707-054510-064511/.autoskillit/temp/make-plan/compose_pr_retry_remediation_plan_2026-07-07_071159.md`
🤖 Generated with [Claude Code](https://claude.com/claude-code) via
AutoSkillit
<!-- autoskillit:pipeline-signature
steps=prepare_pr,run_arch_lenses,compose_pr,annotate_pr_diff,review_pr
-->
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
0 commit comments