docs: deux contrôles qui ne mordent pas, et la question qui les démasque

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) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw
This commit is contained in:
Patrick Schurig 2026-09-06 14:21:21 +02:00
parent cd202840f1
commit 9edd9cc51f

View File

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