The Gitea Actions gate repeated, after the merge, what a release already runs before it, and its runner shared the git host's container: one run there starved Gitea of memory until it stopped answering. The lanes now live in scripts/check.sh, run the same by the release dispatcher and by hand, and the gate-contract test holds its lines (the ruff and pip-audit checks read it instead of the workflow). The two audits only CI ran join the gate: pip-audit over the lock (pinned in the test image, blocking at any severity) and npm audit of the production dependencies. The engine contracts drop the CI containers; the register records that pushes have no server-side gate.
19 lines
1.2 KiB
Plaintext
19 lines
1.2 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.
|
|
# pip-audit: the gate's audit of requirements.lock (scripts/check.sh), blocking at any severity.
|
|
basedpyright==1.40.1
|
|
pytest==8.4.2
|
|
pytest-cov==7.1.0
|
|
ruff==0.15.21
|
|
httpx2==2.13.0
|
|
pip-audit==2.10.1
|