fix(models): ggml type ids Q5_0/Q8_0 were transposed against upstream… #536
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: {} | |
| # Route the ambient decode paths through rayon rather than the spin pool. | |
| # A spin barrier needs a free core to spin on; a CI runner (2 cores on | |
| # ubuntu/windows, 3 on macos-14) has none to spare, so the pool's idle | |
| # backoff burns CPU without buying the decode win it exists for. | |
| # | |
| # Measured on the full `--lib` suite (805 tests, 2026-07-30): | |
| # spin pool on 13.0s wall, 156s CPU | |
| # LARQL_SPIN_POOL=0 8.1s wall, 112s CPU (-38% wall, -28% CPU) | |
| # | |
| # This does not cost coverage: `attention::decode::tests` drives *both* | |
| # the spin and rayon arms of `gqa_attention_decode_step` explicitly via | |
| # the thread-local override, and asserts they agree bit-for-bit. The | |
| # pool's own tests in `cpu::spin_pool` construct a `SpinPool` directly | |
| # and are unaffected by this flag either way. | |
| env: | |
| LARQL_SPIN_POOL: 0 | |
| 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@v7 | |
| - 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 (downloads only, never target/) | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-reg2-compute-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-reg2-compute- | |
| - name: No compiled workspace artefacts may be restored | |
| shell: bash | |
| run: | | |
| # The cache above carries downloads only. A target/ restored from | |
| # another commit can satisfy a link against stale code, so a green | |
| # matrix would be evidence about an artefact that is not in this | |
| # commit. Fail loudly rather than build on one. | |
| if [ -e target ]; then | |
| echo "::error::target/ was restored from cache - the cache key or path is wrong" | |
| exit 1 | |
| fi | |
| - 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@v7 | |
| - 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 |