harden(compute): spin_pool chunk-size underflow + production-shape st… #168
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # larql-compute cross-platform CI | |
| # | |
| # Validates the CPU baseline on Linux, Windows, and macOS. After the | |
| # Metal extraction (ADR-019), this workflow is CPU-only — Metal GPU | |
| # validation lives in `.github/workflows/larql-compute-metal.yml`. | |
| name: larql-compute | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'crates/larql-compute/**' | |
| - 'crates/larql-models/**' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| - 'Makefile' | |
| - '.github/workflows/larql-compute.yml' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - 'crates/larql-compute/**' | |
| - 'crates/larql-models/**' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| - 'Makefile' | |
| - '.github/workflows/larql-compute.yml' | |
| workflow_dispatch: {} | |
| jobs: | |
| test: | |
| name: test · ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 35 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-14] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install stable Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy, rustfmt | |
| - name: Install OpenBLAS (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libopenblas-dev pkg-config | |
| - name: Install OpenBLAS (Windows) | |
| if: runner.os == 'Windows' | |
| shell: pwsh | |
| run: | | |
| $root = $env:VCPKG_INSTALLATION_ROOT | |
| if (-not $root) { | |
| $root = 'C:\vcpkg' | |
| } | |
| & "$root\vcpkg.exe" install openblas:x64-windows | |
| "VCPKG_ROOT=$root" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| "$root\installed\x64-windows\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| - name: Cache cargo registry + build artefacts | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-compute-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-compute- | |
| - name: Format check | |
| run: cargo fmt -p larql-compute -- --check | |
| - name: Check default features | |
| run: cargo check -p larql-compute --all-targets | |
| - name: Check all features | |
| run: cargo check -p larql-compute --all-targets --all-features | |
| - name: Clippy default features | |
| # `--no-deps` so warnings in sibling crates' in-flight work do | |
| # not promote to errors here; matches the local `make | |
| # larql-compute-lint` target. | |
| run: cargo clippy -p larql-compute --all-targets --no-deps -- -D warnings | |
| - name: Clippy all features | |
| run: cargo clippy -p larql-compute --all-targets --no-deps --all-features -- -D warnings | |
| - name: Unit tests | |
| run: cargo test -p larql-compute --lib | |
| - name: Backend contract tests | |
| run: cargo test -p larql-compute --test test_backend_matmul_quant | |
| coverage: | |
| name: coverage · ubuntu | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install stable Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install OpenBLAS | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libopenblas-dev pkg-config | |
| - name: Install cargo-llvm-cov | |
| uses: taiki-e/install-action@cargo-llvm-cov | |
| - name: Coverage policy gate | |
| # `make larql-compute-coverage-summary` runs `cargo llvm-cov` | |
| # with `--fail-under-lines` AND invokes | |
| # `scripts/check_coverage_policy.py`, so any regression on | |
| # per-file floors or the total floor fails CI here. | |
| run: make larql-compute-coverage-summary |