diff --git a/AGENTS.md b/AGENTS.md index 1414f8b..c9b6a17 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -850,6 +850,29 @@ aucune, la décision est une intention, et elle se périmera à la vitesse du co > rien. Chaque test d'invariant de cette semaine a été **vérifié échouant** avant d'être déclaré > prêt — c'est la seule façon de savoir qu'il regarde ce qu'on croit. +> **Le versant CONTRAT du même principe** : **un contrat qu'aucun appelant n'exerce n'est pas un +> contrat tenu, c'est un contrat non testé.** ECS-415 en est le cas d'école — `applyAction()` +> renvoyait, sur refus, l'action *demandée* : un appelant y relisait l'état qu'il venait de +> demander et concluait au succès. Le défaut a vécu sans conséquence tant que **personne ne +> lisait ce retour** (le dispatch l'ignore), et il est devenu grave à la minute où un appelant +> s'y est fié — publiant 3 kW rendus par une PAC restée en état 4. +> +> Les deux se répondent : le garde-fou dit « une règle que rien ne rejoue se périme », le +> contrat dit « une garantie que personne ne consomme n'a jamais été vérifiée ». Avant +> d'exploiter une valeur de retour qu'aucun code n'exploitait, **l'épingler d'abord par un +> test** — le premier appelant est aussi le premier vérificateur. + +> **Fait de méthode, relevé le 2026-08-30** : la règle d'ECS-415 était **déjà écrite**, dans le +> commentaire de la branche voisine du même fichier, **à trois lignes** de la branche fautive +> (« ce retour était MUET, si bien que "état déjà bon" ne se distinguait pas de "action jamais +> reçue" »). Elle ne s'était pas propagée pour autant. +> +> **Une règle écrite à un endroit ne se propage pas toute seule.** C'est ce qui justifie, quand +> un défaut de ce genre apparaît, de **balayer les autres implantations du même contrat** plutôt +> que de corriger localement — le balayage a trouvé le même travers sur la branche « motif +> vide » du `RelayRouter` et de l'`EtmVariableLoadAdapter`. Corollaire pour la relecture : la +> proximité d'un bon commentaire n'est **pas** une preuve que le code voisin le respecte. + ## RÉPONSES FIGÉES (ne plus poser ces questions) - Plages HC/HP et tarifs : **configuration JSON**, jamais hardcodé. Prévoir Tempo