PROTOCOL-INFRA: 3 regles issues de la resolution du bug D (clic != effet, garde-fou non concluant, flock sur tests Playwright)
This commit is contained in:
@@ -312,3 +312,49 @@ REFLEXE : un plafond de pagination et un timeout sont couples. Relever l'un sans
|
|||||||
transforme une troncature silencieuse en echec generalise -- on remplace un bug par un autre.
|
transforme une troncature silencieuse en echec generalise -- on remplace un bug par un autre.
|
||||||
Verifier aussi les timeouts en AVAL (retry, cron n8n, healthcheck) qui peuvent etre calibres sur
|
Verifier aussi les timeouts en AVAL (retry, cron n8n, healthcheck) qui peuvent etre calibres sur
|
||||||
l'ancienne duree.
|
l'ancienne duree.
|
||||||
|
|
||||||
|
## REGLE -- UI React/Fluent : le succes d'un clic ne prouve PAS son effet (2026-08-10, soir)
|
||||||
|
|
||||||
|
Cause de fond du bug D ci-dessus, trouvee et corrigee : `go_to_folder_path` confondait DEPLIER et
|
||||||
|
SELECTIONNER. Sur l'arborescence OWA, le chevron d'expansion et la ligne qui le porte sont deux
|
||||||
|
cibles distinctes aux effets distincts. Le code ne cliquait la ligne (seul geste qui selectionne)
|
||||||
|
qu'en repli, faute de bouton d'expansion : un dossier FEUILLE etait donc correctement selectionne,
|
||||||
|
un dossier A ENFANTS ne l'etait jamais -- soit seul son chevron etait clique, soit, s'il etait deja
|
||||||
|
`aria-expanded="true"` (etat persistant d'un appel a l'autre), aucun clic n'avait lieu. La portee
|
||||||
|
d'une recherche OWA etant le dossier COURANT, la recherche s'executait dans la Boite de reception
|
||||||
|
recharge par `goto_owa_root()`. 63 des 336 dossiers du compte etaient concernes.
|
||||||
|
|
||||||
|
REFLEXE : apres toute navigation dont depend la suite du traitement, confirmer l'etat atteint par un
|
||||||
|
ATTRIBUT STRUCTURE (`aria-selected`), jamais par le fait que le clic n'a pas leve d'exception. Et en
|
||||||
|
l'absence de confirmation, echouer explicitement : un 200 qui repond sur le mauvais perimetre coute
|
||||||
|
infiniment plus cher qu'une erreur franche. Corollaire de diagnostic : quand un bug touche certains
|
||||||
|
elements et pas d'autres, chercher d'abord ce qui les distingue STRUCTURELLEMENT (ici : avoir des
|
||||||
|
enfants) avant d'incriminer le contenu (ici : les emojis, faussement suspectes pendant des jours).
|
||||||
|
Detail : hermes-tt/mail-o365-bug-D-deplier-nest-pas-selectionner.md
|
||||||
|
|
||||||
|
## REGLE -- un garde-fou qui "ne sait pas conclure" doit etre mesure, pas presume inoffensif (2026-08-10, soir)
|
||||||
|
|
||||||
|
Le controle de portee ajoute pour mitiger le bug D bloquait sur preuve positive et LAISSAIT PASSER
|
||||||
|
les listes heterogenes, au motif qu'un faux positif serait pire. Les tests du correctif ont montre
|
||||||
|
que cette branche "je ne sais pas" recouvrait en fait un SECOND mode de corruption (bug E) : quand
|
||||||
|
un dossier ne contient aucun message DIRECT (ses messages sont dans ses sous-dossiers), OWA elargit
|
||||||
|
de lui-meme la recherche a toute la boite aux lettres et renvoie un melange en HTTP 200. Mesure sur
|
||||||
|
un dossier reel : 40 items, libelle majoritaire a 10/40, stable sur 3 appels. Les deux effets ont
|
||||||
|
ete isoles en interrogeant `/inbox` (qui ne recherche pas) : reponse "liste introuvable" = dossier
|
||||||
|
vide, donc navigation correcte et recherche fautive.
|
||||||
|
|
||||||
|
REFLEXE : avant de classer un cas comme non concluant, verifier empiriquement ce qu'il contient
|
||||||
|
REELLEMENT en production. Ici l'uniformite s'est revelee etre la norme d'une portee correcte, meme
|
||||||
|
sur les dossiers a enfants (27/27, 19/19) -- donc son absence etait une preuve suffisante pour
|
||||||
|
bloquer, et la politique permissive choisie par prudence etait precisement ce qui laissait passer la
|
||||||
|
corruption.
|
||||||
|
|
||||||
|
## PIEGE -- batteries de tests Playwright : toujours sous `flock`, une seule serie a la fois (2026-08-10, soir)
|
||||||
|
|
||||||
|
Une premiere serie de tests a tourne en double : un job `nohup` chaine derriere un build avait
|
||||||
|
survecu a sa session SSH. Les deux series tapant le meme navigateur, et le serveur SERIALISANT les
|
||||||
|
appels (`@serialize_owa`), leurs resultats se sont entrelaces -- un test renvoyait la portee du test
|
||||||
|
precedent, ce qui imitait parfaitement un echec du correctif en cours de validation.
|
||||||
|
|
||||||
|
REFLEXE : lancer ces batteries sous `flock -n`, verifier `ps aux` avant de conclure, et se mefier
|
||||||
|
d'un resultat qui "pointe vers le dossier d'a cote" plutot que vers un dossier arbitraire.
|
||||||
|
|||||||
Reference in New Issue
Block a user