Repository navigation
Add build provenance attestation verification - #16
Gajesh2007 wants to merge 3 commits into
Conversation
Implements GitHub Sigstore-based build provenance attestation to verify that release bundles were built by the expected CI workflow, repo, actor, and runner environment. The coordinator verifies attestations via the GitHub API before accepting release registrations, closing the attack vector of a leaked RELEASE_KEY being used to register malicious releases.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Hermes Agent ReviewVerdict: Minor suggestions [WARNING]
[SUGGESTION]
[LOOKS GOOD]
Reviewed by Hermes Agent (hankbob) |
Funded attempts must settle (or recovery-review), not refund via release. Documents DECISIONS #16; race tests cover mark_start vs release and settle vs release before/after start auth.
Aligns chat path with DECISIONS #16 — do not release funded attempts; emit telemetry and return provider_start_failed_held for recovery review.
recover_start_authorized_held returns HeldForReview without moving money, matching DECISIONS #16 and the HTTP start-failure hold path.
Dry-run path for DECISIONS #16: marks a job start_authorized and asserts HeldForReview without moving money.
…ervation Ops dry-run for DECISIONS #16 force_settle_held: charges a review amount and restores unused reservation without using the forbidden release path.
Eight racing releases on a funded job; all Conflict; hold and balance unchanged (DECISIONS #16).
Eight racing releases on a resize-authorized job; all Conflict; hold remains (DECISIONS #16).
Release forbidden after start_authorized (DECISIONS #16). mark_start_authorized on already-authorized job Conflicts (not Ok).
Bump libs/mlx-swift to 6b0505c (fork main, PR #16: vendored MLX/MLX-C at 0.32.2 + regenerated JIT sources) and libs/mlx to 734241bb (fork main, PR #10: the 0.32.2 core squash carrying the darkbloom patch set). Content of the new core pin vs the previous darkbloom-base line, verified against the upstream v0.32.2 tag: identical to v0.32.2 plus the 16-file darkbloom set (E=256 expert-tile route, Gemma 4 expert-QMM tile kernel, Metal buffer-count bounds, gpu::eval UAF fix, resource-count telemetry, thread-safe CompileCacheRegistry). The hand-ported qmv_wide on darkbloom-base is superseded by upstream's real kernel inside 0.32.2. What the serving stack gains at B=1-5 (geometry verified from served checkpoint configs): read-each-K/V-byte-once GQA-8 decode attention (Qwen 3.5/3.6 35B are 16:2 heads, GPT-OSS 20B is 64:8), a fused full-attention path for head_dim 256 on NAX (both Qwen 35Bs), qmv_wide/ gemv_wide few-row matmuls, quantized-MoE NAX matmul improvements, and the raised qmv batch limit on M5-class GPUs, plus the dequantize-in-fp32 and qmm floor correctness fixes. libs/mlx .gitmodules branch moves darkbloom-base -> main: PRs #10/#16 made main the integration line; darkbloom-base remains as the legacy pre-0.32.2 base.
Summary
actions/attest-build-provenance@v4GITHUB_ATTESTATION_TOKEN,ATTESTATION_REQUIRED,TRUSTED_ACTORS) with soft mode (warnings) as defaultgh attestation verifyin install.sh for users with the GitHub CLIMotivation
Currently, a leaked
RELEASE_KEYalone is sufficient to register a malicious release with the coordinator. With this change, the coordinator independently verifies that the bundle was built by our GitHub Actions workflow, on GitHub-hosted runners, triggered by an authorized actor — even a compromised release key cannot bypass this.Changes
.github/workflows/release.ymlid-token: write+attestations: writepermissions,actions/attest-build-provenance@v4stepcoordinator/internal/buildattest/policy.gocoordinator/internal/buildattest/github.gocoordinator/internal/buildattest/verify.gocoordinator/internal/buildattest/verify_test.gocoordinator/internal/api/release_handlers.gocoordinator/internal/api/server.gocoordinator/cmd/coordinator/main.goscripts/install.shgh attestation verify(non-blocking)Deployment
To enable, set on the coordinator:
Test plan
go test -race ./...)CGO_ENABLED=0 GOOS=linux GOARCH=amd64gofmt+go vetcleanATTESTATION_REQUIRED=truein staging before production