Require a version bump on every PR; bump to 0.2.2 - #18
Merged
Conversation
Some Vector boards have no password configured, which the firmware authenticates by signing with an empty-string HMAC key. The client conflated an empty password with "no password set": the Machine.password property coerced "" to the $VECTOR_PASSWORD fallback, and both the auth preflight and the HTTP transport rejected a falsy password outright, so an empty password could never be used. Distinguish None (unset — still falls back to the environment and raises AuthenticationRequiredError when nothing is configured) from "" (a valid empty password that is signed as such): - Machine.password returns an explicitly-set empty string instead of the env fallback; only None falls back. - Machine._preflight_auth and HttpTransport._send guard on `is None` rather than falsiness. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Y49XvgGpmTHrYLDeTvmbA
The empty-password fix (#17) merged without a version bump, so main could ship a behavior change under the already-released 0.2.1. Add a CI gate that fails a pull request unless it raises __version__ above the base branch, and bump to 0.2.2 to cover the merged fix. - scripts/check_version_bump.py compares the head __version__ against the base branch's (read from git) and requires head > base; a missing base file (new package) passes. PEP 440 ordering via packaging when available, with a numeric-plus-suffix fallback. - ci.yml gains a version-bump job (pull_request only) that runs it against the PR base sha. - Unit tests cover the comparison logic. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Y49XvgGpmTHrYLDeTvmbA
Coverage report✅ Total coverage: 100.00% (0.00% vs base |
mullinmax
marked this pull request as ready for review
July 18, 2026 20:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The empty-password fix (#17) merged without a version bump, so
maincurrently ships a behavior change under the already-released0.2.1. This adds a CI gate so that can't happen again, and bumps the version to cover the merged fix.0.2.1→0.2.2inwarpedpinball/__init__.py(the single source of truth;pyproject.tomlreads it dynamically).version-bumpCI job (pull_requestonly): fails the PR unless__version__is strictly greater than the base branch's.scripts/check_version_bump.py: reads the head__version__and the base branch's version (fromgit show <base>:warpedpinball/__init__.py), and requires head > base. A missing base file (brand-new package) passes. Usespackagingfor PEP 440 ordering when available, with a numeric-release-plus-suffix fallback so a release supersedes its own pre-release (0.2.0rc1<0.2.0).The existing
version-checkjob (tag ↔ package agreement, on release) is unchanged; this adds the missing "did this PR actually bump?" gate.Testing
python -m pytest tests/test_check_version_bump.py— passes.ruff checkon the new files — clean.origin/main:Version bump check OK: 0.2.1 -> 0.2.2.Note
The gate requires a bump on every PR (including docs/CI-only ones). If you'd rather allow exceptions, a follow-up can add a
skip-version-bumplabel check — say the word and I'll wire it in.🤖 Generated with Claude Code
https://claude.ai/code/session_014Y49XvgGpmTHrYLDeTvmbA
Generated by Claude Code