The code cited its plan instead of saying why: `E28 review J4`, `(R6 S3b)`, `S1 justified…`,
`deep-review round 5`. That plan lives in the private ops repo, so for every reader of this one the
citation was noise, and a sentence whose subject was the plan step ("round 2 showed…") hid its
lesson behind an id. Each one is gone and the "why" kept: a bare citation is deleted, a sentence
carrying a lesson is reworded around it ("a later attempt showed…").
Measured (`scripts/audit_metrics.py`, product code): 652 lines in 270 files carried an epic code by
the definition the next commit holds (507 / 241 by the old, two-digit-only one) -> 0. Across all
code, tests, scripts and configs: ~1100 epic-code lines plus ~320 sprint/round ids.
Behaviour unchanged, checked mechanically: every changed .py file has the same AST once docstrings
are blanked; css/sh/toml/yml/json files are identical once comments are stripped; the only
non-comment changes in TS/JS are test titles, one description string in a contract table, and five
ESLint messages, whose text is all the gates snapshot diff holds. Not touched: Markdown (docs and
the changelog keep their history), Alembic migrations, TV episode notation (`S2 · E5`), DESIGN.md
ids (`C1`, `B4`, `S3h`), tracker ids (`SEC-16`, `DX-17`).
One stale claim fixed on the way: test_hls_reaper's docstring said the player checkpoints "every
10 s whether or not it is playing", which plex/stream.py calls wrong; it now says what the code does.
19 lines
1.1 KiB
Plaintext
19 lines
1.1 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. 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 on-demand coverage report (docs/development.md) — 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
|