ci: allow CI to be triggered on demand - #11
Merged
Conversation
GitHub disables re-running a workflow run once it is older than 30 days, and both jobs run `poetry lock` against live PyPI rather than the committed lockfile. Together that means there is no way to check whether the toolchain has drifted since the last push — the only signal is a release tag, which publishes. `workflow_dispatch` makes CI re-runnable at any time. The release pipeline is untouched: it stays tag-only, as the umbrella contract requires. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Adds
workflow_dispatchtoci.yml. Three lines, no change to the existingpull_request/pushtriggers.Why
CI on
mainwas last green on 2026-05-21. There is currently no way to re-check it:poetry lockrather than installing from the committedpoetry.lock, so every run resolves against live PyPI.pipx install poetryis unpinned too. The environment three months on is not the environment that went green.That leaves a release tag as the only way to exercise the pipeline — and a tag publishes. Under the umbrella contract a tag is also single-use (§3: "tags are never moved or re-pointed"), so a toolchain failure discovered that way burns the version number.
workflow_dispatchmakes the check available on demand, which matters ahead of the pendingv0.2.0release: PyPI currently serves0.1.0from July 2024, pinned to spec0.5.1, whilemainhas been sitting on spec0.19.2unreleased since May.Contract
The release pipeline is untouched and stays tag-only. §2 permits
workflow_dispatchon the release workflow but bars it from publishing without tag context; the CI pipeline carries no such restriction.Follow-up
The
poetry lock-on-every-run behavior is the underlying nondeterminism. Regenerating the committed lockfile and installing from it is the real fix, kept out of this PR to keep it to one concern.🤖 Generated with Claude Code