Skip to content

Recognize a no-release label as its own release reason - #184

Open
cratis-stagehand[bot] wants to merge 4 commits into
mainfrom
fix/no-release-label-support
Open

Recognize a no-release label as its own release reason#184
cratis-stagehand[bot] wants to merge 4 commits into
mainfrom
fix/no-release-label-support

Conversation

@cratis-stagehand

Copy link
Copy Markdown

Added

  • A no-release-labels input (default no-release) and a dedicated no-release reason on the reason output, for a merged pull request that deliberately publishes nothing.

Fixed

  • A merged pull request carrying a no-release label was previously indistinguishable from one that simply forgot a version label: neither major, minor nor patch matched, so the action reported reason: no-label either way. A consuming workflow that (correctly) fails on no-label then also failed on every deliberate no-release merge.

Context

Cratis/Components' Publish workflow failed on run 33334724595: PR Cratis/Components#222 was correctly labelled no-release per Cratis/Components' own pull-requests.md convention and passed the org-wide verify-release-intent gate, but this action had no concept of that label at all and fell back to no-label, which Components' verify-published job (correctly, per its own design) treats as a failure.

Cratis/Components#223

Verified

  • yarn ci (typecheck, lint, specs with coverage, build) passes locally - 66 files / 133 specs green, including 5 new specs covering the default and a custom no-release-labels input, the Versions and HandleVersion paths for a no-release-labelled pull request, and that unintendedReasons excludes it.
  • dist/ rebuilt from the changed source and committed, per this repo's own ## Developing guidance (CI fails if dist/ is stale).

Not verified

  • I did not re-pin Cratis/Components' publish.yml to a new tag of this action, since that depends on this PR being reviewed, merged and released first. Once a new tag exists, Components can bump its pinned SHA to pick up this fix.

Cratis Stagehand (AI) added 4 commits August 30, 2026 20:57
The action only ever checked major/minor/patch labels; a pull request
merged with no bump label reported reason 'no-label' regardless of
whether it was actually unlabeled or deliberately carried a no-release
decision. Consuming workflows that fail on 'no-label' (the correct
response to a forgotten label) then also failed on every intentional
no-release merge, indistinguishable from the mistake they were meant
to catch.

Add a configurable no-release-labels input (default 'no-release') and
a dedicated 'no-release' reason, checked ahead of the bump labels and
excluded from unintendedReasons so it resolves as expected rather than
as a lost release.
Cover the default and custom no-release-labels input, the
Versions.getNextVersionFor and HandleVersion end-to-end paths for a
pull request labelled no-release, and lock down that unintendedReasons
excludes it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor New, backwards-compatible capabilities

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants