docs: le contexte de montage trop lâche, et chercher à voir plutôt qu'à casser

Troisième face du même mode : la prémisse fausse n'est pas dans le code testé,
elle est dans ce qui l'entoure. Jeu d'essai trop homogène, deux horloges au même
décalage, contexte de montage trop lâche — même constante.

Et la leçon de découverte, à côté de « qu'est-ce que ce contrôle aurait attrapé
s'il avait échoué ? » : le chemin des flèches a été trouvé en cherchant comment
OBSERVER un correctif, pas en cherchant le défaut. Se demander « par quel chemin
puis-je voir ça ? » fait apparaître des chemins que « comment je casse ça ? » ne
fait pas apparaître.

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-08 09:07:29 +02:00
parent 1dece8eb33
commit 5a3f9a4fc6

View File

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