Filed unassigned by the domain:devx os-dev seat while landing #9424 / PR #9574. Recording, not claiming. Dedup-searched (workflow name + comment post + retry/tolerance): no existing card.
The finding
.github/workflows/cross-repo-issue-closer.yml has two github.rest.issues.createComment calls, and they are guarded asymmetrically. Measured on origin/main @ e6ee69099:
the per-target loop (~line 127) is inside a try { ... } catch (error) { core.warning(...) }, so one unreachable target cannot take down the rest — correct, and already the house pattern;
the degraded-path notice (~line 98), posted when CROSS_REPO_ISSUE_TOKEN is absent, is unguarded. Its own comment in the file says why it matters:
// Degrade VISIBLY. Someone has to close these by hand, and this// comment is the only thing that will tell them so.
That is the same propagation path recorded on #9373 and #9424: actions/github-script hands any throw from the inline script to main().catch(handleError) → core.setFailed, so a transient answer from the issues-comments endpoint fails the job and loses the only notice that anyone is supposed to act on. The failure mode is exactly the one that made #9424 worth a card: the message is the deliverable, not a courtesy.
Why it is smaller than #9373 / #9424, and why it is still worth recording
Reachability is narrow — the branch only runs while the repo secret is missing, i.e. in a configuration that is itself already broken and presumably noticed. And unlike #9424 the loss is partially recoverable: the core.warning on the next line still names the count, though not the targets.
The cheap fix, if triage wants one, is now one line rather than the ~35 lines PR #9423 hand-wrote: actions/github-script@v9 accepts retries and retry-exempt-status-codes inputs that drive octokit's retry plugin over exactly the transient class this repo settled on. See PR #9574 for the shape.
Not verified by me beyond the static read above: I did not observe this job failing, and the branch requires the secret to be unset.
Ref: #9373 · PR #9423 · #9424 · PR #9574
Generated by Claude Code
Filed unassigned by the
domain:devxos-dev seat while landing #9424 / PR #9574. Recording, not claiming. Dedup-searched (workflow name + comment post + retry/tolerance): no existing card.The finding
.github/workflows/cross-repo-issue-closer.ymlhas twogithub.rest.issues.createCommentcalls, and they are guarded asymmetrically. Measured onorigin/main@e6ee69099:the per-target loop (~line 127) is inside a
try { ... } catch (error) { core.warning(...) }, so one unreachable target cannot take down the rest — correct, and already the house pattern;the degraded-path notice (~line 98), posted when
CROSS_REPO_ISSUE_TOKENis absent, is unguarded. Its own comment in the file says why it matters:That is the same propagation path recorded on #9373 and #9424:
actions/github-scripthands any throw from the inline script tomain().catch(handleError)→core.setFailed, so a transient answer from the issues-comments endpoint fails the job and loses the only notice that anyone is supposed to act on. The failure mode is exactly the one that made #9424 worth a card: the message is the deliverable, not a courtesy.Why it is smaller than #9373 / #9424, and why it is still worth recording
Reachability is narrow — the branch only runs while the repo secret is missing, i.e. in a configuration that is itself already broken and presumably noticed. And unlike #9424 the loss is partially recoverable: the
core.warningon the next line still names the count, though not the targets.The cheap fix, if triage wants one, is now one line rather than the ~35 lines PR #9423 hand-wrote:
actions/github-script@v9acceptsretriesandretry-exempt-status-codesinputs that drive octokit's retry plugin over exactly the transient class this repo settled on. See PR #9574 for the shape.Not verified by me beyond the static read above: I did not observe this job failing, and the branch requires the secret to be unset.
Ref: #9373 · PR #9423 · #9424 · PR #9574
Generated by Claude Code