Bump reflex-release to 0.1.0a4 and sync workflows
Upgrades the pinned reflex-release version from 0.1.0a3 to 0.1.0a4 across all release workflows and configuration files, and regenerates workflows with reflex-release sync.
Summary
This change updates the release tooling to a newer alpha version that includes critical fixes for job-level status functions in the publish workflow and improved health checks in the changelog detection workflow.
Key Changes
-
Version bump: Updated
reflex-releasepin from0.1.0a3to0.1.0a4in:pyproject.toml([tool.reflex-release] cli-command)Makefile(RELEASE_VERSION)- All generated workflow files (
.github/workflows/*.yml)
-
Workflow fixes in
publish.yml:- Added explicit status functions (
!cancelled() && needs.<job>.result == 'success') topublishandtag-and-releasejobs - These prevent implicit transitive
success()evaluation that would allow skipped jobs to pass through when they should have run - Critical for this repository since
custom-buildreplaces the tool's ownbuildjob, making the implicit logic dangerous
- Added explicit status functions (
-
Improved health checks in
release_from_changelog.yml:- Refactored leg validation into a
check_leg()function that distinguishes between legitimate skips (no packages to publish) and problematic skips (packages existed but job was skipped) - Now correctly fails when a job is skipped despite having work to publish
- Captures
detectoutput (ANYvariable) to determine whether each leg should have run
- Refactored leg validation into a
-
Documentation update in
spec/process/production-readiness.md:- Updated version references and documented the two job-level
iffixes that landed in0.1.0a4 - Clarified the load-bearing nature of these fixes for repositories using
custom-build
- Updated version references and documented the two job-level
Implementation Details
The status function fixes address a subtle GitHub Actions behavior: without explicit if conditions, GitHub evaluates an implicit success() over the entire transitive dependency closure rather than just direct needs. In this repository's case, the tool's own build job never runs (replaced by build_release_artifacts.yml), so it would silently pass through the collect job and allow publish to proceed without uploading anything.
The health check improvements ensure that release_from_changelog.yml correctly distinguishes between:
- A job that was legitimately skipped because
detectfound no packages for it (healthy) - A job that GitHub skipped despite having packages to publish (error)
https://claude.ai/code/session_01WQwrMGQWRmvM2hMQ1PpWEg
Summary by CodeRabbit
-
Bug Fixes
- Improved release status reporting so skipped publishing steps are handled correctly.
- Prevented release completion when required publishing work is incomplete.
- Added stronger checks for successful release-stage outcomes.
-
Chores
- Updated release tooling to version 0.1.0a4 across project automation.
-
Documentation
- Updated production-readiness guidance to reflect current release validation behavior.