Skip to content

chore(ci): bump mozilla-actions/sccache-action from 0.0.9 to 0.0.10 in the github-actions-all group across 1 directory #339

chore(ci): bump mozilla-actions/sccache-action from 0.0.9 to 0.0.10 in the github-actions-all group across 1 directory

chore(ci): bump mozilla-actions/sccache-action from 0.0.9 to 0.0.10 in the github-actions-all group across 1 directory #339

Workflow file for this run

name: CI - Verification
on:
push:
branches: [main]
paths:
- '**.rs'
- '**/Cargo.toml'
- '**/Cargo.lock'
- 'specs/**'
- 'scripts/verification/verify-*.sh'
- 'scripts/verification/check-kani-coverage.sh'
- '.github/workflows/ci-verification.yml'
pull_request:
branches: [main]
paths:
- '**.rs'
- '**/Cargo.toml'
- '**/Cargo.lock'
- 'specs/**'
- 'scripts/verification/verify-*.sh'
- 'scripts/verification/check-kani-coverage.sh'
- '.github/workflows/ci-verification.yml'
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
# Validate Kani proof coverage before running actual proofs
kani-coverage-check:
name: Kani Proof Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Validate Kani proof coverage
run: ./scripts/verification/check-kani-coverage.sh
# This ensures all #[kani::proof] functions are in tier lists
# TLA+ Model Checking
tla-verification:
name: TLA+ Model Checking
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Java 17
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
- name: Cache TLA+ tools
uses: actions/cache@v5
with:
path: .tla-tools
key: tla-tools-v1.8.0
- name: Run TLA+ verification
run: ./scripts/verification/verify-tla.sh --fail-fast
timeout-minutes: 30
# Z3 SMT Solver Verification
z3-verification:
name: Z3 SMT Verification
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install cargo-nextest
uses: ./.github/actions/install-cargo-tool
with:
tool: cargo-nextest
- name: Configure sccache
id: sccache
uses: mozilla-actions/sccache-action@v0.0.10
continue-on-error: true
- name: Verify sccache is working
id: sccache-check
if: steps.sccache.outcome == 'success'
run: ./scripts/ci/verify-sccache.sh
continue-on-error: true
- name: Clear sccache env on failure
if: steps.sccache.outcome != 'success' || steps.sccache-check.outcome != 'success'
run: |
echo "RUSTC_WRAPPER=" >> "$GITHUB_ENV"
echo "SCCACHE_GHA_ENABLED=" >> "$GITHUB_ENV"
- name: Cache cargo registry and build
uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: z3-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
z3-${{ runner.os }}-cargo-
- name: Install Z3 library
run: sudo apt-get update && sudo apt-get install -y libz3-dev
- name: Run Z3 verification tests (nextest)
run: cargo nextest run --profile ci --test verification --features z3-verification -E 'test(z3)'
timeout-minutes: 10
env:
RUSTC_WRAPPER: ${{ steps.sccache-check.outputs.working == 'true' && 'sccache' || '' }}
SCCACHE_GHA_ENABLED: ${{ steps.sccache-check.outputs.working == 'true' && 'true' || 'false' }}
SCCACHE_IGNORE_SERVER_IO_ERROR: "1"
SCCACHE_STARTUP_NOTIFY_TIMEOUT: "60"
SCCACHE_IDLE_TIMEOUT: "0"
# Kani Formal Verification (Tier 1 - Fast proofs)
kani-tier1:
name: Kani Tier 1 (Fast)
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v6
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Cache Kani
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/cargo-kani
~/.cargo/bin/kani-*
~/.kani
key: kani-0.66.0-${{ runner.os }}
- name: Install Kani with retry
uses: nick-fields/retry@v4
with:
timeout_minutes: 15
max_attempts: 3
retry_wait_seconds: 60
command: |
if ! command -v cargo-kani &> /dev/null; then
cargo install --locked kani-verifier
cargo kani setup
fi
- name: Verify toolchain
run: |
echo "=== Environment Diagnostics ==="
echo "PATH: $PATH"
echo "Cargo: $(which cargo)"
echo "Rustc: $(rustc --version)"
echo "Kani: $(cargo kani --version)"
- name: Run Kani verification (Tier 1 - Fast)
run: ./scripts/verification/verify-kani.sh --quick --tier 1 --fail-fast --verbose
timeout-minutes: 15
# Kani Formal Verification (Tier 2 - Medium proofs, split into 6 parallel jobs)
kani-tier2:
name: Kani Tier 2 (${{ matrix.part }}/6)
runs-on: ubuntu-latest
continue-on-error: true
strategy:
fail-fast: false
matrix:
part: [1, 2, 3, 4, 5, 6]
steps:
- uses: actions/checkout@v6
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Cache Kani
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/cargo-kani
~/.cargo/bin/kani-*
~/.kani
key: kani-0.66.0-${{ runner.os }}
- name: Install Kani with retry
uses: nick-fields/retry@v4
with:
timeout_minutes: 15
max_attempts: 3
retry_wait_seconds: 60
command: |
if ! command -v cargo-kani &> /dev/null; then
cargo install --locked kani-verifier
cargo kani setup
fi
- name: Verify toolchain
run: |
echo "=== Environment Diagnostics ==="
echo "PATH: $PATH"
echo "Cargo: $(which cargo)"
echo "Rustc: $(rustc --version)"
echo "Kani: $(cargo kani --version)"
- name: Run Kani verification (Tier 2 - Part ${{ matrix.part }}/6)
run: ./scripts/verification/verify-kani.sh --quick --tier 2 --part ${{ matrix.part }} --parts 6 --fail-fast --jobs 2
timeout-minutes: 10
# Kani Formal Verification (Tier 3 - Slow proofs, split into 5 parallel jobs)
kani-tier3:
name: Kani Tier 3 (${{ matrix.part }}/5)
runs-on: ubuntu-latest
continue-on-error: true
strategy:
fail-fast: false
matrix:
part: [1, 2, 3, 4, 5]
steps:
- uses: actions/checkout@v6
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Cache Kani
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/cargo-kani
~/.cargo/bin/kani-*
~/.kani
key: kani-0.66.0-${{ runner.os }}
- name: Install Kani with retry
uses: nick-fields/retry@v4
with:
timeout_minutes: 15
max_attempts: 3
retry_wait_seconds: 60
command: |
if ! command -v cargo-kani &> /dev/null; then
cargo install --locked kani-verifier
cargo kani setup
fi
- name: Verify toolchain
run: |
echo "=== Environment Diagnostics ==="
echo "PATH: $PATH"
echo "Cargo: $(which cargo)"
echo "Rustc: $(rustc --version)"
echo "Kani: $(cargo kani --version)"
- name: Run Kani verification (Tier 3 - Part ${{ matrix.part }}/5)
run: ./scripts/verification/verify-kani.sh --quick --tier 3 --part ${{ matrix.part }} --parts 5 --fail-fast --jobs 2
timeout-minutes: 20
# Loom Concurrency Testing (cross-platform)
loom-tests:
name: Loom Concurrency Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v6
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry and build
uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
loom-tests/target
key: loom-${{ matrix.os }}-cargo-${{ hashFiles('loom-tests/Cargo.lock') }}
restore-keys: |
loom-${{ matrix.os }}-cargo-
- name: Run Loom tests
working-directory: loom-tests
run: cargo test --release
env:
RUSTFLAGS: "--cfg loom"
LOOM_MAX_PREEMPTIONS: 3