From a3dcee52418e41ee698089910731ce0101492a24 Mon Sep 17 00:00:00 2001 From: Matysh Date: Sun, 30 Aug 2026 20:00:17 +0300 Subject: [PATCH] ci: move the harness to the current Home Assistant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Замер по AC5 #392 изменил решение. Я собирался заморозить набор на том, что резолвилось (HA 2026.2.3, февральский), и вынести обновление в отдельную задачу «на потом» — потому что шесть месяцев дрейфа API вслепую в dev не отправляют. Проверил на ветке experiment/392-py314: Python 3.14, phcc 0.13.357, homeassistant 2026.8.3 — `450 passed, 2 skipped`. Ровно то же, что на старом наборе, ни одного падения. Обновление оказалось бесплатным, и держать гейт на февральском HA после такого замера нельзя. Взята 0.13.357, а не последняя: она последняя, которая пинует стабильный 2026.8.3, дальше пинуются беты. Гейт на бете невоспроизводим — бету могут перевыпустить под тем же номером. pytest не закреплён намеренно: phcc задаёт совместимый диапазон сам, жёсткий пин с ним конфликтует (ResolutionImpossible на 9.0.0, проверено). Issue: #392 User-Visible: no --- .github/workflows/mutation-gate.yml | 2 +- .github/workflows/validate.yml | 2 +- tests_backend/requirements.txt | 41 ++++++++++++++++------------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/.github/workflows/mutation-gate.yml b/.github/workflows/mutation-gate.yml index 54fc8920..fd3a9706 100644 --- a/.github/workflows/mutation-gate.yml +++ b/.github/workflows/mutation-gate.yml @@ -61,7 +61,7 @@ jobs: - uses: actions/setup-python@v7 with: - python-version: '3.13' + python-version: '3.14' - name: Установить backend test dependencies run: | diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 71f094e9..78983b3b 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -777,7 +777,7 @@ jobs: - uses: actions/setup-node@v7 with: { node-version: 22 } - uses: actions/setup-python@v7 - with: { python-version: "3.13" } + with: { python-version: "3.14" } - run: | # Точные версии — в tests_backend/requirements.txt (#392): без них # резолвер выбирает набор сам, и «зелёный backend» значит разное diff --git a/tests_backend/requirements.txt b/tests_backend/requirements.txt index cd3261e8..6326a0db 100644 --- a/tests_backend/requirements.txt +++ b/tests_backend/requirements.txt @@ -1,29 +1,32 @@ # Зависимости HA-харнесса, закреплённые точно (issue #392). # # Было так: `pip install pytest voluptuous pytest-homeassistant-custom-component -# home-assistant-frontend` без единой версии. Резолвер молча выбирал набор сам, -# и выбор зависел не от нашего коммита, а от того, что в этот день лежит на -# PyPI. По SHA нельзя было сказать, чем его проверяли. +# home-assistant-frontend` без единой версии. Резолвер выбирал набор сам, и +# выбор зависел не от нашего коммита, а от того, что в этот день лежит на PyPI. +# По SHA нельзя было сказать, чем его проверяли. # -# Что здесь записано — ровно то, что резолвилось на 30.08.2026, снятое из лога -# шага `pip install`. Цель этого файла не «взять новое», а «перестать дрейфовать». +# Хуже того, выбирал он молча и неудачно. Все релизы 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 нашей интеграции не задел. # -# 1. `pytest-homeassistant-custom-component` начиная с 0.13.348 (25.07.2026) -# требует Python >= 3.14, а job стоит на 3.13. Поэтому резолвер и уезжал на -# 0.13.316 — последнюю, которая ставится на 3.13. -# 2. Она тянет `homeassistant==2026.2.3`, то есть февральский. Харнесс проверяет -# интеграцию против HA, которого у пользователей давно нет. Это известный -# долг, а не оплошность: снимать его надо переходом на 3.14 и свежий phcc, -# и это отдельная задача с отдельным измерением. +# Почему 0.13.357, а не последняя. Она — последняя, которая пинует стабильный +# homeassistant 2026.8.3; начиная с 0.13.358 пинуются беты (2026.9.0bN). +# Гейт на бете держать нельзя: её могут перевыпустить под тем же номером, и +# «зелёный» перестанет быть воспроизводимым. # -# Менять версии здесь можно, но только вместе с прогоном полного набора: это -# не косметика, а смена того, что означает зелёный backend. -pytest==9.0.0 +# pytest не закреплён намеренно: phcc сам задаёт совместимый диапазон, а жёсткий +# пин с ним конфликтует (проверено — ResolutionImpossible на 9.0.0). +# +# Менять версии здесь можно, но только вместе с прогоном полного набора: это не +# косметика, а смена того, что означает зелёный backend. voluptuous==0.15.2 -pytest-homeassistant-custom-component==0.13.316 -home-assistant-frontend==20260128.6 +pytest-homeassistant-custom-component==0.13.357 +home-assistant-frontend==20260826.1 # Ставится транзитивно из phcc; закреплён явно, чтобы версия была видна тому, # кто читает этот файл, а не только тому, кто читает лог. -homeassistant==2026.2.3 +homeassistant==2026.8.3