Aucune position n'est fiable dans le refus d'un garde, donc on en montre plus¶
scripts/batterie.pyCe qui fait foi aujourd'hui
Amendée le 2026-09-29 par l'ADR 5533 : la porte lit d'abord une forme déclarée - REFUS : et POUR REPARER : - et n'en montre les deux premières lignes non vides que si le garde ne l'emploie pas. L'esprit de cette décision tient : elle refusait de deviner une structure, et lire une structure déclarée n'est pas deviner.
Le contexte¶
scripts/batterie.py récapitule les refus qu'elle a recueillis. Elle en citait une ligne, et le
choix de laquelle est le sujet de cette décision.
La première écriture prenait la première ligne non vide. Sur les trois refus réels d'une batterie, mesurés le 2026-09-07, deux commencent par la cause et le troisième par un titre suivi de deux points. Prendre la dernière ligne échoue symétriquement.
Et le cas qui a ouvert l'issue est pire : le geste de 4617-code-mort-et-zone-de-test.py est sur sa
troisième ligne, Lancez d abord : ./mvnw -B -o test-compile pmd:pmd. Un lecteur voyait donc un
refus dont la conduite à tenir était invisible.
La décision¶
On montre plus au lieu de deviner : les deux premières lignes non vides, chacune bornée séparément.
Amendé (#5485). Ce qui suit reste vrai d'un garde qui n'a pas de forme déclarée, et c'est le cas
de la plupart. Pour les autres, la porte lit la forme et montre la cause et le geste où qu'ils
soient. La différence n'est pas le nombre de lignes, c'est qui décide lesquelles : la position
avant, le garde lui-même désormais. Le geste de 4617 vivait en troisième ligne et se perdait ; il
s'affiche.
Ce n'est pas un compromis sur le nombre, c'est le refus d'une inférence. Deviner la position de la cause ou du geste reviendrait à inférer une structure que les gardes ne partagent pas, et l'ADR 5398 vient précisément de refuser qu'une exemption s'infère de la forme d'une sortie.
Borner chaque ligne plutôt que la chaîne jointe est la seconde moitié : une troncature appliquée à la concaténation supprime la seconde ligne dès que la première est longue, c'est-à-dire exactement ce qu'on venait de rendre visible.
Ce qu'elle coûte, et ce qu'elle ne résout pas¶
Deux lignes ne montrent pas un geste posé sur la troisième, et le cas de 4617 reste donc à moitié
traité. La décision l'assume : elle rend la règle honnête plutôt que juste, et le remède complet
demande que les gardes refusent par une forme commune, ce qui est un autre travail (#5485).
Ce que cette ADR ferme, c'est la tentation d'ajouter une règle de position de plus à chaque refus rencontré.
Conséquences¶
- un garde neuf n'a rien à déclarer pour que son refus soit lisible ;
- un refus dont la cause et le geste tiennent en deux lignes est intégralement montré ;
- le jour où #5485 donnera une forme commune aux refus, cette ADR sera amendée : la position redeviendra fiable, et montrer plus cessera d'être nécessaire.