From 3b73e102775bb1b161809b96b0ce396f1136b22d Mon Sep 17 00:00:00 2001 From: Tallagrand Thierry Date: Mon, 14 Sep 2026 03:17:05 +0200 Subject: [PATCH] Section 67 : l auteur des transitions, et la raison qui dormait dans le journal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consigne le defaut (un nom de champ inexistant qui vidait 416 lignes), les trois signatures relevees, la regle du balayage vers l avant, et le benefice non cherche : le declencheur porte la raison que chaque workflow publie lui-meme — ce que « expliquer les decisions » reclamait etait deja enregistre. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj --- HANDOFF.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/HANDOFF.md b/HANDOFF.md index 556fac5..adaed7c 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -6431,3 +6431,66 @@ OpenClaw pour enregistrer sa boucle de 10 minutes. --- *Document mis a jour le : 13/09/2026 (soir) — contrat d'etiquetage du concierge fige, lecteur et bascule vehicule_sur restant a ecrire en un commit* + + +## 67. Session du 14/09/2026 — L'auteur des transitions etait lisible depuis le debut + +### Le defaut +`auteurDeLaTransition()` filtrait sur `x.context_name`. **Ce champ n'existe pas** +dans le journal de bord de Home Assistant : la fonction rendait `null` a tous +les coups, et **les 416 transitions journalisees portaient un auteur vide**. +Personne ne s'en etait apercu parce qu'un auteur absent ressemble a un auteur +inconnaissable. + +Consequence en cascade : le prompt de l'observateur affirme « le coupable le +plus probable est un ecrivain AUTRE QUE SON PROPRIETAIRE. Nomme-le » — en lui +donnant des donnees ou aucun auteur n'est jamais nomme. + +### Trois signatures, relevees sur des transitions d'auteur connu +| signature | ce qu'on lit | exemple verifie | +|---|---|---| +| automatisation / script | ligne voisine dont l'`entity_id` est `script.*` ou `automation.*` | `n8n - set helper` | +| service exterieur (n8n) | `context_user_id` sur la cible, et la rafale se **clot** par une ligne de NARRATION (`message` sans `state`) | `Victron Auto Charge`, `EVCS Bilan energetique (ombre)` | +| derivation | ni l'un ni l'autre, mais `context_entity_id` | `sensor.victron_evcs_status_raw` | + +⚠️ **Une derivation N'EST PAS un auteur.** Le resume l'annonce « derive de X » +et non « par X » — une valeur qui decoule d'un autre capteur n'a pas d'ecrivain. + +⚠️ **On balaie VERS L'AVANT pour trouver la narration, jamais vers l'arriere.** +Un workflow ecrit ses helpers PUIS se journalise : vers l'arriere on ramasserait +la narration du workflow PRECEDENT. Eprouve sur la seconde ou l'Auto Charge +Manager et le Water Heater Advisor ecrivent ENSEMBLE — chaque helper revient +bien a son propre workflow, 3 sur 3. + +### Benefice non cherche : la raison etait deja dans le journal +Le champ `declencheur` porte desormais **la raison que le workflow a lui-meme +publiee** : + + « summer_night_idle | profile=night_slow | I=30A | V=50.1V | SOC=69% | + Ete HC nuit, pas de besoin reseau » + « Croisement a 19 h, 0 kWh a couvrir → SOC requis 22% (actuel 96%). » + +C'est exactement ce que « expliquer les decisions » reclamait, et c'etait +enregistre depuis toujours sans que rien ne le lise. + +### Validation +Harnais de rejeu en lecture seule sur **7 transitions reelles d'auteur connu** : +4 signatures distinctes correctes, plus 3 cas de discrimination entre deux +workflows ecrivant dans la meme seconde. Deploye le 14/09 a 03:04. +⚠️ **Pas encore confirme sur une transition LIVE** : aucune entite suivie n'a +bascule dans les douze minutes suivantes — a 3 h du matin, vehicule debranche et +sans soleil, le systeme est stable. Premiere confirmation attendue au lever du +jour (bascule de `evcs_balance_pv_censored` ou du mode ACM). + +⚠️ **Aucun rattrapage retroactif possible** : le journal de bord de HA ne +remonte pas indefiniment. Les 416 lignes existantes resteront sans auteur. + +### Suite (plan approuve) +Detection deterministe des anomalies dans le service — oscillation d'actionneur, +deux auteurs sur le meme actionneur, mesure figee, engagement non relache — +table `anomalie`, guichet helper pour Airtria, et les seuils **calibres sur +l'historique avant d'etre figes** : la salve du 12/09 doit sortir, les bascules +normales du cycle jour/nuit ne doivent pas. + +--- +*Document mis a jour le : 14/09/2026 (~03:20) — auteur des transitions repare et deploye, 7 cas valides en rejeu*