Skip to content

Stability contract: stable kernel vs experimental (@asp / IncProv / G… #19

Stability contract: stable kernel vs experimental (@asp / IncProv / G…

Stability contract: stable kernel vs experimental (@asp / IncProv / G… #19

Workflow file for this run

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