|
| 1 | +--- |
| 2 | +--- |
| 3 | + |
| 4 | +ci: close issues that a merged PR fixes in another repository (#4482 follow-up) |
| 5 | + |
| 6 | +Release-nothing: adds `.github/workflows/cross-repo-issue-closer.yml` and no |
| 7 | +package code. |
| 8 | + |
| 9 | +GitHub's closing keywords only act within a repository, so a PR here saying |
| 10 | +`Fixes objectstack-ai/objectui#456` merges and leaves that issue open — and the |
| 11 | +issue's own page carries no reference to the PR that fixed it, so the next |
| 12 | +reader cannot find the fix either. v17 verification (#4482) hit this twice in |
| 13 | +one day; #4475 and #4478 were both closed by hand. |
| 14 | + |
| 15 | +The job has two modes and both are visible. With a cross-repo token it closes |
| 16 | +the foreign issue and links the PR. Without one it comments on the merged PR |
| 17 | +naming what still needs closing by hand — because the repository's only secrets |
| 18 | +are `GITHUB_TOKEN` (scoped to the repository running the workflow, which is the |
| 19 | +whole problem) and `NPM_TOKEN`, so until an admin provisions |
| 20 | +`CROSS_REPO_ISSUE_TOKEN` the job cannot perform the close at all. |
| 21 | + |
| 22 | +That second mode is deliberate, not a fallback. A workflow that quietly does |
| 23 | +nothing because a secret was never provisioned is the shape this repo keeps |
| 24 | +having to fix — #4449's `validateFormLayout` was written, tested, exported, and |
| 25 | +called by nothing, running on zero stacks for as long as it existed. A missing |
| 26 | +credential has to announce itself. |
| 27 | + |
| 28 | +Matched references are restricted to the qualified `owner/repo#N` form; the |
| 29 | +bare `#N` form already works natively and is left alone. Same-repo qualified |
| 30 | +references are filtered out, already-closed targets are skipped, and one |
| 31 | +unreachable target cannot swallow the rest or read as success. |
0 commit comments