1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
name: Features (full matrix)
# The combinatorial feature work, moved off the PR critical path (ci.yml's
# `features` job keeps the cheap per-PR sentinels). A feature-combination
# break found here surfaces minutes after merge instead of pre-merge; with
# the admin-merge flow that trade buys back the single most expensive PR job
# (the workspace recompiled once per feature, ~127 combos). Failures show as
# a red X on the integration/main commit.
on:
push:
branches:
schedule:
- cron: "0 8 * * 1"
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
jobs:
features-full:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/rust-setup
with:
cache-key: features-full
- uses: cargo-bins/cargo-binstall@e00d2c94cc0067b77737821097a62d91c0301baa # v1.21.1
- run: cargo binstall --no-confirm --force cargo-hack
# Each-feature check (excludes local-llm: metal/cuda/cudnn/vulkan all
# need GPU toolchains unavailable on ubuntu-latest).
# No --locked here: --no-dev-deps rewrites Cargo.toml while cargo-hack
# runs, and --locked then refuses to update Cargo.lock. The two flags
# are mutually exclusive. Every other step keeps --locked.
- name: cargo hack (each feature)
run: cargo hack check --workspace --each-feature --no-dev-deps --exclude swink-agent-local-llm
# All-features workspace test
- name: Test (all features)
run: cargo test --workspace --all-features --exclude swink-agent-local-llm --locked