Skip to content

ci(release): wire PREV_VERSION into ensure-version-increment.yml so the #540 cross-release guard actually runs #548

Description

@MichaelTaylor3d

Task

Wire scripts/package-version.sh's optional PREV_VERSION second argument into
.github/workflows/ensure-version-increment.yml so the #540 cross-release MSI ordering guard
actually runs on every PR, instead of sitting as dead capability.

Context

Done condition (finite, checkable)

  • ensure-version-increment.yml resolves the latest stable (non-draft, non-prerelease) GitHub
    release version and passes it as PREV_VERSION to scripts/package-version.sh in the
    Check version increment job.
  • A PR whose head version's MSI tuple compares LOWER than that resolved PREV_VERSION fails
    this required check, proven by an actual CI run (not a local script invocation).
  • A PR with a legal increment still passes through the same job, proven by an actual CI run.
  • The bootstrap case (no stable release resolvable) is handled explicitly, not silently swallowed.

Skill / reference

CLAUDE.md §2.4a (required-check semantics, check-merge-preconditions.sh), §1.10 (fail-closed vs
fail-open judgement — an API-read failure must never be conflated with "the thing being checked is
bad"). dig-ecosystem-workflow skill for the branch/PR mechanics.

Effort

Low-medium: mechanical CI wiring against an already-designed and already-tested script contract; the
only real judgement call is the bootstrap-case fail-open/fail-closed split, which is scoped and
argued in the implementing PR rather than escalated.

Evidence required

Two real GitHub Actions run URLs against a real PR: one showing the check fail on a deliberately
cross-release-violating version bump with the guard's own error text in the log, one showing it
pass on a legal bump — both through the actual workflow path, not package-version.sh invoked
standalone (that would repeat the exact mistake this ticket exists to fix: proving the script works
in isolation says nothing about whether CI ever calls it that way).

Closed by the PR that does this work, via Closes #<this>.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind:maintenancereal work that changes nothing a user can perceive

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions