name: CI on: push: branches: [main] pull_request: branches: [main] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: name: Test (Python ${{ matrix.python-version }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.10", "3.11", "3.12"] steps: - name: Checkout uses: actions/checkout@v5 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} cache: pip - name: Install package + extras run: | python -m pip install --upgrade pip pip install -e '.[llm,eval,demo,frontier,dev]' - name: Verify dependency consistency run: pip check - name: Run pytest run: pytest tests/ -v --tb=short - name: Smoke test (env reset+step) run: make smoke-test - name: Link check (local paths, strict) run: make link-check link-check-http: # External URL probe — best-effort. Step-level continue-on-error so the # job shows green even when transient external failures happen (e.g. HF # Space mid-rebuild after a push). name: README http(s) link probe (allowed-fail) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: HEAD-probe external links continue-on-error: true run: make link-check-http - name: Annotate result (always succeeds) run: echo "Link probe ran (failures, if any, are non-blocking)." validate-openenv: name: openenv validate runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Set up Python 3.11 uses: actions/setup-python@v6 with: python-version: "3.11" cache: pip - name: Install package run: | python -m pip install --upgrade pip pip install -e '.[llm]' - name: Validate openenv manifest (static) run: openenv validate . continue-on-error: true