Skip to content

Fix dead release test gate: use outcome, not conclusion - #306

Merged
rahlk merged 1 commit into
release/2.0from
fix/issue-255-release-test-gate
Aug 3, 2026
Merged

Fix dead release test gate: use outcome, not conclusion#306
rahlk merged 1 commit into
release/2.0from
fix/issue-255-release-test-gate

Conversation

@rahlk

@rahlk rahlk commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Problem

release.yml's test step sets continue-on-error: true, and the follow-up step gates on steps.test.conclusion:

- name: Run Tests
  id: test
  continue-on-error: true
  run: uv run make test

- name: Delete tag on failure
  if: steps.test.conclusion == 'failure'

continue-on-error: true rewrites conclusion to success regardless of the real result. So steps.test.conclusion == 'failure' is never true, "Delete tag on failure" has never once fired, and a red test suite produces a green release that publishes to PyPI.

Fix

Gate on steps.test.outcome, which preserves the step's actual result.

continue-on-error stays — removing it would fail the job immediately and the tag-deletion step could never run, which is the opposite of what's wanted. The two must be paired, so both halves now carry a comment saying why.

Scope

This fixes the mechanical gate only. The other half of #255 — making the CI suite honestly green — is not addressed here, and turning a working gate on may now surface failures that were previously invisible. That is the point, but worth knowing before merging.

Refs #255

The release workflow's test step sets continue-on-error: true, which
rewrites steps.test.conclusion to 'success' regardless of the real
result. The follow-up "Delete tag on failure" step gated on
steps.test.conclusion == 'failure', so it could never fire: a red suite
still produced a green release and shipped the artifact.

Gate on steps.test.outcome instead, which preserves the step's actual
result. continue-on-error stays -- without it the job aborts before the
tag-deletion step can run -- and both halves now carry a comment saying
why they must be paired that way.

Note this fixes the mechanical gate only. Making the suite honestly green
is the other half of #255 and is not addressed here.

Refs #255
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant