Stability contract: stable kernel vs experimental (@asp / IncProv / G… #19
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: ci | |
| on: | |
| push: | |
| pull_request: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| # Slice 0 exit criterion: green workspace (build + test + fmt + clippy). | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo fmt --all --check | |
| - run: cargo clippy --workspace --all-targets -- -D warnings | |
| - run: cargo build --workspace --all-targets | |
| - run: cargo test --workspace | |
| # INFRA-11: the external differential oracles are MANDATORY here — a missing | |
| # binary fails the job (STRATA_REQUIRE_ORACLES), it does not silently skip. | |
| # `build` above stays oracle-free so the core loop is fast and hermetic; | |
| # skip-if-absent remains a local-development courtesy only. | |
| oracle-diff: | |
| runs-on: ubuntu-latest | |
| env: | |
| STRATA_REQUIRE_ORACLES: 1 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Install clingo/gringo/clasp (Ubuntu; the clingo binary ships in the gringo package) | |
| run: | | |
| set -euo pipefail | |
| sudo apt-get update | |
| sudo apt-get install -y gringo clasp | |
| clingo --version | |
| gringo --version | |
| clasp --version || true # clasp --version exits nonzero on some builds | |
| - name: Install Soufflé 2.5 (pinned release .deb) | |
| run: | | |
| set -euo pipefail | |
| curl -fsSL -o /tmp/souffle.deb \ | |
| https://github.com/souffle-lang/souffle/releases/download/2.5/x86_64-ubuntu-2404-souffle-2.5-Linux.deb | |
| sudo apt-get install -y /tmp/souffle.deb | |
| souffle --version | |
| - name: Soufflé differential (Bool engine vs souffle, incl. fuzz) | |
| run: cargo test -p strata-cli --test souffle_diff | |
| - name: clingo/clasp differentials (ASP stack) | |
| run: cargo test -p strata-asp | |
| # The Python bridge, with its oracles MANDATORY (same contract as above): | |
| # PySDD is the external-SDD differential, torch drives the GNN-training | |
| # example end to end. Versions pinned; wheels verified to exist for | |
| # cp312/manylinux before being written here. | |
| python-bridge: | |
| runs-on: ubuntu-latest | |
| env: | |
| STRATA_REQUIRE_ORACLES: 1 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install Python toolchain + oracles (pinned) | |
| run: | | |
| set -euo pipefail | |
| python -m pip install --upgrade pip | |
| pip install maturin==1.14.1 pytest==9.1.1 PySDD==1.0.6 numpy | |
| pip install torch==2.9.1 --index-url https://download.pytorch.org/whl/cpu | |
| - name: Build + install the bridge | |
| run: pip install ./crates/strata-py | |
| - name: pytest (bridge + SDD differential + GNN training) | |
| run: pytest crates/strata-py/tests -q |