mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
r6 Medium: AC4 was measurable only on a developer's machine — no workflow invoked mypy, so a typing regression in any of the six allowlist modules reached dev unnoticed while the issue claimed measurable backend quality. Coverage and lint had continuous gates; typing had a text comparison of a committed list. The backend job now runs mypy right after ruff, from the same pinned dependency file (mypy==2.3.1 — an unpinned checker would redden on code that never changed). The step derives its module list from the pyproject.toml strict allowlist instead of duplicating it, because a drifted duplicate is a green step checking the wrong modules, and it refuses an empty list rather than passing silently. Guarded twice: a contract test pins all three facts (pinned checker, a step that really invokes it, list read from pyproject) and the new typing-gate-stops-running mutant reddens when the invocation is neutered. User-Visible: no Issue: #42