Repository navigation
feat(release): add an edge channel that follows every release - #8
Merged
Merged
Conversation
- Until now a release without a device receipt reached no catalog, so nobody could follow the newest CPython without pointing uv at a release by hand - `edge` moves with every release; `latest-release` still moves only for a device-qualified one, so `uv python install` keeps resolving to bytes a device ran - Both branches carry the same files under the same names, so tooling reads either; a device-qualified release moves both and `edge` is never behind - Absence of a branch is told from an unreachable remote: only `ls-remote` exit 2 means absent, so a network failure cannot start a second history under the name - The step is run against temporary git repositories in `tests/test_release_workflow.py`, including a push the remote rejects - Document the channels in `docs/running.md` and the vocabulary in `docs/technotes.md`
- "Prerelease" implied a stage that ends, but promotion is a new tag with new bytes - To uv the word means a CPython alpha, beta, or release candidate, and the catalog already has a `prerelease` field with that meaning - GitHub's Pre-release flag stays as the mechanism that keeps such a release off its "Latest" badge and `releases/latest` - Release notes, gate output, and comments name the evidence instead; the notes point at `edge` and are tested never to say "prerelease"
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.
Why
Change
edgebranch — moves with every release; opt-in by URL, same file names aslatest-release.latest-release— unchanged: moves only for a device-qualified release, souv python installstill resolves to bytes a device ran.edgeis never behind.releases/latest.Details
ls-remoteexit 2 means absent.edgeand are tested never to say "prerelease".docs/running.md(Channels) anddocs/technotes.md(Release Model, Vocabulary).After merging
edgedoes not exist until a release runs, or I seed it from20261002; it is one orphan branch holding that release's three catalog files.Verification
./check.py: ruff, format, mypy, and 168 tests pass, including on Python 3.11.tests/test_release_workflow.pyruns the step against temporary git repositories: edge-only for an unqualified release, both for a qualified one,latest-releaseheld back, a later qualified release catching up, catalogs only on each branch, a rejected push failing the step, and an unreachable remote not read as a missing branch.latest-release, swallowing a failed push) makes those tests fail.zizmor: no new findings.Not done