From 9edd9cc51fb20ee21048724365375f2b4a5a4d83 Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Sun, 6 Sep 2026 14:21:21 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20deux=20contr=C3=B4les=20qui=20ne=20mord?= =?UTF-8?q?ent=20pas,=20et=20la=20question=20qui=20les=20d=C3=A9masque?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La recherche auto-confirmante : après avoir corrigé le signe du solaire, la vérification cherchait `pvPower.abs` — donc la ligne qu'on venait d'écrire, ce qui a caché la seconde occurrence, non corrigée. On cherche la GRANDEUR, jamais le correctif. Le contrôle vrai par construction : `deliveredWh + remainingWh == targetWh` ne peut pas échouer sous `unmeasurable`, et l'afficher comme « identité OK » ferait lire un feu vert sur le régime qu'elle ne contrôle pas. La parade est commune : qu'est-ce que ce contrôle aurait attrapé s'il avait échoué ? Si la réponse est « rien », il décore — et il coûte plus qu'aucun contrôle, parce qu'il occupe la place de celui qui aurait mordu. Avec le corollaire rencontré deux fois le même jour : une absence côté APP présentée comme une absence côté BOX. Avant d'écrire qu'une chose n'est pas publiée, vérifier qu'on est allé la chercher. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw --- CLAUDE.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 18417bc..e8fe7d6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -475,6 +475,36 @@ client peut vérifier. --- +## Deux contrôles qui ne mordent pas — et la question qui les démasque + +**1. La recherche AUTO-CONFIRMANTE.** Après avoir corrigé le signe du solaire, la +vérification a cherché `pvPower.abs` — donc elle a trouvé **la ligne qu'on venait +d'écrire**, et elle a caché la seconde, non corrigée. Il fallait chercher `pvPower`. Le +défaut a survécu un jour de plus et c'est l'écran qui l'a montré. + +> **Chercher la trace de sa propre correction ne dit rien de ce qu'on a manqué.** +> On cherche la GRANDEUR, jamais le correctif. + +**2. Le contrôle vrai par construction.** L'identité `deliveredWh + remainingWh == targetWh` +ne peut pas échouer sous `unmeasurable` : `deliveredWh` y vaut 0 et `remainingWh` la cible. +Elle ne mord que sous `measured` — et l'afficher comme « identité OK » ferait lire un feu +vert sur le régime qu'elle ne contrôle pas. + +**La parade est la même pour les deux, et elle tient en une question** : + +> **qu'est-ce que ce contrôle aurait attrapé s'il avait échoué ?** + +Si la réponse est « rien » ou « je ne sais pas », le contrôle décore. Un contrôle qui ne peut +pas échouer n'est pas un contrôle : c'est une phrase rassurante, et elle coûte davantage +qu'aucun contrôle — parce qu'elle occupe la place de celui qui aurait mordu. + +Corollaire de terrain, rencontré **deux fois le même jour** : *une absence côté APP présentée +comme une absence côté BOX*. Un provider non chargé, une carte sans domaine — et l'écran +annonce « non publié » sur une donnée que la box publie. Avant d'écrire qu'une chose n'est +pas publiée, vérifier qu'on est allé la chercher. + +--- + ## Règles de modification - Tout nouvel écran → valider maquette avec Patrick avant de coder - Tout nouvel appel RPC → vérifier dans `INTERFACE.md` que la méthode existe