fix(release): repair the Windows install path and widen arch coverage - #44
Merged
Conversation
The Windows `.sha256` sidecar was the raw three-line `certutil -hashfile` report, whose first whitespace-separated token is the literal "SHA256". All three consumers read that first token as the digest, so on Windows the PowerShell one-liner, `install.sh` under MSYS, and `dit update` each aborted with a checksum mismatch. Emit one canonical `<digest> <asset>` sidecar on every runner, and fail the build rather than publish an unverifiable asset. The consumers also learn to scan for the first 64-char hex run instead of taking token one, so a Windows host can install from or self-update off the already-published v0.3.0 without waiting for a re-release. Coverage and guarantees: - Add `aarch64-pc-windows-msvc` (Windows on ARM), cross-compiled from the x64 runner. Best-effort and unsmoked — it cannot be executed there. - Promote macOS x86_64/aarch64 and Windows x86_64 out of `optional: true`. Every one of those legs was allowed to fail silently, which is exactly how a release ships without the asset an installer resolves by name. - Add a `verify-assets` gate between build and publish: the five required assets must be present, non-empty, and match a well-formed sidecar or no release is created; missing best-effort assets are warned about instead of vanishing. Replayed against v0.3.0's artifacts, this gate fails. - `install.ps1`, `install.sh` and `dit update` fall back to the x86_64 build on Windows ARM when a release carries no native ARM64 asset.
This was referenced Jul 31, 2026
Merged
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.
The Windows
.sha256sidecar was the raw three-linecertutil -hashfilereport, whose first whitespace-separated token is the literalSHA256:All three consumers read that first token as the digest, so on Windows the PowerShell one-liner,
install.shunder MSYS, anddit updateeach abort with a checksum mismatch. This is live in v0.3.0.Changes
Sidecar — emit one canonical
<digest> <asset>shape on every runner (sha256sum→shasum→ parsedcertutil), and fail the build if the result is not 64 hex chars, rather than publish an unverifiable asset.Consumers —
install.ps1,install.shandsrc/update.rsnow scan for the first 64-char hex run instead of taking token one. Since the installers are fetched frommain, this unblocks Windows against the already-published v0.3.0, no re-release needed.Architecture coverage
aarch64-pc-windows-msvc(Windows on ARM), cross-compiled from the x64 runner. Best-effort and unsmoked — it cannot be executed there.macos-x86_64,macos-aarch64andwindows-x86_64out ofoptional: true. Each was allowed to fail silently, which is exactly how a release ships without the asset an installer resolves by name.verify-assetsgate — new job betweenbuildandpublish-github. The five required assets must be present, non-empty, and match a well-formed sidecar or the release is never created; best-effort assets missing are::warning::, not silence.Fallbacks — all three consumers drop to the x86_64 build on Windows ARM when a release carries no native ARM64 asset.
Verification
verify-assetsscript, replayed against a fixture reproducing v0.3.0 artifacts, fails on the malformed Windows sidecar; passes once corrected; fails on a missing required asset. All three cases exercised locally.src/update.rscover canonical + legacy-certutil sidecar parsing and the fallback table — all pass.install.shpassesbash -n; the workflow parses as YAML with the expected 9-leg matrix.cargo clippy/ fullcargo test(deferred to CI at the requester's direction). No PowerShell available locally, soinstall.ps1was reviewed but not executed.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.