Bump reflex-release to 0.1.0a4 and sync workflows

Merged
MA
2mo ago
+85-45

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-release pin from 0.1.0a3 to 0.1.0a4 in:

    • 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') to publish and tag-and-release jobs
    • 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-build replaces the tool's own build job, making the implicit logic dangerous
  • 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 detect output (ANY variable) to determine whether each leg should have run
  • Documentation update in spec/process/production-readiness.md:

    • Updated version references and documented the two job-level if fixes that landed in 0.1.0a4
    • Clarified the load-bearing nature of these fixes for repositories using custom-build

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 detect found 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.