Merge pull request #540 from AdaWorldAPI/claude/lite-unified-gate #850
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
| name: Style Check | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| paths: | |
| - crates/** | |
| - Cargo.toml | |
| - Cargo.lock | |
| - .github/workflows/style.yml | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUSTFLAGS: "-C debuginfo=1 -C target-cpu=x86-64-v3" | |
| # Least-privilege: these jobs only read the repo (checkout + build + lint). | |
| permissions: | |
| contents: read | |
| jobs: | |
| # Clippy runs FIRST and is mandatory — logical soundness before syntax. | |
| # Discipline: | |
| # - NEVER use `clippy --fix` for unused-import warnings; they signal | |
| # missing wiring, not dead code. Fix the wiring or add `#[allow]` | |
| # with a comment explaining why. | |
| # - Each clippy violation is owned by the author of the code that | |
| # introduced it; resolve manually. | |
| # - Run clippy in batches (per-feature combo), not after every file edit. | |
| clippy: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 25 | |
| defaults: | |
| run: | |
| working-directory: lance-graph | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: lance-graph | |
| - name: Checkout AdaWorldAPI/ndarray (sibling dependency) | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: AdaWorldAPI/ndarray | |
| # ndarray master now exports wht_f32, kmeans, squared_l2, | |
| # dequantize_i8_to_f32, quantize_f32_to_i2, dequantize_i2_to_f32 | |
| # publicly (ndarray PR #115, merged 2026-04-30). Pin retired. | |
| path: ndarray | |
| - name: Setup rust toolchain | |
| run: | | |
| rustup toolchain install stable | |
| rustup default stable | |
| rustup component add clippy | |
| - uses: Swatinem/rust-cache@v2 | |
| with: | |
| shared-key: "lance-graph-deps" | |
| workspaces: lance-graph/crates/lance-graph | |
| - name: Install dependencies | |
| run: | | |
| sudo apt update | |
| sudo apt install -y protobuf-compiler | |
| # Clippy is gated tier-by-tier as the codebase incrementally adopts it. | |
| # PRs that touch a new crate own that crate's clippy debt before merging. | |
| # | |
| # Tier A (mandatory, gating): zero-dep contract crate | |
| - name: Clippy contract (zero-dep, mandatory) | |
| run: cargo clippy --manifest-path crates/lance-graph-contract/Cargo.toml --lib --tests -- -D warnings | |
| # Tier B (advisory until incrementally cleaned, non-gating): | |
| # lance-graph core has ~91 pre-existing clippy violations to be paid down | |
| # in subsequent PRs (TD-CLIPPY-LG-1). Don't auto-fix — each violation | |
| # is a wiring/refactor decision owned by the introducing author. | |
| - name: Clippy lance-graph (advisory) | |
| continue-on-error: true | |
| run: cargo clippy --manifest-path crates/lance-graph/Cargo.toml --lib --tests -- -D warnings | |
| # Tier A (mandatory, gating): deepnsm is now clippy-clean — TD-DEEPNSM-CLIPPY-195 | |
| # resolved 2026-06-09 by a hand-reviewed sweep. It's a standalone 0-dep codec | |
| # crate, workspace-excluded, so the lance-graph clippy steps don't cover it; | |
| # gate it explicitly (same posture as the contract crate) so it can't regress. | |
| - name: Clippy deepnsm (mandatory) | |
| run: cargo clippy --manifest-path crates/deepnsm/Cargo.toml --all-targets -- -D warnings | |
| format: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 15 | |
| needs: clippy | |
| defaults: | |
| run: | |
| working-directory: lance-graph | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| path: lance-graph | |
| - name: Checkout AdaWorldAPI/ndarray (sibling dependency for cargo metadata) | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: AdaWorldAPI/ndarray | |
| # ndarray master now exports wht_f32, kmeans, squared_l2, | |
| # dequantize_i8_to_f32, quantize_f32_to_i2, dequantize_i2_to_f32 | |
| # publicly (ndarray PR #115, merged 2026-04-30). Pin retired. | |
| path: ndarray | |
| - uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| with: | |
| components: rustfmt | |
| - name: Check formatting (lance-graph) | |
| run: cargo fmt --manifest-path crates/lance-graph/Cargo.toml -- --check | |
| # deepnsm is a standalone, workspace-excluded codec crate, so | |
| # `cargo fmt --all` never reaches it. It was brought to a rustfmt-clean | |
| # baseline in this PR; check it explicitly so it can't silently drift. | |
| - name: Check formatting (deepnsm) | |
| run: cargo fmt --manifest-path crates/deepnsm/Cargo.toml -- --check | |
| # typos / spell-check removed 2026-04-26: too many false positives on | |
| # technical jargon (NARS terms, codec acronyms, German loanwords used in | |
| # the cognitive stack). Spelling discipline is a code-review concern, | |
| # not a CI gate. | |