diff --git a/scripts/prouver.py b/scripts/prouver.py index d662dad..6422e00 100644 --- a/scripts/prouver.py +++ b/scripts/prouver.py @@ -581,6 +581,18 @@ def preuve_documentation_outillage() -> tuple[bool, str]: manques.append(f"{len(muets)} script(s) sans docstring explicative : " + ", ".join(muets[:6]) + ("…" if len(muets) > 6 else "")) + # Un script peut aussi etre invoque par un ROLE ou un PLAYBOOK — `serveur_keycloak` + # appelle `verifier_signature.py` pour controler la signature de son archive. Ne + # regarder que le Makefile et les autres scripts declarait ce script « injoignable » + # alors qu'il tourne a chaque deploiement. Trouve le 2026-08-10, en ajoutant + # justement cette verification : une preuve qui ignore un chemin d'appel reel accuse + # du code sain, et on apprend a passer outre — le pire sort pour une garde. + ansible_yaml = "\n".join( + f.read_text(encoding="utf-8", errors="ignore") + for dossier in ("roles", "playbooks") + for f in (RACINE / dossier).rglob("*.yml") + ) + injoignables = [] for f in scripts: autres = "\n".join(v for k, v in textes.items() if k != f.name) @@ -589,6 +601,8 @@ def preuve_documentation_outillage() -> tuple[bool, str]: continue if module in autres: # importe ou appele par un autre outil continue + if f.name in ansible_yaml: # invoque par un role ou un playbook + continue injoignables.append(f.name) if injoignables: manques.append(f"{len(injoignables)} script(s) qu'aucune cible ni aucun outil "