Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat(release): certify prepare-only musl artifacts - #1854

Merged
joshuajbouw merged 2 commits into
mainfrom
codex/prepare-only-musl-b3sum
Sep 5, 2026
Merged

joshuajbouw merged 2 commits into
mainfrom
codex/prepare-only-musl-b3sum

Conversation

@joshuajbouw

@joshuajbouw joshuajbouw commented Sep 5, 2026

Copy link
Copy Markdown
Member

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-main Release workflow_dispatch path 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 b3sum 1.8.5 for both the musl certification job and candidate-owned Check/test execution through scripts/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.yml is untouched.

This does not tag, publish, promote, bump versions, first-publish a Windows runtime archive, or dispatch prepare-only / musl certification.

Changes

  • workflow_dispatch keeps prepare_only and optional prepare_set (darwin | musl, default darwin).
  • prepare_only=true with unset/darwin continues to build only the Darwin pair.
  • prepare_only=true with prepare_set=musl builds only x86_64-unknown-linux-musl and aarch64-unknown-linux-musl.
  • prepare_set=musl without prepare_only=true fails closed.
  • Non-prepare (tag/nightly) matrix is Darwin + GNU + musl. Windows remains out.
  • musl-certification runs only for prepare-only musl, on ubuntu-latest (x86_64) and ubuntu-24.04-arm (aarch64). It downloads binary-${{ matrix.target }} from the same run by name and does not use cross-run artifact-ids / run-id.
  • The cert job installs the Rust toolchain (dtolnay/rust-toolchain@29eef336, 1.95.0) and runs scripts/ci/setup_musl_certification.sh so pinned b3sum 1.8.5 exists before archive certification. It does not rebuild product binaries (cargo build, cargo check, cargo test, -p astrid, or CARGO_TARGET_DIR are forbidden in that job).
  • fskit-certification and github-release remain skipped when prepare_only is true.
  • scripts/certify_musl_release_archive.sh requires executable members astrid, astrid-daemon, astrid-build, astrid-emit, and astrid-storage-provider-fuse; staged identity is the basename. It fail-closes unless b3sum reports exactly version 1.8.5, the known empty vector af1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f3262 matches, and staged bytes agree with the downloaded artifact via pinned b3sum and system sha256sum. Runtime b3sum invocations do not pass --locked.
  • Check/test execution provisions the same real 1.8.5 binary through scripts/ci/setup_musl_certification.sh --b3sum-only without editing ci.yml.
  • Musl images remain the existing official Rust 1.95.0 Alpine pins.
  • .github/workflows/release.yml stays at 995 lines (SRC_CAP=1000).

Verification

  • Exact head 72690a08f2cc740cdc4a245c987a907cbcb47233. Sole parent dc9ad36f8cebd937cf0ed15c3f3a87235fd56b17. Tree f6f4b97b8f2450f5ead8921eb066c1666570202d.
  • origin/main c057ff02d2f91a81dc0fc7f61d921cd2edf114c4 is an ancestor. Rejected unpublished fb781397855f6b27797dd083842da0a4db538c1e is not parent, ancestor, or cherry-pick.
  • Unique files versus parent:
    • .github/workflows/release.yml
    • scripts/ci/setup_musl_certification.sh
    • scripts/test_certify_musl_release_archive_contract.sh
  • Unique files versus origin/main also include:
    • scripts/certify_musl_release_archive.sh
    • scripts/ci/test-release-contracts.sh
    • scripts/classify_release_build_matrix.py
    • scripts/test_channel_workflow_contract.sh
  • GPG Good key 7CD32E7697286B11593246B9FA53358CB4127512; matching DCO present.
  • Local: classifier 16-case matrix; scripts/test_channel_workflow_contract.sh; scripts/test_certify_musl_release_archive_contract.sh; scripts/ci/test-release-contracts.sh.
  • git diff --check clean; release.yml is 995 lines; ci.yml is unchanged.

Residuals and claim limits

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

  • Linked to an issue
  • Changelog fragment skipped for this release-guard-only change; PR is labeled skip-changelog
  • I understand every change in this PR and can explain its design, risks, and validation.
  • I reviewed and tested the meaningful tool-generated output included in this PR.
  • Every non-bot, non-merge commit has a matching Signed-off-by trailer.

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]>
Copilot AI balanced review requested due to automatic review settings September 5, 2026 04:46
@joshuajbouw joshuajbouw added skip-changelog Skip changelog enforcement for this PR release Release train PR with a durable tracking issue no-issue PR has no closing issue; explain in Linked Issue labels Sep 5, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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.

Comment thread .github/workflows/release.yml
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
joshuajbouw marked this pull request as ready for review September 5, 2026 05:29
@joshuajbouw
joshuajbouw merged commit 1897e08 into main Sep 5, 2026
30 of 33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-issue PR has no closing issue; explain in Linked Issue release Release train PR with a durable tracking issue skip-changelog Skip changelog enforcement for this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release Astrid Runtime 2026.9.0

2 participants