litelite 0.2.0

A kit for purpose-sized languages: buy total verification with smallness. Diagnostics, lexing, parsing, fuel, and capability tables — the invariants paid once.
Documentation
name: ci
on:
  push:
    branches: [main]
  pull_request:

jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
          targets: wasm32-unknown-unknown
      - run: cargo fmt --check
      - run: cargo clippy --workspace --all-targets -- -D warnings
      - run: cargo test --workspace
      - run: cargo check --workspace --target wasm32-unknown-unknown
      - run: bash scripts/caps.sh

  # experiment/ is NOT a workspace member (it takes deps — rules 1+5 keep them
  # out of the kit's graph), so every gate above is blind to it and it would
  # rot silently. Gated here instead. NATIVE only, never wasm32: its deps are
  # exactly why it cannot be in the graph the wasm gate walks.
  experiment:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - run: cargo fmt --manifest-path experiment/Cargo.toml --check
      - run: cargo clippy --manifest-path experiment/Cargo.toml --all-targets -- -D warnings
      - run: cargo test --manifest-path experiment/Cargo.toml
      # proofbench = the N=2 (prooflite) reward tool; its own workspace.
      - run: cargo fmt --manifest-path experiment/proofbench/Cargo.toml --check
      - run: cargo clippy --manifest-path experiment/proofbench/Cargo.toml --all-targets -- -D warnings
      - run: cargo test --manifest-path experiment/proofbench/Cargo.toml

  # The M6 trainer's torch loop needs a GPU and is NOT run here — but its
  # anti-collapse guards (admission.py) are stdlib-only and load-bearing, so they
  # are byte-compiled and TESTED on every push. No torch installed.
  trainer:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.13"
      - run: python -m py_compile experiment/train/*.py
      - run: python experiment/train/test_select.py

  # `rust-version = "1.85"` is a PUBLISHED promise. Unverified, it rots the
  # first time someone uses a newer std method — and the rot only surfaces in
  # a downstream build. Make the claim mechanical, like every other one here.
  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - id: msrv
        run: |
          v=$(grep -m1 '^rust-version = ' Cargo.toml | cut -d'"' -f2)
          echo "version=$v" >> "$GITHUB_OUTPUT"
          echo "workspace claims MSRV $v"
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ steps.msrv.outputs.version }}
      - run: cargo check --workspace --all-targets