name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: name: Tests (Python ${{ matrix.python-version }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ['3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Run tool test suite run: python3 -m unittest test_tools.py test_coverage.py test_loop.py test_verify.py test_research.py test_mcp.py -v - name: Byte-compile every tool (syntax gate) run: | set -e find tools mcp -name '*.py' -print0 | xargs -0 -n1 python3 -m py_compile - name: Packaging test — pip install into a fresh venv run: python3 -m unittest test_packaging.py -v - name: Benchmark scorer smoke test run: | python3 tools/hermaguard-benchmark/benchmark.py --help >/dev/null echo "benchmark scorer: OK" - name: Grader smoke test run: | python3 tools/hermaguard-grader/hermaguard_grader.py --self-test >/dev/null echo "grader: OK" - name: Coverage checklist self-check run: | python3 tools/hermaguard-coverage/hermaguard-coverage.py --self-check echo "coverage checklist: OK" actionlint: name: Lint GitHub Actions runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run actionlint on all workflow files run: | bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) ./actionlint -shellcheck= .github/workflows/ci.yml integrations/github-action/action.yml