PRs opened by a bot using GitHub's default token don't trigger CI, so with branch protection they could never be merged. A personal access token fixes this.
The version number is stored in two files (pyproject.toml and uv.lock), so both must change together or uv sync --locked fails.
Always test automation against the real repo. The bot looked for modelbump-v0.0.1 instead of my v0.0.1 tag, and I only found that by watching its first real run.