feat(release): certify prepare-only musl artifacts - #1854
Merged
Merged
Conversation
Add a musl prepare-only build set and packaged archive certification. Verify staged release bytes with pinned b3sum 1.8.5 and system sha256sum, failing closed on missing or unpinned tools, vector mismatch, or staged-byte disagreement. Signed-off-by: Joshua J. Bouw <[email protected]>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The certification job requires exact b3sum 1.8.5 but never installs it, making the new lane unreliable or immediately failing.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds prepare-only Linux musl builds and exact-archive runtime certification to the release workflow.
Changes:
- Adds Darwin/musl prepare-set matrix classification.
- Adds musl archive staging, hashing, and FUSE lifecycle certification.
- Adds release-contract coverage for the new lane.
File summaries
| File | Description |
|---|---|
.github/workflows/release.yml |
Adds musl preparation and certification jobs. |
scripts/classify_release_build_matrix.py |
Selects Darwin, musl, or full build matrices. |
scripts/certify_musl_release_archive.sh |
Certifies packaged musl binaries and runtime behavior. |
scripts/test_certify_musl_release_archive_contract.sh |
Tests musl certification contracts. |
scripts/test_channel_workflow_contract.sh |
Extends release matrix contract tests. |
scripts/ci/test-release-contracts.sh |
Runs the new certification contract test. |
Review details
- Files reviewed: 6/6 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Share deterministic FUSE and pinned b3sum setup between the musl certification job and release contract tests. The helper installs b3sum 1.8.5 with the locked manifest, verifies its empty-vector output, and keeps product builds out of certification. Signed-off-by: Joshua J. Bouw <[email protected]>
joshuajbouw
marked this pull request as ready for review
September 5, 2026 05:29
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.
Linked Issue
Related to #1817. This PR does not close the release tracking issue or parked Windows issue #1818.
Summary
Successor on frozen parent
dc9ad36f. Extend the existing protected-mainReleaseworkflow_dispatchpath with a musl prepare-only set that builds and certifies the two Linux musl archives from exact packaged bytes. Darwin prepare-only remains the default prepare set. Native FSKit certification and GitHub release publication stay skipped in prepare-only mode.This successor provisions pinned
b3sum1.8.5 for both the musl certification job and candidate-owned Check/test execution throughscripts/ci/setup_musl_certification.sh. The helper installs that exact crate with--locked, verifies the known empty vector, and keeps product builds out of certification. Homemade or embedded BLAKE3 implementations are not used..github/workflows/ci.ymlis untouched.This does not tag, publish, promote, bump versions, first-publish a Windows runtime archive, or dispatch prepare-only / musl certification.
Changes
workflow_dispatchkeepsprepare_onlyand optionalprepare_set(darwin|musl, defaultdarwin).prepare_only=truewith unset/darwin continues to build only the Darwin pair.prepare_only=truewithprepare_set=muslbuilds onlyx86_64-unknown-linux-muslandaarch64-unknown-linux-musl.prepare_set=muslwithoutprepare_only=truefails closed.musl-certificationruns only for prepare-only musl, onubuntu-latest(x86_64) andubuntu-24.04-arm(aarch64). It downloadsbinary-${{ matrix.target }}from the same run by name and does not use cross-runartifact-ids/run-id.dtolnay/rust-toolchain@29eef336, 1.95.0) and runsscripts/ci/setup_musl_certification.shso pinnedb3sum1.8.5 exists before archive certification. It does not rebuild product binaries (cargo build,cargo check,cargo test,-p astrid, orCARGO_TARGET_DIRare forbidden in that job).fskit-certificationandgithub-releaseremain skipped whenprepare_onlyis true.scripts/certify_musl_release_archive.shrequires executable membersastrid,astrid-daemon,astrid-build,astrid-emit, andastrid-storage-provider-fuse; staged identity is the basename. It fail-closes unlessb3sumreports exactly version1.8.5, the known empty vectoraf1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f3262matches, and staged bytes agree with the downloaded artifact via pinnedb3sumand systemsha256sum. Runtimeb3suminvocations do not pass--locked.scripts/ci/setup_musl_certification.sh --b3sum-onlywithout editingci.yml..github/workflows/release.ymlstays at 995 lines (SRC_CAP=1000).Verification
72690a08f2cc740cdc4a245c987a907cbcb47233. Sole parentdc9ad36f8cebd937cf0ed15c3f3a87235fd56b17. Treef6f4b97b8f2450f5ead8921eb066c1666570202d.origin/mainc057ff02d2f91a81dc0fc7f61d921cd2edf114c4is an ancestor. Rejected unpublishedfb781397855f6b27797dd083842da0a4db538c1eis not parent, ancestor, or cherry-pick..github/workflows/release.ymlscripts/ci/setup_musl_certification.shscripts/test_certify_musl_release_archive_contract.shorigin/mainalso include:scripts/certify_musl_release_archive.shscripts/ci/test-release-contracts.shscripts/classify_release_build_matrix.pyscripts/test_channel_workflow_contract.sh7CD32E7697286B11593246B9FA53358CB4127512; matching DCO present.scripts/test_channel_workflow_contract.sh;scripts/test_certify_musl_release_archive_contract.sh;scripts/ci/test-release-contracts.sh.git diff --checkclean;release.ymlis 995 lines;ci.ymlis unchanged.Residuals and claim limits
dc9ad36fdo not transfer.binary-<triple>for native FSKit certification.AI / Tool Assistance
Assisted-by: Codex:zai-coding-responses/glm-5.3-flash
The prepare-only musl certification lane and this b3sum-provision successor were authored with Codex assistance in an isolated worktree. Exact SHA, unique file set, ancestry, signature, DCO, and local contract tests were independently verified. Independent exact-head review is required; this PR is not merge-ready on author evidence.
Checklist
skip-changelogSigned-off-bytrailer.