dcb463ee00
Dernière surface figée dans l'outil « anti-dérive par construction » : run_ci.sh dérive déjà la liste des checks de gate.needs (zéro liste en dur) mais son commentaire d'en-tête re-transcrivait à la main « 30 jobs · 23 suites · 7 gates » — un « vert trompeur » de la classe qu'il combat, logé dans sa propre doc (ajouter un job module → le script s'adapte, le commentaire se périme en silence). FIX (éliminer le nombre figé), pas gate N+1 : un lanceur de commodité (root ∉ ci/*.sh) ne mérite pas un gate redondant (#5) qui prendrait la mauvaise autorité. - ventilation dérivée des mêmes ROWS que l'exécution (n_gates/n_suites/n_jobs) ; - en-tête d'exécution + pied de --list impriment « 30 = 7 + 23 » (toujours exact) ; - commentaire reformulé : littéraux 30/23/7 remplacés par la description qualitative bash ci/*.sh / python3 -m unittest + note « décompte DÉRIVÉ, jamais figé ici » (anti-invention CLAUDE.md #6). Vérif : --list/--static impriment 30=7+23 · run_ci.sh complet 30 PASS/0 FAIL/0 SKIP · 7 gates re-joués exit 0. Aucun gate ajouté (#5). Aucune commande touchant au VPS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>