fix(ci): pass secrets to the release reusable so release PRs get CI #179
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/rt806-secrets-inherit"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Four added lines — one of them
secrets: inherit, three a comment saying why. Refsfrankenbit/release-toolkit#806(step ① of three; the cross-repo ref is deliberately qualified so no close-keyword fires against a local#806).The measured gap
cellblock's release wrapper omitted
secrets: inherit, so the release-toolkit reusable received no release token. This repo's release PRs have never received a singlepull_requeststatus.🔑
#170is the one worth pausing on, because it is what a reader would take as reassurance. Fourteen green statuses on a merged release PR — and every one of them is a(push)status, which attaches when the commit lands onmain, after the merge decision. They gate nothing. Nothing aboutstatuses=14announces which event produced it, and I misread exactly that during the investigation before checking the event field.Human PRs here are unaffected — cellblock runs 305
pull_requestjobs in the same window and statuses attach normally. Only therelease-toolkit-authored PRs get none, which is why this went two months without anyone noticing.Why this line
release-toolkit's README calls the input REQUIRED and predicts this precise symptom — "the one adopter measured without it has a release PR that has never received any CI." cellblock is that adopter. The correlate holds across all four consumers:⚠️ The mechanism is NOT asserted. There is no direct read of the pushing identity here, so "Actions-token pushes do not derive workflow runs" stays a consistent explanation rather than a measured one. README predicting the symptom is not the same as explaining it — this PR rests on the correlate and on the README's own instruction, not on a causal claim.
Verification
yaml.safe_loadparses the workflow;jobs.releasekeys are['uses', 'secrets', 'with']—secretsa sibling ofuses/with, matching purser's working shape verbatim.purser'srelease.yml, which carries(pull_request)statuses today.⚠️ This PR does not close release-toolkit#806, and the ordering matters
Requiring contexts before ② would turn
#172from silently-unverified into permanently blocked, since it currently cannot produce a status to satisfy them. ② is the step that proves this fix worked, and it cannot be checked until the next push tomainrebuilds the rolling PR.Out of scope, deliberately: this repo pins
@v0.42.0while release-toolkit is atv0.43.0. Not touched here.This PR is its own control, and it fired within a minute
Same repository, same workflows, same
base: main, same instant. The only variable is who authored the PR.🔑 That is the discriminating observation the investigation was missing. Everything before it was a correlation across four repos, which is weaker — different repos differ in many ways at once. This is one repo, one workflow set, two PRs, one variable, and it separates "cellblock has no PR CI" (false) from "cellblock's release PRs receive no PR CI" (measured).
⚠️ It still does not establish the mechanism, and it narrows rather than proves the case for this fix: it shows the gap is real and specific to the release path, not that
secrets: inheritis what closes it. The proof of that is step ② — the next push tomainrebuilding the rolling PR, at which point#172's successor either acquires(pull_request)statuses or does not.If it does not, this PR was the wrong fix and should be reverted rather than explained.
APPROVED — reviewed exact head
89ba697fb7(basec532baa805).The four-line change is correctly scoped:
secrets: inheritis a sibling ofusesandwithunderjobs.release, exactly matching the working purser wrapper shape. The reusable release workflow's workflow_call contract documents this as the supported Forgejo path for exposing RELEASE_TOOLKIT_TOKEN/GITHUB_TOKEN, and the surrounding cellblock trigger/input structure is unchanged. YAML parsing and Forgejo workflow-schema validation pass for all four workflows; the five PR contexts are successful. No merge action taken.Step ② — the pre-registered test ran, and it paid out
The prediction on this PR was: "if the next rolling update does not attach
pull_requeststatuses, this PR was the wrong fix and should be reverted rather than explained."It attached.
Same repo. Same branch (
release-prep/rolling). Same workflows. Same bot author —release-toolkit, exactly the identity whose PRs had received nothing. The rolling PR was rebuilt at 14:26:33 by the release workflow running on this merge, under the wrapper this PR changed. One variable moved.🔑 This is the before/after the four-repo correlation could not give. That comparison ran across repos that differ in many ways at once; this one holds everything fixed but the four lines in this diff. It also retires the last live alternative I had been careful not to rule out — author identity — because the author is unchanged and the outcome inverted.
⚠️ Two honest limits.
The statuses are
pending, not green — seven contexts queued, none terminal after three reads. The registered criterion was ATTACHMENT and attachment is what happened. If any of these now goes red, that is a genuine CI finding on cellblock's release PR and something to fix on its merits — it is not a reason to revert this PR, because a red status is the gate working. The failure mode this PR addressed was a gate that could not speak at all.And the mechanism is still not asserted. I have no direct read of the pushing identity, so "Actions-token pushes do not derive workflow runs" remains the consistent explanation rather than the measured one. What is now measured is that this input closes the gap — which is what the fix needed to establish, and is a narrower claim than knowing why.
No revert. Step ③ — making the contexts required — is now safe to consider, because the PR that would have been permanently blocked by it can now produce a status.