Release all six architectures - #32
Merged
Merged
Conversation
v0.2.2 shipped only x86_64 and aarch64 because the release workflow's matrix, its collect step and its checksum step still enumerated two architectures, and because scripts/release-notes.sh refused to generate a body from manifests whose floors disagree, which they now do by design: loongarch64's floor is glibc 2.36, the first release that runs the architecture, against 2.31 everywhere else. Widen all three to x86_64, aarch64, riscv64, ppc64, ppc64le and loongarch64, and state the floor per architecture in the generated body instead of once. The refusal survives in the scope where it was a finding: the two variants of ONE architecture must still agree. The collect step now refuses in both directions. Missing staged artifacts already refused; an architecture that produced artifacts but is not in the collect list now refuses too, so a matrix row added without widening this list cannot ship a release that silently lacks it, which is the shape v0.2.2 had. Measured locally, with real builds: - five cross builds plus one portable, packaged by package-release.sh; release-notes.sh generates the body from all six manifests with the per-arch floor table (aarch64 2.31 ... loongarch64 2.36), where the previous script exits 2 on the same input. - planted defects, each seen to refuse: two manifests of one architecture disagreeing about the floor (exit 2); an unlisted s390x in staged (exit 1); a missing architecture (exit 1); one corrupted byte in a loose ppc64 asset against its manifest (exit 1, and 25 of 25 pass clean). The evidence gate is unchanged and still blocks every architecture: it runs where it can, on the two architectures with runners, and the four cross-compiled ones are released on the build verification, which the workflow header now states with the pointer to docs/report/10-measured-versus-assumed.md 10.
talaria0101
requested review from
Azathothas,
QaidVoid and
Samueru-sama
as code owners
September 4, 2026 16:50
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.
v0.2.2 shipped only x86_64 and aarch64 because the release workflow's
matrix, its collect step and its checksum step still enumerated two
architectures, and because scripts/release-notes.sh refused to generate
a body from manifests whose floors disagree, which they now do by
design: loongarch64's floor is glibc 2.36, the first release that runs
the architecture, against 2.31 everywhere else.
Widen all three to x86_64, aarch64, riscv64, ppc64, ppc64le and
loongarch64, and state the floor per architecture in the generated body
instead of once. The refusal survives in the scope where it was a
finding: the two variants of ONE architecture must still agree.
The collect step now refuses in both directions. Missing staged
artifacts already refused; an architecture that produced artifacts but
is not in the collect list now refuses too, so a matrix row added
without widening this list cannot ship a release that silently lacks
it, which is the shape v0.2.2 had.
Measured locally, with real builds:
release-notes.sh generates the body from all six manifests with the
per-arch floor table (aarch64 2.31 ... loongarch64 2.36), where the
previous script exits 2 on the same input.
architecture disagreeing about the floor (exit 2); an unlisted s390x
in staged (exit 1); a missing architecture (exit 1); one corrupted
byte in a loose ppc64 asset against its manifest (exit 1, and 25 of
25 pass clean).
The evidence gate is unchanged and still blocks every architecture: it
runs where it can, on the two architectures with runners, and the four
cross-compiled ones are released on the build verification, which the
workflow header now states with the pointer to
docs/report/10-measured-versus-assumed.md 10.
Requested by Samueru via pi-discord.
Conversation: https://discord.com/channels/1313385177703256064/1545249294377033729
Transcript: https://talaria.qaidvoid.dev/?session=1i2d05e