From e66f2d92fdff4bdbc543d352c678db782d9baa4f Mon Sep 17 00:00:00 2001 From: fullsend-code <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:47:10 +0000 Subject: [PATCH] fix(#2348): stop swallowing gh pr create stderr in post-code.sh Replace the command substitution with 2>&1 redirect on the gh pr create call with the if-! pattern already used in reconcile-repos.sh. Previously, when gh pr create failed, stderr (containing the API error like 403 or 422) was captured into the PR_URL variable instead of flowing to the workflow logs, making failures impossible to debug. The new pattern lets stderr print to the log naturally while still capturing the PR URL on success. On failure, it emits a GitHub Actions error annotation and exits non-zero. Note: pre-commit and make lint could not run in the sandbox due to shellcheck-py failing to download (network restriction). The post-script runs an authoritative pre-commit check on the runner. bash -n syntax check passed. Closes #2348 --- internal/scaffold/fullsend-repo/scripts/post-code.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/scaffold/fullsend-repo/scripts/post-code.sh b/internal/scaffold/fullsend-repo/scripts/post-code.sh index 715e5380a5..c6e839ab18 100755 --- a/internal/scaffold/fullsend-repo/scripts/post-code.sh +++ b/internal/scaffold/fullsend-repo/scripts/post-code.sh @@ -406,13 +406,15 @@ Closes #${ISSUE_NUMBER} - [x] Pre-commit hooks passed (authoritative run on runner) - [x] Tests ran inside sandbox" -PR_URL="$(gh pr create \ +if ! PR_URL=$(gh pr create \ --repo "${REPO_FULL_NAME}" \ --head "${BRANCH}" \ --base "${TARGET_BRANCH}" \ --title "${PR_TITLE}" \ - --body "${PR_BODY}" \ - 2>&1)" + --body "${PR_BODY}"); then + echo "::error::Failed to create PR: see above for details" + exit 1 +fi echo "PR created: ${PR_URL}" echo "pr_url=${PR_URL}" >> "${GITHUB_OUTPUT:-/dev/null}"