Subcategory: Test-layout parity
Score: 5 → 10
Rhiza's check_test_layout.py requires every source class A to have a mirrored TestA. Seven Pydantic response models have none. All seven are declarative data models with cyclomatic complexity 1 and no behaviour of their own, so seven stub test classes would be busywork.
The proportionate fix is a documented opt-out: add a [tool.check_test_layout] table to pyproject.toml with enforce = false and a reason citing the 100% coverage gate that already guarantees per-module coverage. (Adding the seven Test* classes is the alternative if strict mirroring is preferred.)
What to change
src/pycharting/api/interface.py:35 — PlotResult
src/pycharting/api/interface.py:53 — ServerStatus
src/pycharting/api/routes.py:54 — InitDataResponse
src/pycharting/api/routes.py:63 — SessionInfo
src/pycharting/api/routes.py:72 — SessionListResponse
src/pycharting/api/routes.py:79 — DeleteSessionResponse
src/pycharting/api/routes.py:87 — StatusResponse
…or pyproject.toml for the documented opt-out.
done when
check_test_layout.py exits 0 — either by mirroring or via a documented [tool.check_test_layout] opt-out.
Evidence
Test-layout check failed:
✗ missing class TestPlotResult in tests/pycharting/api/test_interface.py for class PlotResult in src/pycharting/api/interface.py
Surfaced by the Rhiza quality gates during the template bump to jebel-quant/rhiza@v1.2.2, which enabled the stricter ruff rule families (ANN, A, BLE, ARG) and TYPECHECKER=both. Gate status at time of filing: make fmt FAIL, make typecheck FAIL, make docs-coverage FAIL, test-layout FAIL; make deptry, make security, make test PASS (154 tests, 100% coverage).
Subcategory: Test-layout parity
Score: 5 → 10
Rhiza's
check_test_layout.pyrequires every sourceclass Ato have a mirroredTestA. Seven Pydantic response models have none. All seven are declarative data models with cyclomatic complexity 1 and no behaviour of their own, so seven stub test classes would be busywork.The proportionate fix is a documented opt-out: add a
[tool.check_test_layout]table topyproject.tomlwithenforce = falseand areasonciting the 100% coverage gate that already guarantees per-module coverage. (Adding the sevenTest*classes is the alternative if strict mirroring is preferred.)What to change
src/pycharting/api/interface.py:35—PlotResultsrc/pycharting/api/interface.py:53—ServerStatussrc/pycharting/api/routes.py:54—InitDataResponsesrc/pycharting/api/routes.py:63—SessionInfosrc/pycharting/api/routes.py:72—SessionListResponsesrc/pycharting/api/routes.py:79—DeleteSessionResponsesrc/pycharting/api/routes.py:87—StatusResponse…or
pyproject.tomlfor the documented opt-out.done when
check_test_layout.pyexits 0 — either by mirroring or via a documented[tool.check_test_layout]opt-out.Evidence
Surfaced by the Rhiza quality gates during the template bump to
jebel-quant/rhiza@v1.2.2, which enabled the stricter ruff rule families (ANN, A, BLE, ARG) andTYPECHECKER=both. Gate status at time of filing:make fmtFAIL,make typecheckFAIL,make docs-coverageFAIL, test-layout FAIL;make deptry,make security,make testPASS (154 tests, 100% coverage).