aufbau 0.1.2

Generalized prefix parsing for a class of context-dependent languages
Documentation
name: Validation

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  CARGO_TERM_COLOR: always

jobs:
  check:
    name: Rust checks and validation suites
    runs-on: ubuntu-latest
    timeout-minutes: 60

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable
          components: rustfmt

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2

      - name: Check default targets
        run: cargo check --all-targets --locked

      - name: Check Python FFI targets
        run: cargo check --all-targets --features python-ffi --locked

      - name: Run tests
        run: cargo test --all-targets --locked

      - name: Check crate package
        run: cargo package --locked

      - name: Run validation suites
        run: |
          cargo run --release --bin aufbau -- validate \
            --jobs "$(nproc)" \
            --completable-timeout-secs 30

      - name: Show generated reports
        if: always()
        run: |
          echo "Validation reports:"
          ls -la src/validation/reports || true
          echo "--- latest report ---"
          ls -t src/validation/reports/*.txt 2>/dev/null | head -n 1 || true
          tail -n +1 src/validation/reports/*.txt 2>/dev/null || true

      - name: Upload validation reports
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: validation-reports-check
          path: src/validation/reports/*.txt