Conversation
Two workflows close the reproducibility gap (the shipped exe existed only as a build from one machine): - ci.yml: every push to main and every PR runs flutter analyze, the full test suite, and a real `flutter build windows --release`, keeping the built app as a short-lived artifact. A PR cannot merge green without the exe compiling. - release.yml: pushing a v* tag reproduces the entire installer from source on a clean runner -- engine repo checked out beside the app, PyInstaller freeze, CRT staged from the runner's VS Redist tree, Inno compile via the existing scripts/build_installer.ps1 -- and publishes a GitHub Release with the setup exe plus a SHA256SUMS.txt receipt. A version gate refuses to ship when the tag and pubspec disagree, so an artifact can never carry a mislabeled version. Toolchain pins: Flutter 3.44.6, Python 3.12, PyInstaller 6.21.0 -- the exact set the local build was verified with. Inno Setup comes from the runner image, with a choco fallback when absent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
HarperZ9
added a commit
that referenced
this pull request
Jul 29, 2026
Version 0.2.0 -> 0.2.1: the installer now carries the keyless-default and hidden-Set-key first-run fixes (#6) and ships from the tag-driven release pipeline (#7) instead of a laptop build. Co-authored-by: Zain Dana Harper <17142659+HarperZ9@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <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.
Closes the last non-signing ship item: reproducibility
The installer existed only as a build from one machine. Two workflows fix that:
ci.yml— every push / PRflutter analyze→ full test suite → realflutter build windows --release, with the built app kept as a 7-day artifact. A PR cannot merge green without the exe compiling.release.yml— push av*tagReproduces the entire installer from source on a clean runner:
HarperZ9/local-model, public) checked out beside the app → PyInstaller freeze viapackaging/flywheel-gateway.spec.scripts/build_installer.ps1does the assembly — CI runs the same path a laptop does.Flywheel-Setup-<version>-x64.exe+SHA256SUMS.txtreceipt,--verify-tag.Toolchain pinned to the locally-verified set: Flutter 3.44.6, Python 3.12, PyInstaller 6.21.0.
This PR's own CI run is the live verification —
ci.ymlexecutes on this PR.🤖 Generated with Claude Code