V117: all-features compilation, cargo deny, PRNG feature gate, docs/h… #103
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
| # SPDX-License-Identifier: AGPL-3.0-or-later | |
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| check: | |
| name: Rust checks | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy, rustfmt | |
| - run: cargo fmt -p groundspring -p groundspring-validate -p groundspring-forge -- --check | |
| - run: cargo clippy --workspace --all-targets -- -D warnings -W clippy::pedantic -W clippy::nursery | |
| - run: cargo clippy --workspace --all-targets --features barracuda -- -D warnings -W clippy::pedantic -W clippy::nursery | |
| - run: cargo clippy --workspace --all-targets --all-features -- -D warnings -W clippy::pedantic -W clippy::nursery | |
| - run: RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --all-features | |
| - run: cargo test --workspace | |
| - run: cargo test --workspace --features barracuda | |
| - run: cargo test --workspace --all-features | |
| validate: | |
| name: Validation binaries | |
| runs-on: ubuntu-latest | |
| needs: check | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cargo run --bin validate_decompose | |
| - run: cargo run --bin validate_rarefaction | |
| - run: cargo run --bin validate_seismic | |
| - run: cargo run --bin validate_weather | |
| - run: cargo run --bin validate_fao56 | |
| - run: cargo run --bin validate_signal_specificity | |
| - run: cargo run --bin validate_rawr | |
| - run: cargo run --bin validate_anderson | |
| - run: cargo run --bin validate_quasiperiodic | |
| - run: cargo run --bin validate_bistable | |
| - run: cargo run --bin validate_multisignal | |
| - run: cargo run --bin validate_transport | |
| - run: cargo run --bin validate_resampling_conv | |
| - run: cargo run --bin validate_drift | |
| - run: cargo run --bin validate_uncertainty_bridge | |
| - run: cargo run --bin validate_rare_biosphere | |
| - run: cargo run --bin validate_quasispecies | |
| - run: cargo run --bin validate_band_edge | |
| - run: cargo run --bin validate_jackknife | |
| - run: cargo run --bin validate_freeze_out | |
| - run: cargo run --bin validate_spectral_recon | |
| - run: cargo run --bin validate_et0_anderson | |
| - run: cargo run --bin validate_notill_sampling | |
| - run: cargo run --bin validate_aggregate_stability | |
| - run: cargo run --bin validate_precision_drift | |
| - run: cargo run --bin validate_size_convergence | |
| - run: cargo run --bin validate_vendor_parity | |
| - run: cargo run --bin validate_npu_anderson || echo "NPU binary skipped (requires AKD1000 hardware)" | |
| - run: cargo run --bin validate_tissue_anderson | |
| - run: cargo run --bin validate_et0_methods | |
| validate-biomeos: | |
| name: biomeOS validation (NUCLEUS-dependent) | |
| runs-on: ubuntu-latest | |
| needs: check | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cargo run --features biomeos --bin validate_real_ghcnd_et0 || echo "skipped (requires NUCLEUS + NestGate)" | |
| - run: cargo run --features biomeos --bin validate_real_ncbi_16s || echo "skipped (requires NUCLEUS + NestGate)" | |
| - run: cargo run --features biomeos --bin validate_nucleus_stack || echo "skipped (requires NUCLEUS)" | |
| - run: cargo run --features biomeos --bin validate_iris_seismic || echo "skipped (requires NUCLEUS + NestGate)" | |
| validate-metalforge: | |
| name: metalForge validation | |
| runs-on: ubuntu-latest | |
| needs: check | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cargo run --bin validate_metalforge_inventory || echo "metalForge inventory skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_metalforge_spectral || echo "metalForge spectral skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_metalforge_mathieu || echo "metalForge mathieu skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_metalforge_pipeline || echo "metalForge pipeline skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_metalforge_gpu || echo "metalForge GPU skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_metalforge_titan_v || echo "metalForge Titan V skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_metalforge_cross_substrate || echo "metalForge cross-substrate skipped (requires GPU+NPU)" | |
| - run: cargo run --features biomeos --bin validate_nestgate_ncbi || echo "NestGate NCBI skipped (requires NUCLEUS)" | |
| - run: cargo run --features biomeos --bin validate_nucleus_pipeline || echo "NUCLEUS pipeline skipped (requires NUCLEUS)" | |
| - run: cargo run --bin validate_gpu_tier || echo "GPU tier skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_pure_gpu_workloads || echo "pure GPU workloads skipped (requires GPU hardware)" | |
| - run: cargo run --bin validate_mixed_hardware || echo "mixed hardware skipped (requires GPU+NPU)" | |
| python: | |
| name: Python baselines | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - run: pip install -e ".[dev]" | |
| - run: ruff check control/ tests/ | |
| - run: mypy control/ tests/ | |
| - run: python -m pytest tests/test_common.py tests/test_determinism.py tests/test_baseline_integrity.py -v | |
| - run: python -m pytest tests/test_experiments.py -v --timeout=300 | |
| - run: python -m pytest tests/ --cov=control --cov-fail-under=80 --timeout=300 | |
| coverage: | |
| name: Coverage | |
| runs-on: ubuntu-latest | |
| needs: check | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: llvm-tools-preview | |
| - run: cargo install cargo-llvm-cov | |
| - run: cargo llvm-cov --workspace --ignore-filename-regex '(validate_|bench_|bin/)' --lcov --output-path lcov.info --fail-under-lines 90 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage | |
| path: lcov.info | |
| deny: | |
| name: Dependency Audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: EmbarkStudios/cargo-deny-action@v2 | |
| cross-compile: | |
| name: Cross-Compile Check (ecoBin aarch64) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: aarch64-unknown-linux-gnu | |
| - name: cargo check (aarch64, no features) | |
| run: cargo check --target aarch64-unknown-linux-gnu --workspace --no-default-features | |
| - name: cargo check (aarch64, barracuda) | |
| run: cargo check --target aarch64-unknown-linux-gnu --workspace --features barracuda |