name: CI
on:
push:
branches:
- main
- develop
pull_request:
permissions: read-all
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
rust-lint:
name: Rust Formatting & Clippy Lints
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Setup Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cargo Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-lint-
- name: Enforce Formatting (cargo fmt)
run: cargo fmt --all -- --check
- name: Compile and Lint (cargo clippy)
run: cargo clippy --all-targets --workspace -- -D warnings
rust-test:
name: Rust Unit & Integration Tests
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Setup Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cargo Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-test-
- name: Run Tests (cargo test)
run: cargo test --workspace --verbose
docs-validation:
name: Docs Link Validation
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Validate Markdown Docs Links
uses: lycheeverse/lychee-action@f613c4a64e50d792e0b31ec34bbcbba12263c6a6 with:
lycheeVersion: v0.22.0
args: >-
--exclude-loopback
--accept 200,204,301,429
README.md
AGENTS.md
plan.md
docs/architecture.md
docs/capabilities.md
docs/DEPLOYMENT.md
docs/index.md
docs/memory_state.md
docs/oracle_circuit.md
docs/tensor_routing.md
fail: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}