diff --git a/CLAUDE.md b/CLAUDE.md index 9bc7588..edfcb64 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -626,6 +626,40 @@ comme une absence côté BOX*. Un provider non chargé, une carte sans domaine 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. +### La prémisse fausse n'est pas dans le code testé — elle est dans ce qui l'entoure + +Trois formes rencontrées, et la constante vaut mieux que les trois exemples : + +| Ce qui était faux | Le défaut resté invisible | +|---|---| +| un **jeu d'essai trop homogène** | ce que seule l'hétérogénéité révèle | +| **deux horloges au même décalage** | un instant rendu en UTC | +| un **contexte de montage trop lâche** | un widget qui ne se contraint pas lui-même | + +Le dernier est du 2026-09-08. Tous les tests montaient `ImpactSaveBar` dans une hauteur +**infinie** (un `ListView`), où le `MainAxisSize.max` d'un `Column` se comporte exactement +comme `min`. Déplacée en `bottomNavigationBar` — contrainte lâche mais **bornée** — la barre +a pris tout l'écran et écrasé le corps à zéro. **320 tests verts, et c'est l'appareil en +release qui l'a trouvé.** + +> Un widget qui ne se contraint pas lui-même **hérite du contexte**. Le déplacer change ses +> contraintes, donc sa taille, sans qu'une ligne de son code ait bougé. Un test qui ne +> reproduit pas les contraintes du vrai montage ne teste pas le widget : il teste un cas +> particulier commode. + +### Chercher à VOIR est plus productif que chercher à casser + +À poser à côté de « qu'est-ce que ce contrôle aurait attrapé s'il avait échoué ? ». + +Le chemin des **flèches** — deux taps qui produisent un brouillon sans effet, là où le +glisser-déposer n'est pas reproductible à la sonde — n'a pas été trouvé en cherchant le +défaut. Il a été trouvé en cherchant **comment observer un correctif qu'on venait d'écrire**. +Et il a élargi le défaut au passage : le glissement n'était pas la porte d'entrée, seulement +celle qu'on avait regardée. + +> Se demander « par quel chemin est-ce que je peux voir ça ? » fait apparaître des chemins +> que « comment est-ce que je casse ça ? » ne fait pas apparaître. + --- ## Règles de modification