--- trigger: always_on --- # CI Rules ## Overview - CI runs from `.gitea/workflows/`. - Use `scripts/ci/*` for shared pipeline logic to keep workflows DRY and consistent. ## Required Checks ### Backend - Lint: ruff - Type checking: mypy - Tests: pytest with coverage ≥100% ### Frontend - Lint: eslint - Tests: jest with coverage threshold (≥90% or match backend at 100% for symmetry) ## Pull Requests and Branch Protection - No merges to `main` without green pipelines (all required checks must pass).