Co-Study4Grid / .github /workflows /code-quality.yml
github-actions[bot]
Deploy 7688ef1
13d4e44
Raw
History Blame Contribute Delete
2.01 kB
name: Code Quality
on:
push:
branches: [main]
# Run on every PR regardless of its base branch (e.g. PRs stacked onto a
# `claude/*` working branch, not just those targeting main).
pull_request:
branches: ['**']
jobs:
gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install quality tooling
run: |
python -m pip install --upgrade pip
pip install ".[quality]"
pip install pytest
- name: Run ruff (lightweight lint)
run: ruff check expert_backend scripts
- name: Run code-quality gate
run: python scripts/check_code_quality.py
- name: Run docs-tree gate (D9)
# Fails when a CLAUDE.md reference points at a file that no longer exists
# or reintroduces a rotting `file.py:NNN` line anchor. See
# docs/architecture/code-quality-analysis.md §23.
run: python scripts/check_docs_tree.py
- name: Run reporter + docs-tree unit tests
run: pytest scripts/test_code_quality_report.py scripts/test_check_docs_tree.py -q
- name: Run mypy (gate)
# GATES the build: the shared-state base (services/_recommender_state.py)
# makes the mixin composition type-check cleanly, so mypy is at 0 and
# any new type error fails CI (see pyproject [tool.mypy] + §19).
run: mypy
- name: Generate report artifacts
run: |
python scripts/code_quality_report.py \
--output reports/code-quality.json \
--markdown reports/code-quality.md
- name: Publish report to workflow summary
if: always()
run: cat reports/code-quality.md >> "$GITHUB_STEP_SUMMARY"
- name: Upload report
uses: actions/upload-artifact@v4
with:
name: code-quality-report
path: reports/
retention-days: 30