4.6 KiB
Modifications locales AppDaemon — état au 4 novembre 2026
Toute l’instrumentation des utility loops a été retirée sur disque : chronométrages,
profils de piles, décorateurs et messages de diagnostic. Le module ajouté
_utility_diagnostics.py et son cache ont été supprimés.
Seuls correctifs conservés dans le core
plugin_management.py:refresh_update_time(plugin.name), décrit dans APPDAEMON_BANDWIDTH_BUG_FIX.md.utils.py: comparaison des ensembles de clés dansdeep_compare, décrite dans APPDAEMON_RELOAD_BUG_FIX.md.
Comparaison de 309 fichiers au tag officiel
4.5.10 : tous sont identiques
à l’octet près, sauf ces deux modifications exactes. Aucun fichier source supplémentaire.
Les caches Python générés sont exclus de cette comparaison.
Le fichier statique aui/index-prod.html, absent du paquet installé mais présent
au tag, a également été remis depuis ce tag pour respecter cette référence.
Optimisation applicative conservée
apps/ad_toolbox/logger_interface.py conserve le raccourci évitant l’inspection
inutile des piles pour les messages ordinaires. adapi.py est identique au tag.
Les sept tests test_logger_interface_fast_path.py passent après restauration.
Les onze vérifications de deep_compare du document du correctif passent aussi.
Archive et retour arrière
Les anciens scripts, tests spécifiques au diagnostic, sauvegardes et documents
historiques sont conservés dans
tools/archive/appdaemon-diagnostics-retired-20261104.tar.gz.
Ils ne sont plus installés ni collectés par la suite de tests.
Les deux fichiers .bak du paquet ont été déplacés dans cette archive
(sous site-packages-backups/). Les anciens chemins de sauvegarde décrits dans
les documents historiques ne sont donc plus actifs.
Un redémarrage AppDaemon reste nécessaire pour décharger le code instrumenté déjà en mémoire. Le service n’a pas été redémarré durant cette intervention. Les réglages applicatifs et les exclusions de dossiers existantes n’ont pas été modifiés.
Réapplication après rollback — 8 novembre 2026
Version vérifiée : 4.5.10, avec /usr/local/bin/python3 et le paquet
/usr/local/lib/python3.12/site-packages/appdaemon. PID 1 :
python3 -m appdaemon -c /conf.
Les trois changements absents ont été réappliqués :
plugin_management.py:refresh_update_time(plugin.name).utils.py: comparaison des clés au début dedeep_compare./usr/src/app/dockerStart.sh: un seul appel àsh "$CONF/archiveLogs.sh", avant le lancement AppDaemon.
Sauvegardes originales et manifeste (chemins absolus, version, SHA-256) :
/conf/tools/backups/appdaemon-4.5.10-20261108T094103312482Z/manifest.json.
Le lien /conf/dockerStart.sh pointe toujours vers le script ci-dessus.
Le raccourci applicatif de LoggerInterface était déjà présent et a été conservé.
Aucun changement aux apps, YAML, exclusions ou à archiveLogs.sh.
Validations exécutées : 11 cas deep_compare réussis, syntaxe des deux fichiers
Python valide, correctif HASS vérifié, syntaxe shell des deux scripts valide,
un seul appel d'archivage placé avant l'exec. Les 7 tests
test_logger_interface_fast_path.py passent, sans tests ignorés.
Sur 5 tests test_logger_interface_grouping.py, 2 passent et 3 échouent
sur les libellés/groupes (test_log_group_takes_priority_over_condition_name,
test_smart_object_groups_its_own_lifecycle,
test_smartcondition_uses_smartobject_api_scope_without_logger_interface_argument).
Le code applicatif concerné n'a pas été modifié pendant cette intervention.
Redémarrage non effectué : le service est PID 1 du conteneur, sans CLI Docker, socket Docker ou superviseur disponible. Redémarrer le conteneur existant depuis son gestionnaire habituel pour charger les correctifs Python et exécuter l'archivage. Une recréation depuis l'image d'origine effacerait ces patchs. Ne pas lancer le script de démarrage ou d'archivage dans le service actif. Après redémarrage, restent à vérifier : maintien des patchs, démarrage et connexion HASS, archivage et suivi mémoire unique, puis absence de rafraîchissements HASS répétés après le délai configuré. Aucun résultat de validation du service redémarré n'est affirmé ici. L'audit intégral et le diff historiques ci-dessus n'ont pas été régénérés pour cette intervention.