Repository navigation
fix(ci): stop Release fan-out and false failures, correct workflow drift #599
Description
Problem
Release fan-out and false failures. release.yml listens to workflow_run completion of Zsh, ZD Integration, CodeQL and Trunk Code Quality on every branch. From 2026-09-15 to 2026-10-07 it produced 149 runs, 134 of them skipped. Each promotion runs the publish job once per completed workflow: four times for 76a1a3d. On a legitimate non-promotion commit to main, 4f2c0a7 (#572), the automatic job failed five times with commit is not a merged next-to-main promotion instead of recording that there is nothing to publish. A red Release run on main that means "nothing to do" teaches people to ignore red.
Workflow drift found in the same review:
promotion-readiness.ymllabels checkout SHA3d3c42eas# v4, while the same SHA is# v7.0.1in every other workflow; its trunk-action pin has no version comment.release-plan.ymlgrantspull-requests: writeto the whole workflow, although only theplanjob writes the comment.commit-lint.ymlgrantspull-requests: read, which no step uses; its jobs read only the event payload and the checkout.benchmark.ymlcites ADR-0009 for "observed, not gated"; the benchmark policy is ADR-0024 in z-shell/.github.CODEOWNERSlists/.github/dependabot.ymland/.github/copilot-instructions.md, which do not exist onnext.
Not in scope here: Public Contract Evidence has failed on all three scheduled runs since 2026-09-21 because consumer pins are stale. The fix there is a maintainer re-review of the pins, or a decision to report through an issue instead of a red run.
Change
- Limit the
workflow_runtrigger tobranches: [main], so other branches no longer create skipped Release runs. - Keep publication gated exactly as now. ADR-0028 point 3 says the publisher fails closed when the merge is not a real promotion: it must never publish then, and that does not change. But a commit that reaches
mainthrough a sanctioned non-promotion path (ahotfix-*or Dependabot security pull request, whichmain-branch-guard.zshadmits) is not an anomaly. Have that case end successfully with a summary that says there is nothing to publish. Keep failing on real anomalies:mainmoved, validation incomplete or failed, mismatched promotion parents, an unexpected tag. - Correct the pin comments, scope the permissions to the jobs that use them, fix the ADR citation, and remove the stale CODEOWNERS paths.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
ci(release): stop Release fan-out and false failures on main
ci(release): stop Release fan-out and false failures on main
ss-o commentedon Oct 8, 2026
Project 28 triage. Values set on this issue:
Bug. A non-promotion commit onmainturned Release red although there was nothing to publish.Low. The failures were noise; publication itself was gated correctly.S. Release trigger and verification script, plus small edits in four workflows.P3 - Low. No user-facing effect; it removes false failures and drift.Human delivery.In Review. PR ci(release): stop Release fan-out and false failures on main #602 is merged intonext(ecbec6d): Release listens onmainonly, a sanctioned non-promotion commit ends with a summary saying there is nothing to publish, the pin comments, job permissions and ADR citation are corrected. Not done:CODEOWNERSstill lists/.github/dependabot.ymland/.github/copilot-instructions.mdonnext; PR ci(release): stop Release fan-out and false failures on main #602 left them for a separate change that needs z-shell/tsc approval. PR ci(release): stop Release fan-out and false failures on main #602's body saysCloses #599, so the promotion ofnexttomaincloses this issue; theCODEOWNERSitem is tracked in chore(ci): remove the stale CODEOWNERS paths left from #599 #610.github-actions commentedon Oct 8, 2026
Released to
mainby promotion #617; the fix merged intonextin #602.