mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-02 12:49:56 +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
40 lines
3.1 KiB
Plaintext
40 lines
3.1 KiB
Plaintext
# Зависимости HA-харнесса, закреплённые точно (issue #392).
|
||
#
|
||
# Было так: `pip install pytest voluptuous pytest-homeassistant-custom-component
|
||
# home-assistant-frontend` без единой версии. Резолвер выбирал набор сам, и
|
||
# выбор зависел не от нашего коммита, а от того, что в этот день лежит на PyPI.
|
||
# По SHA нельзя было сказать, чем его проверяли.
|
||
#
|
||
# Хуже того, выбирал он молча и неудачно. Все релизы phcc начиная с 0.13.348
|
||
# (25.07.2026) требуют Python >= 3.14, а job стоял на 3.13 — резолвер уезжал на
|
||
# 0.13.316, а та тянет homeassistant 2026.2.3. Интеграция полгода проверялась
|
||
# против февральского Home Assistant, и никакой гейт об этом не сообщал.
|
||
#
|
||
# Переход на актуальный HA оказался бесплатным: замер на ветке
|
||
# experiment/392-py314 дал `450 passed, 2 skipped` — ровно то же, что на старом
|
||
# наборе. Полугодовой дрейф API нашей интеграции не задел.
|
||
#
|
||
# Почему 0.13.357, а не последняя. Она — последняя, которая пинует стабильный
|
||
# homeassistant 2026.8.3; начиная с 0.13.358 пинуются беты (2026.9.0bN).
|
||
# Гейт на бете держать нельзя: её могут перевыпустить под тем же номером, и
|
||
# «зелёный» перестанет быть воспроизводимым.
|
||
#
|
||
# pytest не закреплён намеренно: phcc сам задаёт совместимый диапазон, а жёсткий
|
||
# пин с ним конфликтует (проверено — ResolutionImpossible на 9.0.0).
|
||
#
|
||
# Менять версии здесь можно, но только вместе с прогоном полного набора: это не
|
||
# косметика, а смена того, что означает зелёный backend.
|
||
voluptuous==0.15.2
|
||
pytest-homeassistant-custom-component==0.13.357
|
||
home-assistant-frontend==20260826.1
|
||
# Ставится транзитивно из phcc; закреплён явно, чтобы версия была видна тому,
|
||
# кто читает этот файл, а не только тому, кто читает лог.
|
||
homeassistant==2026.8.3
|
||
# #42: линт бэкенда (шаг «Линт бэкенда» в validate.yml ставится отсюда же).
|
||
ruff==0.16.5
|
||
# #42: строгая типизация allowlist-модулей (шаг «Типы бэкенда»). Без пина
|
||
# гейт типизации был бы не воспроизводим по SHA — ровно то, от чего этот
|
||
# файл и заведён: новая версия mypy добавляет проверки и краснеет на коде,
|
||
# который не менялся.
|
||
mypy==2.3.1
|