The "class size" item from the quality checklist, measured: - A shipped file over 800 lines may not grow past its line count today (13 frontend, 11 backend). No other file may cross 800. - A function over the complexity limit may not rise, and no new one may appear. The limit is eslint `complexity` 20 on the frontend (64 functions over it today) and ruff C901 10 on the backend (32). - Each is a per-file ceiling. Shrinking is free; an entry back under the limit must be deleted, so the lists only shrink. C901 is measured in a test rather than switched on in ruff.toml: ruff has no per-function baseline, and a noqa would let a function grow without limit. Coverage (owner decision D4) is printed with no threshold: `vitest --coverage` (v8) gives 80% of lines, and the pytest lane ends with the total for app/, 78%. The bar stays "every regression test seen red". .coverage is ignored by git and kept out of the image's build context.
17 lines
1.0 KiB
Plaintext
17 lines
1.0 KiB
Plaintext
# Test + lint tooling — NEVER in the prod image. Installed only by backend/Dockerfile.test (the
|
|
# throwaway test image), which the prod build (root Dockerfile) never references. Pinned so the
|
|
# suite is reproducible: pytest for the pure-logic tests, and ruff at the SAME version the gate's
|
|
# backend lint lane runs on the host (the gate fails when the host's ruff is not this one). httpx2:
|
|
# Starlette 1.x's TestClient is built on it (`import httpx2 as httpx`) and only falls back to the
|
|
# app's own httpx with a deprecation warning on every run.
|
|
# basedpyright: the backend type-check lane (E27 S3). Pinned like everything else here — a type
|
|
# checker whose version floats silently changes what "clean" means, and the ratchet baseline it
|
|
# writes is keyed to the diagnostics THIS version produces.
|
|
# pytest-cov: the coverage REPORT the gate prints (E32 D4) — a number to read, deliberately with no
|
|
# threshold; "every regression test seen red" is the bar, not a percentage.
|
|
basedpyright==1.40.1
|
|
pytest==8.4.2
|
|
pytest-cov==7.1.0
|
|
ruff==0.15.21
|
|
httpx2==2.13.0
|