Set-OPS-Public/wiki/La-preuve.md
Daniel Allaire 5bc3bceac1
Some checks failed
verifier / verifier (push) Has been cancelled
documentation : la tournee des 74 documents, parce qu un balayage ne lit pas
La revision a commence par un balayage par motifs — chemins morts, cibles make
absentes, comptes derives. Il a trouve une trentaine d ecarts et rate presque
tout le reste : un motif ne voit que ce qui s exprime en motif.

make hote-planifier en est l exemple. La cible EXISTE, donc le controle passait
au vert. C est une cible depreciee qui refuse et sort en 2, recommandee par
AGENTS.md, et qui contredit la REGLE D OR du meme fichier trois ecrans plus
haut. Il fallait lire pour la voir.

74 documents lus un par un. 66 corriges, 8 exacts.

CE QUI ETAIT FRANCHEMENT FAUX

AGENTS.md, la source d autorite, annoncait la flotte pas encore executee contre
des VM reelles. Elle a ete rasee et remontee depuis zero trois fois.
ecosysteme-chezlepro.md, le document montre a un client, portait la meme
phrase : il se sous-vendait gravement.

courriel-conception.md s ouvrait sur aucun role n est encore ecrit, au-dessus de
son propre paragraphe 1 qui les nomme. autorisation.md se terminait sur rien n
est construit alors qu il rapporte des mesures datees du role en fonctionnement.
hebergeur-exploitation.md disait rien n est fait d un depot qui existe.
filiation-emancipation.md se contredisait a deux ecrans de distance.

DES MODELES DECRITS D APRES UN MONDE ANTERIEUR

Le resolveur : cinq documents decrivaient un Unbound par VM en opt-in, trois le
donnaient en exemple d integration FACULTATIVE — il est universel depuis le
2026-08-24. L adressage de nomenclature-vm.md : reseau unique, VLAN 11-15, VMID
a cinq chiffres. Le nommage SDN de sdn-evpn.md contre le code : c est le wiki
qui avait raison.

CE QUI CASSE AU PREMIER ESSAI

Le nom du gabarit dore etait faux a quatre endroits, dont la procedure qui le
FABRIQUE et le critere R2 de l epreuve d operateur independant.
preparer-un-site-hebergeur.md avertissait qu une VM faite a la main serait
detruite : raser derive du plan, il ne la detruira jamais — le risque est l
inverse. Un mot de passe d essai en clair dans un depot public.

DEUX PREUVES ETENDUES, ET UNE QUI SE TROMPAIT ELLE-MEME

P57 couvre les groupes : elle a signale aussitot 29 groupes annonces au-dessus d
un tableau qui en cite 40. P29 confronte le tableau de authentification.md aux
declarations reelles : 12 annonces, 21 reels.

Et P57 imposait un chiffre faux — 56 preuves alors que le depot en porte 57, la
conditionnelle vivant hors de tout comptage. Un garde-fou qui fait respecter une
erreur ajoute l assurance a l erreur.

CE QUI RESTE, ET QU AUCUNE PREUVE NE TIENT

Deux comptes trouves a la main. Et une lacune reelle : rien ne garde les
meta/acces.yml — ni qu un service web-sso en porte un, ni que le groupe qu il
nomme existe. P29 tient les positions d authentification, personne ne tient les
habilitations.

make prouver : CONFORME, 56 OK, 0 echec, 1 saute. 0 lien mort.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-06 16:18:23 -04:00

6.7 KiB
Raw Blame History

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–P57, sans trou dans la série) et écrit docs/audit/preuve-<date>.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
P35 une application dont le rôle exige une base sans entrée au plan — sinon l'écart n'apparaît qu'après quarante minutes de déploiement
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-<date>.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 <select> de la GUI) : vert.
  3. Une autre. Remets de l'adressage dans une nomenclature (vlan: 42), make prouver : P20 échoue. Retire-le : vert.
  4. Lis le registre. Ouvre docs/audit/affirmations.md : trouve une affirmation ⚪ (non prouvable localement) — vois comment elle est assumée comme intention, jamais présentée comme prouvée.
  5. Comprends la valeur. Demande-toi : quelle promesse est-ce que je fais sans preuve ? C'est exactement ce que ce registre force à regarder en face.

Le défaut le plus dangereux n'est pas l'erreur, c'est la copie

Set-OPS pilote plusieurs écosystèmes. Avant d'agir, chaque script doit donc savoir lequel il regarde — par le lien instance, ou par la variable SETOPS_INSTANCE.

En août 2026, neuf scripts avaient chacun écrit leur propre réponse à cette question. Trois lignes chacun. Aucune n'était fausse en soi.

Le problème n'est pas l'erreur : c'est que neuf copies ne vieillissent pas ensemble. Quand on améliore l'une, les huit autres ne le savent pas. Et personne ne peut le voir, parce que de l'intérieur d'un fichier, la copie locale a toujours l'air correcte.

Ce que ça donnait

make placement-plan visait patient 0 et répondait :

Devis du placement — tenant « instance »
  noeud asgard · stockage TrueNAS · gabarit 99998   →  CONFORME

C'était vrai — sur l'autre écosystème. Sa copie lisait le lien au lieu de la variable. Comme les deux tenants portaient les mêmes valeurs de placement, le verdict semblait juste. C'est très exactement la circonstance où une erreur ne se voit pas.

Cinq défauts de cette famille sont sortis en cinq jours. Tous dans des outils qui constatent — preuves et devis — jamais dans ceux qui agissent. C'est moins grave et plus insidieux : un outil qui agit mal, on le voit ; un outil qui mesure mal dit « conforme », et on passe à la suite.

La réponse

Une source unique : une fonction, dans un fichier, que tous appellent. Si elle est fausse, elle l'est partout d'un coup — donc visible, donc corrigée une fois.

Et une preuve, P41, qui refuse la prochaine copie. Elle en a trouvé une dixième le jour de son écriture, dans le fichier des preuves lui-même.

C'est la même leçon que proxmox-hebergeur.yml : les nœuds et stockages du cluster recopiés chez chaque tenant avaient divergé. Une source, pas N copies — pour les données comme pour le code.


Pour aller plus loin (dépôt)

  • Le mode d'emploi : docs/audit/README.md.
  • Le registre : docs/audit/affirmations.md ; le harnais : scripts/prouver.py.
  • L'épreuve humaine (« exploitable sans IA ») : docs/audit/protocole-operateur-independant.md.