Context
While running the SwiftASB v1.0.0 release flow, the repo-owned release script created and pushed the release PR, then immediately called gh pr checks --watch. GitHub had not registered the Actions check yet, so gh returned no checks reported on the release/v1.0.0 branch and the script stopped even though CI appeared and passed a few seconds later.
This is the same class of delay that comes up around CI, PR comments, review-thread sync, release objects, package indexing, and other GitHub/server-side surfaces: the action was accepted, but the observable state was not available immediately.
Suggested Skill Guidance
- Teach release/PR/CI scripts to distinguish “state has not appeared yet” from “state appeared and failed”.
- Add configurable waits before first reads of known delayed surfaces, especially CI checks and PR comments/reviews.
- Prefer small polling helpers with explicit timeout and interval environment variables, for example
*_TIMEOUT_SECONDS and *_POLL_SECONDS.
- Log each wait so the maintainer can see that the script is intentionally waiting rather than hanging.
- Once the surface exists, hand off to the normal authoritative command, such as
gh pr checks --watch, so the real failure/pass behavior stays owned by GitHub/gh.
- On timeout, fail with a message that names the delayed surface, the PR/branch/tag, the timeout used, and likely causes such as workflow trigger mismatch, Actions disabled, or branch push failure.
Possible Implementation Pattern
For maintain-project-repo/release-style guidance, recommend a helper roughly like:
wait_for_ci_registration() {
pr_number="$1"
timeout_seconds="${CI_REGISTRATION_TIMEOUT_SECONDS:-120}"
poll_seconds="${CI_REGISTRATION_POLL_SECONDS:-5}"
elapsed_seconds=0
while :; do
check_count=$(gh pr view "$pr_number" --json statusCheckRollup --jq '.statusCheckRollup | length')
[ "$check_count" != "0" ] && return 0
[ "$elapsed_seconds" -lt "$timeout_seconds" ] || exit 1
sleep "$poll_seconds"
elapsed_seconds=$((elapsed_seconds + poll_seconds))
done
}
Then call that before gh pr checks --watch.
Related Observed Fix
SwiftASB added a local version of this after the v1.0.0 release run exposed the gap. This issue is to carry the guidance back into socket skills so future generated or maintained scripts consistently handle delayed GitHub state.
Context
While running the SwiftASB v1.0.0 release flow, the repo-owned release script created and pushed the release PR, then immediately called
gh pr checks --watch. GitHub had not registered the Actions check yet, soghreturnedno checks reported on the release/v1.0.0 branchand the script stopped even though CI appeared and passed a few seconds later.This is the same class of delay that comes up around CI, PR comments, review-thread sync, release objects, package indexing, and other GitHub/server-side surfaces: the action was accepted, but the observable state was not available immediately.
Suggested Skill Guidance
*_TIMEOUT_SECONDSand*_POLL_SECONDS.gh pr checks --watch, so the real failure/pass behavior stays owned by GitHub/gh.Possible Implementation Pattern
For maintain-project-repo/release-style guidance, recommend a helper roughly like:
Then call that before
gh pr checks --watch.Related Observed Fix
SwiftASB added a local version of this after the v1.0.0 release run exposed the gap. This issue is to carry the guidance back into
socketskills so future generated or maintained scripts consistently handle delayed GitHub state.