Skip to content

fix: fail early when a tag predates the release tooling - #103

Merged
Xpiatio merged 1 commit into
mainfrom
fix/release-tooling-guard
Aug 8, 2026
Merged

fix: fail early when a tag predates the release tooling#103
Xpiatio merged 1 commit into
mainfrom
fix/release-tooling-guard

Conversation

@Xpiatio

@Xpiatio Xpiatio commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Why

The first dispatch of release.yml against v1.9.0 failed at "Fetch the Piper voices" with nothing but Process completed with exit code 127. The tag was pushed before the workflow existed, so the checked-out tree had no scripts/fetch-voices.sh — but the run never said that, and finding it took a local git ls-tree v1.9.0 scripts/.

What

A guard right after checkout, before setup-python, so it costs a few seconds and names what is missing:

ERROR: v1.9.0 predates the release tooling; missing: scripts/fetch-voices.sh scripts/voices.txt scripts/build-deb.sh(no PYTHON override)
Move the tag to a commit that also contains this workflow.

It covers the PYTHON override in build-deb.sh as well as the two new files. An older tree has a build-deb.sh that ignores $PYTHON and would have failed a step later anyway, on a runner with neither a .venv nor a python3.13 on PATH.

grep -qF so ${PYTHON:-} matches literally. Single braces, so GitHub does not interpolate it.

This is a one-time bootstrap problem — every tag from here on carries the workflow that builds it — but the same failure comes back whenever someone tags an older commit, and the 127 is no more readable the second time.

Verification

Extracted the step body and ran it against two trees:

  • current main — exit 0
  • git archive 41b328d (the tree v1.9.0 pointed at before it was moved) — exit 1, listing all three missing pieces

v1.9.0 has since been moved to 2db28fb, so the release run triggered by that tag push is unaffected by this change; it already has the tooling.

🤖 Generated with Claude Code

The first dispatch of release.yml against v1.9.0 died at "Fetch the Piper
voices" with a bare "Process completed with exit code 127". The tag was
pushed before the workflow existed, so the checked-out tree had no
scripts/fetch-voices.sh -- but nothing in the run said so, and the cause
took a local `git ls-tree v1.9.0 scripts/` to find.

Check for the tooling right after checkout, before setup-python, and name
what is missing. This is a one-time bootstrap problem (every tag from here
on carries the workflow that builds it), but the same failure returns
whenever someone tags an older commit, and the 127 is no more readable the
second time.

The check covers the PYTHON override in build-deb.sh as well as the two new
files: an older tree has a build-deb.sh that ignores $PYTHON and would fail
a step later, on a runner that has neither a .venv nor a python3.13 on PATH.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Xpiatio
Xpiatio merged commit dd1f70c into main Aug 8, 2026
3 checks passed
@Xpiatio
Xpiatio deleted the fix/release-tooling-guard branch August 8, 2026 16:27
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