Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@
# advisory) and cargo-fmt on every touched-Rust change so formatting drift and
# license issues are caught at PR time.
#
# Clippy and cargo-test used to run here as `clippy + test (macOS ARM64)` on
# the self-hosted Apple Silicon runner, but each run consumed ~15 minutes of
# that single shared runner per PR push. Those gates were moved to the release
# workflow (`release.yml::build-macos`), which now runs fmt/clippy/test before
# producing signed artifacts. Local developers should run `make verify` (or
# `make verify-clean` for a cache-clear pass) before pushing to catch
# regressions that release-time CI will otherwise surface.
# Clippy and cargo-test do NOT run in any workflow. They used to run on the
# self-hosted Apple Silicon runner — first here at PR time, then briefly in
# release.yml — and in both cases consumed ~30 min per run, blocking either
# PRs or releases on a shared resource for failures that `make verify`
# reliably catches on the developer's machine in a fraction of the time.
#
# Quality gate lives locally. Pre-push checklist:
# make verify # fmt + clippy(metal,accelerate, -D warnings) + test(release)
# make verify-clean # same, after `cargo clean` — use when clippy's
# # per-crate cache may be hiding a regression
#
# Note on CUDA gating: CUDA verification stays exclusive to release.yml because
# it requires a Linux self-hosted runner (currently only the GB10 node used for
Expand Down
31 changes: 17 additions & 14 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,21 +96,24 @@ jobs:
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
components: clippy, rustfmt

# Quality gate — fmt / clippy / test. Used to live in ci.yml's
# `clippy + test (macOS ARM64)` job, but consumed ~15 min of the shared
# self-hosted runner on every PR push for limited PR-time signal. Moved
# here so the cost is paid once per release. Local devs should run
# `make verify` before pushing to catch regressions earlier.
- name: Format check
run: cargo fmt --all -- --check

- name: Clippy
run: cargo clippy --all-targets --features metal,accelerate -- -D warnings

- name: Test
run: cargo test --release --features metal,accelerate
# Lint and test deliberately do not run in this workflow.
#
# `clippy + test` against the macOS Apple Silicon target takes ~30+ min
# on the shared self-hosted runner. We tried gating it at PR time
# (ci.yml::clippy-and-test) and at release time (this job, see #21),
# and in both cases the cost outweighed the signal — PRs and releases
# were both being blocked on a slow shared resource for failures that
# `make verify` / `make verify-clean` reliably catch on the developer's
# machine in a fraction of the time.
#
# Quality gate lives locally now. Pre-push checklist:
# make verify # fmt + clippy(metal,accelerate, -D warnings) + test(release)
# make verify-clean # same, after `cargo clean` — use when clippy's
# # per-crate cache may be hiding a regression
#
# PR-time CI (ci.yml) still runs cargo-deny and cargo-fmt on ubuntu
# for cheap license/format drift detection.

- name: Build release binaries
run: cargo build --release --target aarch64-apple-darwin --locked
Expand Down