# Le devis d'identité : ce qui tourne correspond-il à ce qui est déclaré ? > **Instrument ajouté le 2026-08-08**, après une série de défauts qu'aucun test n'avait > signalés. Lecture seule — il ne modifie rien. ``` make identite-plan ``` ## Le trou qu'il comble `scripts/prouver.py` porte 30 preuves. Elles sont toutes **statiques** : elles lisent le dépôt. Zéro appel réseau, zéro SSH, zéro `ansible`. Elles établissent que le dépôt est cohérent **avec lui-même** — que les handlers existent, que les intrants ont un propriétaire, que rien n'est codé en dur. Aucune ne demande au système déployé s'il ressemble à ce que le dépôt annonce. Les quatre défauts du 2026-08-08 vivaient tous dans cet angle : | Défaut | Le dépôt disait | La machine portait | |---|---|---| | politique de mot de passe | `length(12)…` | *aucune* — `abcd` accepté | | entrée `ppolicy` figée | `pwdMustChange: TRUE` | `FALSE` | | fédération en écriture | comptes écrits dans LDAP | `syncRegistrations` absent | | prénom | `givenName` | `cn` (le nom complet) | Chacun a été trouvé en relisant après avoir écrit. Aucun n'a été signalé. ## Ce qu'il vérifie Le playbook `playbooks/maintenance/devis-identite.yml` **relève** deux dictionnaires — le déclaré et le réel — et les dépose en JSON. `scripts/devis_identite.py` **compare**. La séparation est délibérée : la comparaison en Jinja est illisible, et le dépôt a déjà cette forme pour les devis réseau (Python raisonne, Ansible relève). - **realm** — politique de mot de passe, anti-force-brute, « mot de passe oublié », relais SMTP - **fédération** — mode d'écriture et les six clés de durcissement - **mappeurs** — chaque attribut LDAP projeté - **annuaire** — l'entrée `pwdPolicy`, attribut par attribut - **comptes** — ceux qui n'ont pas d'adresse, pour qui « mot de passe oublié » ne mène nulle part Le déclaré n'est jamais recopié ici : le playbook charge les défauts du rôle et appelle les résolveurs. **Un devis qui redéclare ce qu'il vérifie ne vérifie rien.** ## Ce qu'il ne fait pas Il ne corrige pas — c'est `make deployer` qui réconcilie. Il répond à l'autre question, et sort en code 1 s'il y a un écart. Il ne couvre que l'identité. Les autres services attendent le même traitement ; le patron est là pour être repris.