Repository navigation
Publish the Windows setup file under a version-less name for one stable link - #2083
Merged
Merged
Conversation
…le link Each release now also publishes the identical setup bytes as AmplifierUnifiedSetup-windows-x64.exe, so that releases/latest/download/AmplifierUnifiedSetup-windows-x64.exe always gives the current file. It is a copy, not another build: it embeds its own release's plan, the publisher refuses a copy whose bytes differ, and the checksum file lists both names. A selected source from before this change keeps its original asset set.
Only the application publisher marks a release as latest, and it uploads every asset to a draft before it publishes. Component releases publish with make_latest=false. A test now fails if either changes.
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.
Change
Problem. The Windows setup file is published as
AmplifierUnifiedSetup-<version>-windows-x64.exe. The name contains the version, so no stable link exists, and the README cannot point a person at "the current setup file".Result. Each release also publishes the identical setup bytes under a name without a version:
scripts/windows_consumer_release.py(STABLE). The file is a copy, not another build. It embeds exactly its own release's plan, as today.WINDOWS_SHA256SUMSlists both names with the same digest.scripts/release.py) accepts exactly two asset sets: the current one, and the set of a selected source from before this change. Nothing else is published.release.ymluploads the new name explicitly; the existing pattern with a version does not match it.scripts/scheduling_release.py) publish withmake_latest=false.Weighed and not done: a version-independent setup file that reads the latest release plan at run time. Its unchanged bytes might build download reputation while unsigned; that effect is not verified. It would give up the one integrity property the unsigned file has: the downloaded bytes fix exactly what is installed, and the published receipt attests that chain. Every saved copy would also follow the moving latest pointer for ever. Astra (
gpt-6-astra) and Fable (claude-fable-5-1) each reviewed the three options from one brief and both answered "ship the copy". The reasons are in the design note.Not in this PR: the README "Windows 11" section. Its link must not be dead, so it follows in its own PR after the first release that carries this file.
Validation
Source
7428ed065.7428ed065: 10 pass;default-installed,integrationandwindows-bootstrap-offlineare declared conditional skips on pull requests.release.consumer_assetsran the real producer command (windows_consumer_release.py verify, as a subprocess, as in the release job) on synthetic release folders with real compiler-input digests. Results: the current producer returns the five files; a folder without the copy is refused; the producer of the previous release (v0.95.0 scripts) with today's publisher returns its original four files.tests/test_windows_consumer_release.py(40 pass with the native-builder file): the version-less name has no version; both names have one digest in the checksum file; other bytes, a missing copy and a link are each refused; the publisher accepts the two exact sets and refuses an extra file, a missing setup file and a second versioned name; the workflow uploads the new name.test_release_qualification.pyneed the prepared web client folder and fail in a checkout without it, unchanged from main; CI prepares that folder.WINDOWS_SHA256SUMSor the setup asset names.Not proven here. The producer's
buildstep runs only on the Windows release runner (it compiles setup); its one new line, the copy, has not run there. No test publishes a release. The first release after this merge shows whether the new asset is uploaded and whether the link returns the file; I will check that link before the README section is merged.