Skip to content
Merged
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
22 changes: 20 additions & 2 deletions .github/workflows/sovereign-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# Change once here → applies to all 38 repos instantly.
#
# Self-hosted jobs run inside the sovereign-ci container (built by forjar).
# Each job gets an isolated filesystem — no shared ~/.rustup/, no race conditions.

Check warning on line 7 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

7:81 [line-length] line too long (82 > 80 characters)
# Image: localhost:5000/sovereign-ci:stable (local registry on mac-server)
# Rebuild: cd infra && make -f machines/intel/Makefile ci-image
#
Expand Down Expand Up @@ -48,7 +48,7 @@
default: false
type: boolean
extra_pkgs:
description: 'Extra apt packages to install in container (e.g. python3-dev libclang-dev)'

Check warning on line 51 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

51:81 [line-length] line too long (97 > 80 characters)
required: false
default: ''
type: string
Expand Down Expand Up @@ -83,7 +83,7 @@
jobs:
test:
name: test
runs-on: [self-hosted, clean-room]

Check failure on line 86 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

label "clean-room" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-intel", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
container:
image: localhost:5000/sovereign-ci:stable@sha256:10486da5daa3786f3264aa0e19fdde007e7ba1eca1d47ba587947946e42bd871
# Phase 3 §5.3 — sccache rustc cache + /var/log/ci-metrics for F9 stats.
Expand Down Expand Up @@ -112,7 +112,7 @@
persist-credentials: false
- name: Install extra packages
if: ${{ inputs.extra_pkgs != '' }}
run: |

Check failure on line 115 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2015:info:2:25: Note that A && B || C is not if-then-else. C may run when A is true
apt-get update -qq && apt-get install -y -qq ${{ inputs.extra_pkgs }} 2>/dev/null || \
sudo apt-get update -qq && sudo apt-get install -y -qq ${{ inputs.extra_pkgs }} 2>/dev/null || true
- name: Checkout sibling repos (path deps)
Expand Down Expand Up @@ -160,7 +160,7 @@
# Note: generated contract macros may have unused variables (provable-contracts#64).
# This is handled by adding -A unused-variables to the clippy step.
- name: Generate contract assertions (pv codegen)
run: |

Check failure on line 163 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2012:info:9:3: Use find instead of ls to better handle non-alphanumeric filenames
# pv is baked into sovereign-ci:stable at /usr/local/cargo/bin/pv
PV=""
for candidate in /usr/local/cargo/bin/pv /usr/local/bin/pv; do
Expand Down Expand Up @@ -211,7 +211,7 @@
SCCACHE_DIR: ${{ inputs.enable_sccache && '/sccache' || '' }}
USE_NEXTEST: ${{ inputs.use_nextest }}
TEST_SCOPE: ${{ inputs.test_workspace && '--workspace --lib' || '--lib' }}
run: |

Check failure on line 214 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2086:info:17:36: Double quote to prevent globbing and word splitting

Check failure on line 214 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2086:info:16:26: Double quote to prevent globbing and word splitting

Check failure on line 214 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2086:info:16:14: Double quote to prevent globbing and word splitting

Check failure on line 214 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2086:info:13:38: Double quote to prevent globbing and word splitting

Check failure on line 214 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2086:info:12:28: Double quote to prevent globbing and word splitting

Check failure on line 214 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2086:info:12:16: Double quote to prevent globbing and word splitting

Check failure on line 214 in .github/workflows/sovereign-ci.yml

View workflow job for this annotation

GitHub Actions / validate

shellcheck reported issue in this script: SC2086:info:10:43: Double quote to prevent globbing and word splitting
# Mark workspace as safe for git operations inside tests (dubious ownership in containers)
git config --global --add safe.directory "$GITHUB_WORKSPACE"
# Phase 2 §4.3 — nextest drops ~35% off test-job wall-clock on large suites.
Expand Down Expand Up @@ -763,8 +763,26 @@
# Note: generated contract macros may have unused variables (provable-contracts#64).
# This is handled by adding -A unused-variables to the clippy step.
- uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
- name: Install cargo-audit
run: cargo install cargo-audit --locked || true
# FIVE-WHYS ROOT CAUSE (2026-04-24, aprender#1043 ANDON, paiml/infra#77):
# The `security` job runs bare-metal (runs-on: [self-hosted, clean-room])
# so 16 intel-clean-room-* runners all share HOME=/home/noah and thus
# $HOME/.cargo/registry. Concurrent `cargo install cargo-audit` jobs
# race on src/ extraction + .cache/ writes, producing:
# warning: failed to write cache, path: ~/.cargo/registry/index/.../.cache/ca/rg/<crate>, Permission denied (os error 13)
# error: couldn't read ~/.cargo/registry/src/.../fnv-1.0.7/lib.rs: Permission denied
# error: could not compile `fnv` (lib) due to 1 previous error
# Per-runner CARGO_HOME (matches `target/` per-runner pattern already
# used by the `test`/`lint`/`coverage` jobs above) eliminates the race
# class at source. Independent of aprender#1043's workspace-test fix
# (which addresses the containerized workspace-test job's registry
# mount, not this bare-metal security job's $HOME).
- name: Install cargo-audit (per-runner CARGO_HOME)
run: |
export CARGO_HOME="/tmp/cargo-home-security-${{ runner.name }}"
mkdir -p "$CARGO_HOME"
echo "CARGO_HOME=$CARGO_HOME" >> "$GITHUB_ENV"
cargo install cargo-audit --locked --root "$CARGO_HOME" || true
echo "$CARGO_HOME/bin" >> "$GITHUB_PATH"
- name: Audit
run: |
# FIVE-WHYS ROOT CAUSE (2026-04-12):
Expand Down
Loading