Skip to content

ci(release): make build-test-evidence non-blocking (round 2) (#293)#294

Merged
avrabe merged 1 commit into
mainfrom
ci/release-test-evidence-nonblocking-v2
May 16, 2026
Merged

ci(release): make build-test-evidence non-blocking (round 2) (#293)#294
avrabe merged 1 commit into
mainfrom
ci/release-test-evidence-nonblocking-v2

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 16, 2026

Summary

v0.10.0 release workflow built all binaries successfully but `Create GitHub Release` was skipped because `build-test-evidence` failed on the spar→highs-sys WASI cross-compile (transitive CMake `Threads::Threads` issue). I manually republished v0.10.0 from the workflow artifacts.

To prevent the hand-republish on every future tag push, this PR:

  • Makes `build-test-evidence` `continue-on-error: true`. The job still runs and uploads when it succeeds.
  • Removes `build-test-evidence` from `create-release.needs`. The Collect-assets step uses a permissive `find` that tolerates the missing tarball.

The root-cause investigation is tracked in #293 — once that lands, this commit can be reverted.

History

Test plan

  • Next tag push (v0.11+) publishes the release page without manual intervention.
  • If `build-test-evidence` succeeds, the tarball appears in the release as before.
  • If it fails, the release still publishes; the workflow shows yellow not red.

🤖 Generated with Claude Code

…) — round 2 (#293)

v0.10.0 manual republish forensics:
The release workflow on tag v0.10.0 (run 25966236046) built all five
cross-platform binaries, the VSIX, the compliance report, the baseline
snapshot, and ran docs-check successfully. The "Create GitHub Release"
job was skipped because it `needs: build-test-evidence`, and that job
failed on the spar -> highs-sys WASI cross-compile (CMake
Threads::Threads target not available in the wasi-sdk 25.0 sysroot).

The release was published manually from the workflow artifacts. To
prevent this hand-republish on every future tag push:

- `build-test-evidence`: `continue-on-error: true`. The job still runs
  and uploads its artifact when it succeeds (desirable add-on), but a
  failure no longer marks the run as failed.
- `create-release.needs`: drop `build-test-evidence`. The Collect assets
  step uses a permissive `find` and tolerates the missing tarball.

History: #272 originally introduced the continue-on-error; #274 reverted
it with the wasi-sdk integration that we expected to handle highs-sys.
v0.10.0 proved that's still not enough. Tracking the upstream fix in
#293 — once that's resolved, this commit can be reverted.

Refs: #293
@avrabe avrabe merged commit c9151f6 into main May 16, 2026
13 of 14 checks passed
@avrabe avrabe deleted the ci/release-test-evidence-nonblocking-v2 branch May 16, 2026 17:49
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 814a160 Previous: e2466db Ratio
store_lookup/100 2145 ns/iter (± 24) 1670 ns/iter (± 33) 1.28
store_lookup/1000 27139 ns/iter (± 455) 19188 ns/iter (± 119) 1.41
traceability_matrix/1000 57009 ns/iter (± 2243) 41149 ns/iter (± 163) 1.39
query/1000 7774 ns/iter (± 124) 5467 ns/iter (± 16) 1.42

This comment was automatically generated by workflow using github-action-benchmark.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

avrabe added a commit that referenced this pull request May 17, 2026
…296)

Supply-Chain-Pentester finding (v0.10.0 adversarial review):
SHA256SUMS shipped unsigned, so anyone who could replace a release
asset could also replace the checksum file. The dossier sold defect
detection (true) but quietly implied tamper detection (false).

Closes 80% of that gap with sigstore keyless OIDC — no long-lived
signing key, no KMS provisioning, no rotation. The trust anchor is
the GitHub-Actions workflow identity (issuer
`token.actions.githubusercontent.com`, subject
`.github/workflows/release.yml@refs/tags/vX.Y.Z`).

Workflow changes:
- `permissions.id-token: write` so the runner can request its OIDC
  token (required by cosign keyless flow).
- New `Install cosign` step (sigstore/cosign-installer@v3, v2.4.1).
- New `Sign SHA256SUMS with cosign (keyless OIDC)` step between
  checksum generation and release creation. Emits three artifacts:
  - `SHA256SUMS.txt.cosign.bundle` (verifier-friendly bundle)
  - `SHA256SUMS.txt.sig` (detached signature)
  - `SHA256SUMS.txt.pem` (Fulcio-issued short-lived cert)
- The existing `Collect assets` step's permissive `find` already
  picks up the new files; the release page will include them
  automatically.

New `RELEASING.md` documents:
- Why signed git tags matter + how to verify (`git tag -v`).
- What CI signs (and why sigstore keyless was chosen).
- How a consumer verifies a downloaded binary (two-step flow:
  cosign verify-blob on the bundle, then sha256sum -c).
- What is explicitly NOT signed at v0.10.0+ (binary archives
  transitively only, VSIX, compliance tarball, the maintainer's
  GPG keylist — for parity with the dossier §0 honest scope).
- The manual-republish procedure used for v0.10.0 (#294 context).

This addresses the Supply-Chain-Pentester's "one minimum primitive
that closes 80% of the gaps" recommendation. The remaining 20%
(per-archive signatures, VSIX signing, attestation in-toto bundle)
are separate workstreams.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant