feat(result): Sharpen — turn the verdict into a forward move #9
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| # Cancel superseded runs on the same ref (no stale-run pileup). | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| backend: | |
| name: Backend (pytest + ruff) | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: backend | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| python-version: "3.11" | |
| enable-cache: true | |
| - name: Sync deps | |
| run: uv sync | |
| - name: Tests | |
| run: uv run pytest -q | |
| - name: Lint (ruff) | |
| run: uvx ruff check app | |
| # Informational — surfaces high-complexity functions without blocking. | |
| - name: Complexity (radon, C+ only) | |
| continue-on-error: true | |
| run: uvx radon cc -s -n C app | |
| frontend: | |
| name: Frontend (vitest + lint + build) | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: frontend | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install | |
| run: npm ci | |
| - name: Lint (eslint) | |
| run: npm run lint | |
| - name: Tests + coverage | |
| run: npm run coverage | |
| - name: Build | |
| run: npm run build | |
| # Block only on production-dependency highs (dev-tool CVEs don't ship — | |
| # prod serves the static build). | |
| - name: Audit (prod deps, high+) | |
| run: npm audit --omit=dev --audit-level=high | |
| # Lighthouse needs a headless browser + preview server and is flaky to gate | |
| # per-PR. Run on demand instead. | |
| lighthouse: | |
| name: Lighthouse (manual) | |
| if: github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: frontend | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - run: npm ci | |
| - run: npm run build | |
| - name: Lighthouse CI | |
| continue-on-error: true | |
| run: npx lhci autorun --config=lighthouserc.js |