# Чек-лист релиза HA-интеграции (H5) ## 1. Публикация pyfglair Манифест компонента требует `pyfglair>=1.0.0`; штатный installer HA резолвит требования только через PyPI. ```sh # на каждой целевой архитектуре (linux x86_64/aarch64): .venv/bin/python -m build --wheel # py3-none-linux_.whl с .so и mbedtls .venv/bin/python -m build --sdist # sdist с C++-исходниками (MANIFEST.in) twine upload dist/* ``` Проверки перед публикацией: * `scripts/py-ci.sh` — 28 pyfglair + 47 components + 6 acceptance self-test; * `scripts/ci.sh` — ядро (gcc/clang, ASan/UBSan) 11/11; * `readelf -d pyfglair/libfgl-aircon.so*` — нет внешней `libmbedcrypto` (mbedtls встроен); * `auditwheel show dist/pyfglair-*.whl` — платформа совместима с manylinux (зависимости: libstdc++/libc); * установка wheel в чистый venv вне репозитория: `import pyfglair.session`. При невозможности публикации wheel для какой-то архитектуры в манифесте можно указать прямую ссылку на wheel, но это лишает HACS-пользователей других архитектур; предпочтителен PyPI. ## 2. HACS * Репозиторий содержит `custom_components/fglair/` и `hacs.json` (name). * Заполнить `codeowners` в `custom_components/fglair/manifest.json` (GitHub-хендлы владельцев; сейчас пустой список — допустимо для custom repository, но не для выкладки в HACS по умолчанию). * Проверить `documentation`/`issue_tracker` в манифесте (актуальные URL). * Заменить заглушки `custom_components/fglair/screenshots/step-N.png` реальными скриншотами (описания «что должно быть видно» — в README). * Добавить brand-ассеты (`custom_components/fglair/brand/icon.png`, `logo.png`) при выкладке в HACS. * Создать git-тег (semver) и указать его в HACS-релизе. ## 3. Приёмка на живом стенде * `tests/acceptance/test_esphome_ha.py quick` — матрица изменений (HA; при наличии ESPHome-компонента — обе стороны), с возвратом. * `--long --hours 24` — суточный прогон с CSV-отчётом. * Проверить сценарии: 503 (два слота заняты), key_error и Repair, offline/восстановление, несколько устройств (разные порты прослушивания), reconfigure без потери конверсий. ## 4. Ограничения текущего стенда * Реального железа/облака в CI нет: протокол проверен mock-модулем (`tests/ayla/mock_ac.py`), облако — мок-сервером. * Суточный soak и работа с реальными re-key — только на приборе.