# La preuve — prouver, pas affirmer > **Unité d'apprentissage.** Moule : ① concept → ② Set-OPS → ③ transférable → ④ à toi de jouer. --- ## ① Le concept *(générique)* Une affirmation sans **vérification rejouable** n'est que du marketing. « C'est sécurisé », « c'est sauvegardé », « ça fonctionne » — *prouve-le*. La discipline se résume à une règle : > **Ne jamais affirmer plus que ce qu'on prouve.** Trois idées la portent : - **Registre d'affirmations** — chaque promesse publique est tracée vers une **commande qui la vérifie**, ou marquée honnêtement « non prouvée ». - **Harnais rejouable** — une seule commande rejoue *toutes* les preuves et produit une **pièce justificative datée**. On ne « croit » pas : on **relance**. - **Le registre a le droit de perdre** — une preuve qui échoue fait *redescendre* l'affirmation. C'est la seule condition pour qu'un tel registre ait de la valeur. --- ## ② Comment Set-OPS le fait - **Le registre** : `docs/audit/affirmations.md` — chaque affirmation du dépôt (README, docs, aide `make`, GUI) reliée à une preuve et un statut (✅/🟡/❌/⚪). - **Le harnais** : `make prouver` rejoue les preuves automatisables (**P01–P34**) et écrit `docs/audit/preuve-.md`. `make verifier` les inclut : il **échoue** si une preuve échoue. - **Chaque preuve garde une classe d'erreur.** Extrait : | Preuve | Ce qu'elle empêche de mentir | |---|---| | P03 | l'inventaire n'est pas généré du plan (**diff vide**) | | P06 | un registre incohérent (dont l'**hôte fantôme**) | | P17 | un **modèle** invalide (tous, pas seulement le socle) | | P18 | un **gabarit de voûte** incomplet | | P19 | un champ du plan que le **GUI** ne sait pas éditer | | P20 | de l'**adressage stocké** (tout doit dériver du seed) | | P21 | une **collision d'index** entre instances fédérées | | P31 | une capacité du dépôt **non expliquée** (script muet, cible sans aide, rôle sans README) | | P32 | un intrant qu'un rôle **exige** et que l'instance ne fournit pas | | P33 | deux rôles co-localisés qui **revendiquent le même port** | | P34 | un document qui ne **déclare pas son lecteur** — il finirait rangé par sujet, donc introuvable | > **Ce que ces preuves ne font pas, et il faut le savoir avant de leur faire confiance.** Elles > sont toutes **statiques** : elles lisent le dépôt, sans un seul appel réseau. Elles établissent > qu'il est cohérent *avec lui-même* — jamais que le système déployé lui ressemble. C'est dans > cet angle mort qu'un certificat d'autorité a pu rester expiré huit heures sous un harnais vert. > La conformité du **déployé** est l'affaire des **devis de service** (voir `docs/devis-services.md`). Ce n'est pas un framework de test parallèle : le harnais **orchestre** l'outillage existant, il ne réimplémente aucune validation. --- ## ③ Pourquoi c'est transférable | Set-OPS | Équivalents ailleurs | |---|---| | `make prouver` | tests automatisés, **CI/CD**, `terraform validate` | | registre d'affirmations | *traçabilité de conformité* (SOC 2, ISO) | | pièce justificative datée | *audit trail*, preuve d'audit | | « le registre peut perdre » | un test vert n'est utile que s'il peut virer rouge | Tu as appris **la vérification rejouable, la preuve d'audit, la culture du test** — pas « le harnais de Set-OPS ». --- ## ④ À toi de jouer 1. **Produis une preuve.** `make prouver` (voûte exportée). Lis `docs/audit/preuve-.md` : chaque preuve, son verdict, l'affirmation couverte. 2. **Fais échouer une preuve — exprès.** Introduis un **hôte fantôme** : dans `applications.yml`, pointe une appli vers un hôte qui n'existe pas dans `serveurs.yml`. `make prouver` : **P06 échoue**, en nommant l'hôte. Corrige (ou via le `