Files
ad_trident/docs/appdaemon-local-changes.md
T
2026-11-13 13:15:03 +01:00

4.6 KiB
Raw Blame History

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

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 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.