# 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](../APPDAEMON_BANDWIDTH_BUG_FIX.md). - `utils.py` : comparaison des ensembles de clés dans `deep_compare`, décrite dans [APPDAEMON_RELOAD_BUG_FIX.md](../APPDAEMON_RELOAD_BUG_FIX.md). Comparaison de **309 fichiers** au tag officiel [4.5.10](https://github.com/AppDaemon/appdaemon/tree/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. - [Diff intégral restant](appdaemon-core-4.5.10.diff) - [Empreintes SHA-256 des fichiers vérifiés](appdaemon-core-audit.json) ## 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 de `deep_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.