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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Sovereign CI — calls reusable workflow from paiml/.github
name: CI
on:
push:
branches:
pull_request:
branches:
workflow_dispatch:
concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
ci:
uses: paiml/.github/.github/workflows/sovereign-ci.yml@main
with:
repo: ${{ github.event.repository.name }}
secrets: inherit
# Top-level gate satisfies the org ruleset "Green Main" which requires a
# status check named exactly `gate`. Reusable-workflow jobs always render
# as `ci / gate`; rulesets need an unprefixed top-level job to match.
gate:
runs-on: ubuntu-latest
needs:
if: always()
steps:
- name: Check required jobs
run: |
if [ "${{ needs.ci.result }}" != "success" ]; then
echo "ci failed: ${{ needs.ci.result }}"
exit 1
fi
echo "All required jobs passed"
# GH #625: `cargo install pmat` was broken on Windows for every published
# version, because no CI leg ever compiled for it — aprender's default `cli`
# feature pulled in aprender-profile, which does not build there, and all four
# Unix legs stayed green throughout.
#
# Informational for now (`continue-on-error`, and deliberately NOT in `gate`'s
# `needs`): this is the first time pmat's own sources reach the Windows
# compiler, so a second wave of unrelated failures is likely. Promote it to a
# required check once it has been green for a few runs.
windows-check:
runs-on: windows-latest
continue-on-error: true
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: cargo check --bin pmat (default features)
run: cargo check --bin pmat --locked
# GH-275: Post-merge mutation testing for RPS Rust Tooling score.
# Runs only on push to master (never on PRs — takes 30-120 min).
# `continue-on-error: true` keeps this informational, not blocking.
mutants:
runs-on:
continue-on-error: true
container:
image: localhost:5000/sovereign-ci:stable
timeout-minutes: 120
needs:
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v4
- name: Install cargo-mutants
run: cargo install cargo-mutants --locked
- name: Run mutation testing
run: cargo mutants --no-times --timeout 300 --in-place -- --lib
continue-on-error: true
- name: Upload mutation results
uses: actions/upload-artifact@v7
with:
name: mutation-results
path: mutants.out/