Skip to content

ci(gate): build app-shipped binaries with required-features#203

Merged
ohdearquant merged 3 commits into
mainfrom
pr/eng-0-ci-app-bins-gate
Jun 22, 2026
Merged

ci(gate): build app-shipped binaries with required-features#203
ohdearquant merged 3 commits into
mainfrom
pr/eng-0-ci-app-bins-gate

Conversation

@ohdearquant

Copy link
Copy Markdown
Owner

What

CI regression gate: build every binary the macOS Studio app ships, each with its required-features.

Why

cargo build --workspace (even with --all-targets) silently skips any [[bin]] that declares required-features unless those features are explicitly enabled. So a required-features binary can stop compiling and never trip fmt / clippy / test / build CI — the break only surfaces at app-packaging time.

Two real regressions slipped through exactly this gap this session and were caught only by hand:

  • train_grad_full — E0063, missing GDN gradient fields under train-backward
  • generate_lora — E0599, generate_streaming not in scope

This gate closes that hole. scripts/build-app-bins.sh builds all 9 app-shipped binaries with their real feature sets; app-binaries.yml runs it on macOS for every PR/push touching crates/**. It is a build gate (not -D warnings), so it catches compile regressions without tripping on pre-existing metal clippy debt.

Files

  • scripts/build-app-bins.sh (+57)
  • .github/workflows/app-binaries.yml (+40)

Verification

Ran against the integrated tree (main + all 8 engine slices): all 9 binaries built greenquantize_q4, quantize_quarot, lattice, qwen35_generate, train_grad_full (train-backward), generate_lora (safetensors,inference-hook), eval_perplexity (f16,metal-gpu), chat_metal (f16,metal-gpu), embed.

⚠️ Merge ordering

This gate's CI will FAIL on origin/main until the engine binaries it builds exist there (e.g. embed.rs is PR-3). Merge this LAST, after PR-1..6 land, so the gate goes green immediately and starts protecting every subsequent change.

Series

Part of the PR #193 engine-slice (finest split). The "regression tests implemented" gate Ocean asked for.

ohdearquant and others added 3 commits June 22, 2026 14:14
…eatures

cargo build --workspace skips bins that declare required-features, so
chat_metal, train_grad_full, generate_lora and friends can stop compiling
without tripping fmt/clippy/test/build CI — the break only shows at
app-packaging time. Two regressions slipped through this gap this cycle.

Adds scripts/build-app-bins.sh (mirrors package-app.sh's binary list) and an
app-binaries workflow on macos-latest that compiles every shipped binary with
the features the app builds it with.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ohdearquant ohdearquant merged commit 2e2d8a1 into main Jun 22, 2026
11 checks passed
@ohdearquant ohdearquant deleted the pr/eng-0-ci-app-bins-gate branch June 22, 2026 23:54
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