Le garde-fou du compte n'était gardé par rien - #3
Merged
Conversation
Préparation de la 2.1.1. La campagne de mutation ciblée sur ce qui a bougé depuis la 2.1.0 a passé ses 25 cassages sans un aveugle — mais elle a mis au jour ce qu'elle ne pouvait PAS atteindre : `tests/mutation.js` ne sait casser que `server.js`, donc rien de `tools/` n'a jamais été éprouvé. Mesuré : `tools/verifie-compte-tests.js` — celui qui empêche le badge du README de mentir — avait sa fonction de décision exercée par aucun test. Neutraliser sa conclusion (`if (fautes)` → `if (false)`) laissait la suite verte ET la CI verte. Le garde-fou pouvait devenir purement décoratif sans que rien ne le dise : le défaut exact qu'il existe pour empêcher, retourné contre lui. Cinq tests le ferment, et deux relectures ont trouvé pire encore : - `compteRendu` prenait le PREMIER « tests N » de la sortie, pas le dernier. Avec le rapporteur que la CI obtient, un `console.log` dans un test produit une ligne indiscernable d'un résumé : l'outil lisait 12 au lieu de 344. Le piège se referme ensuite tout seul — CI rouge, on recopie 12 dans le badge, et le badge devient faux avec une CI verte. Latent, jamais déclenché : corrigé quand même. - rien ne lançait l'outil comme la CI le lance. Supprimer son `process.exit` laissait tout vert, pour toujours. Un test le lance en vrai processus. - un témoin s'appuyait sur l'absence du mot « conforme » sans que rien n'en affirme la présence : il pouvait se vider en silence. Les deux assertions se verrouillent maintenant l'une l'autre. Les sept cassages sont rejoués : sept détectés sur sept. Et puisque ce commit corrige des chiffres qui mentaient, il corrige aussi les autres : le README annonçait 262 tests huit lignes sous un badge qui en disait 344 (le nombre est supprimé — recopié à la main, il rementira), le CLAUDE.md se contredisait sur les tests d'interface (45 contre 46, c'est 46), « 38 mutations » n'a jamais été vrai (36, le CHANGELOG le disait), et `ETAT-DU-PROJET.md` portait six compteurs périmés. La formule est devenue « chacune détectée au moins une fois » : aucune campagne n'a éprouvé les 41 d'un bloc, et il fallait le dire. Enfin, l'icône de zone de notification n'est plus « JAMAIS EXÉCUTÉE ». Essayée le 2026-08-17 sur une vraie machine Windows 11 : pastille visible dans le tiroir caché, infobulle, menu au clic droit, double-clic — tout répond. Les trois sorties ont été chronométrées, et le retrait ne laisse pas de pastille fantôme, y compris par le chemin brutal (tué en 0,4 s) que le commentaire redoutait : Windows 11 nettoie de lui-même. Mesure sur UNE machine, pas une garantie — c'est écrit tel quel. `server.js` ne change qu'en commentaire, zéro ligne de code, et `dist/` suit. Ce qui n'est pas corrigé est écrit et daté dans `docs/reste-a-faire.md` plutôt que promis : un repère faux sur deux passe encore inaperçu (il faudrait rendre la racine injectable — pas la veille d'un tag), et les nombres écrits en prose ne sont gardés par rien. 346 tests, 0 ignoré. dist/ synchrone.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objectif
Préparation de la 2.1.1. Avant d'écrire les notes de version, on a cherché
les problèmes — pour que ces notes disent la vérité. La campagne de mutation
ciblée sur ce qui a bougé depuis la 2.1.0 est passée sans un aveugle (25/25),
mais elle a révélé ce qu'elle ne pouvait pas atteindre.
tests/mutation.jsne sait casser queserver.js. Rien detools/n'avaitdonc jamais été éprouvé — et c'est là que se cachait le trou.
Les changements
Le garde-fou du compte de tests est enfin gardé.
tools/verifie-compte-tests.jsempêche le badge du README de mentir. Safonction de décision n'était exercée par aucun test : neutraliser sa
conclusion (
if (fautes)→if (false)) laissait la suite verte et la CIverte. Cinq tests ferment ça, plus trois défauts trouvés en relecture —
dont un actif :
compteRenduprenait le premier « tests N » de lasortie au lieu du dernier, si bien qu'un
console.logdans un test pouvaitlui faire lire 12 au lieu de 344. Latent, jamais déclenché, corrigé.
Les chiffres qui mentaient sont corrigés.
Le README annonçait 262 tests huit lignes sous un badge qui en disait 344
(nombre supprimé : recopié à la main, il rementira) · le
CLAUDE.mdsecontredisait sur les tests d'interface (45 vs 46 — c'est 46) · « 38
mutations » n'a jamais été vrai (36, le CHANGELOG le disait) ·
ETAT-DU-PROJET.mdportait six compteurs périmés.L'icône de zone de notification n'est plus « JAMAIS EXÉCUTÉE ».
Essayée le 2026-08-17 sur une vraie machine Windows 11. Pastille visible
(dans le tiroir caché, comme prévu), infobulle, menu au clic droit,
double-clic : tout répond. Les trois sorties ont été chronométrées et le
retrait ne laisse pas de pastille fantôme, y compris par le chemin brutal
que le commentaire redoutait.
server.jsne change qu'en commentaire,zéro ligne de code, et
dist/suit.Vérifications réellement effectuées
npm testnode sync-dist.js --checkdist/synchrone avec les sourcesnode tools/verifie-compte-tests.jsserver.js= commentaire seulDeux relectures indépendantes (revue de code, ingénierie de test) ont été
passées ; leurs sept accusations ont été vérifiées une par une avant correction,
y compris une qui portait contre une erreur introduite dans cette branche même
(« 38 à l'époque » — c'était 36).
Risques et ce qui reste à surveiller
seule exécute la suite sur Ubuntu et sur Windows.
développement produit l'autre format. Le défaut n°1 a été mesuré sur une sortie
fabriquée, pas sur une vraie sortie de runner.
docs/reste-a-faire.mdplutôt que promis :un repère faux sur deux passe encore inaperçu (il faudrait rendre la racine
injectable — pas la veille d'un tag), et les nombres écrits en prose ne sont
gardés par rien.
ancien, la pastille morte peut rester jusqu'au survol de la souris — c'est
écrit tel quel dans la documentation, sans être présenté comme une garantie.
⚠ Cette branche ne bumpe pas la version :
package.jsonet le CHANGELOGrestent inchangés. La 2.1.1 fait l'objet d'un travail séparé.