-
tests: tier 2
Evidence: pyproject.toml#tool.pytest, test_*.py files present, verified: `pytest -q` exited 0
-
lint: tier 2
Evidence: pyproject.toml#tool.ruff, verified: `ruff check .` exited 0
-
coverage: tier 2
Evidence: pyproject.toml#tool.coverage, verified: `pytest --cov` exited 0 (89% coverage), PR-scoped gate: SonarCloud/SonarQube with a coverage report configured (sonar-project.properties + .github/workflows/ci.yml); 'Coverage on New Code' is Sonar's default quality gate but its current on/off state isn't visible in repo files
-
reproducibility: tier 1
Evidence: requirements.txt (all deps pinned with ==)
-
ci gating: tier 1
Evidence: .github/workflows/ci.yml: runs pytest
-
static analysis: tier 1
Evidence: sonar-project.properties + .github/workflows/ci.yml: runs SonarQube/SonarCloud