09.03.08 — Skill State#

Un seul skill : question-state. Interroge l’environnement avant de croire un résultat.

Le skill#

input  : un résultat surprenant (« le test fail »)
output : une série de questions sur l'état :
            - sur quel browser tourne-t-on ?
            - quel commit ?
            - le SUT est-il warm ou cold ?
            - le Redis est-il disponible ?
            - quel est le wait-timeout configuré ?
            - quelle est la version du driver ?
            - le ChromeDriver a-t-il son fix password-manager-off ?
            - est-ce un run isolé ou un run en parallèle ?
            - est-ce que d'autres tests touchent les mêmes ressources SUT ?

Approche#

CLAUDE.md :

Don’t propagate a previous run’s diagnosis without re-deriving it.

Logs, screenshots, and prior comments describe a past failure. For a current failure, treat them as hypotheses to test, not conclusions to inherit. Re-derive the cause from this run’s evidence (current screenshot, current network response, current PHP) before reaching for the previously-tried fix. One extra check is cheap; stacking workarounds on a wrong diagnosis is what ends in a reboot.

question-state est le rituel qui force cette re-dérivation.
Cela peut aussi être complété par les connaissances de l’environnement :

  • Existe-t-il des bouchons ?
  • Qu’est-ce qui n’est pas ISO Prod ?

Exemple#

USER : "le test login fail, c'est le BFCache de Chrome ?"
   ↓
CLAUDE (question-state) :
   - On est sur quel navigateur ?  → Chrome
   - Quel test fail ?   → "valid_login" (smoke gate)
   - Le BFCache concerne post_logout_*, pas valid_login → hypothèse rejetée
   - Quel commit ?     → main branch latest
   - Le ChromeDriver password-manager-off est-il actif ? → check create_drivers_pool
   - Le SUT (CURA) est-il "warm" ?
   - Le test a-t-il retry ? → check logs
   - Combien de tries ?  → si > 5, transient ; si 1, vrai defect
   ↓
HYPOTHESE révisée : peut-être A-ENV-2 si l'adapter custom a été supprimé

« State, not legend »#

On ne croit pas un fail « parce qu’on l’a déjà vu fail comme ça ».
On ré-acquiert le state actuel.

Le CLAUDE.md détaille pourquoi c’est crucial :

  • Les workarounds basés sur des suppositions s’accumulent silencieusement.
  • Chaque mauvais diagnostic ajoute de la dette technique.
  • À terme : on se retrouve avec une pile de patches qui ne traitent rien.

Discipline transversale#

Ce skill est souvent invoqué au début d’une session de debug :

USER : "lance review-report"
   ↓
CLAUDE : (review-report identifie le test fail)
   ↓
CLAUDE : "Avant de proposer un fix, je lance question-state..."
   ↓
CLAUDE : (question-state révèle un détail oublié, par exemple le warm-up Heroku qui n'a pas tourné)
   ↓
CLAUDE : "Le fail est probablement A-ENV-1 (dyno cold). Veux-tu relancer avec warm-up ?"