Set-OPS-Public/docs/audit/preuve-2026-09-01.md

93 lines
10 KiB
Markdown
Raw Normal View History

emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
# Preuve de conformite — Set-OPS — 2026-09-01
> Genere par `make prouver` (`scripts/prouver.py`). **Rejouable** : relancer
> reproduit ce rapport. Chaque preuve rejoue l'outillage existant du depot ;
> aucune validation n'est reimplementee ici. Voir le mode d'emploi :
> [`docs/audit/README.md`](README.md), et le registre trace :
> [`docs/audit/affirmations.md`](affirmations.md).
- **Instance** : `instance` — inventaire `instance/inventories/principal/hosts.yml`
gabarit : minimal — il etait un cache du socle, et il perimait sans le dire Il portait DIX-SEPT roles : exactement ceux du socle et du durcissement, que le deploiement rejoue a l identique. C etait donc un CACHE — et comme tout cache, il perimait sans le dire. MESURE : derniere recapture le 2026-08-09, et SIX de ses roles avaient change depuis — common_packages, cloud_init, ssh_baseline, ssh_hardening, auditd, nftables_baseline. Rien ne le signalait : le deploiement masquait la derive en reappliquant tout, donc personne ne pouvait la voir. Aucune preuve du harnais ne regardait sa fraicheur. IL NE GARDE QUE CE QUI DOIT EXISTER AVANT QU ANSIBLE PUISSE AGIR : qemu_guest_agent l agent repond AVANT SSH — P52 s en sert cloud_init le seul chemin vers la premiere seconde sudo_ansible la porte par ou tout entre ssh_baseline le serveur SSH Ce ne sont pas des choix d efficacite, ce sont des conditions d existence. CE QUE CA COUTE, ET QUI EST COUVERT : une VM neuve n est plus durcie a la naissance. Elle nait cependant DERRIERE LE PARE-FEU DE L HYPERVISEUR, policy_in=REJECT arme au clonage — verifie sur obs-01. La fenetre d exposition est fermee par la fabric, pas par le gabarit. Mon objection initiale tombait devant la mesure. P56 GARDE LES DEUX MOITIES. Qu il ne REGROSSISSE pas : un role ajoute recree le cache, donc la peremption invisible. Et que rien de retire ne soit PERDU : un role absent du gabarit ET du socle disparaitrait de toutes les machines neuves, sans erreur ni trace, et la panne arriverait des mois plus tard sur une machine qu on croyait durcie. Verifie : 14 retires, 14 repris, zero orphelin. Deux controles negatifs. make verifier : vert. make prouver : CONFORME, 56 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 10:35:20 -04:00
- **Verdict** : ✅ CONFORME (56 OK · 0 echec · 0 saute)
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
## Preuves
| # | Preuve | Affirmations | Statut | Detail |
|---|---|---|---|---|
| P01 | Lint (ansible-lint) | AFF-006 | ✅ OK |  |
| P02 | Tests unitaires (inventory_host) | — | ✅ OK | >>> le verrou tient : aucune VM n'aurait ete touchee |
| P03 | Diff-vide du plan — TOUTES les instances | AFF-001, AFF-004, AFF-030, AFF-031, AFF-032 | ✅ OK | 4 instance(s) verifiee(s) — OPS-Chezlepro-lab, OPS-Chezlepro, OPS-Technolibre, OPS-Patient0 : plan et inventaire applique coincident. |
| P04 | Groupes <-> playbooks homonymes | AFF-008 | ✅ OK | |
| P05 | Dependances causales de groupes | AFF-009, AFF-084 | ✅ OK | |
| P06 | Validateurs de registres (serveurs/apps/bases/domaines) | AFF-003 | ✅ OK | Registre des domaines valide. |
| P07 | GUI (node --check) | AFF-033 | ✅ OK | JS du GUI : syntaxe valide (node --check). |
| P08 | Orchestration (couches + graphe) | AFF-070 | ✅ OK | Orchestration coherente : 40 groupes classes, aucun cycle, aucune arete en arriere. |
| P09 | Flux reseau (schema + matrice) | AFF-071 | ✅ OK | Flux coherents : 38 rôles, 98 flux, schéma + matrice OK. |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P10 | Handlers <-> notify | AFF-034, AFF-035 | ✅ OK | Tout notify pointe vers un handler du meme role (49 roles). |
| P11 | Syntaxe des playbooks (--syntax-check) | AFF-083 | ✅ OK | serveur_resolveur_site |
| P12 | Existence des runbooks cites | AFF-010, AFF-011, AFF-012, AFF-083 | ✅ OK | 17/17 runbooks/registres cites presents. |
| P13 | Invariants structurels/doctrinaux | AFF-015, AFF-022, AFF-037, AFF-038, AFF-062 | ✅ OK | LICENSE, socle dossier, pas de couches paralleles, SSH clef-only, nftables off : OK. |
| P14 | Pas de chemin lab/ code en dur | AFF-097 | ✅ OK | Aucun chemin instance/inventories/lab/group_vars code en dur. |
| P15 | Modele public socle valide | AFF-022, AFF-099 | ✅ OK | Modele public socle : domaines/serveurs/applications/bases valides. |
| P16 | Inventaire Ansible complet (--list) | AFF-030 | ✅ OK | 15 hotes, 36 groupes (inventaire dechiffre et parse). |
| P17 | Tous les modeles valident (registres + underlay) | AFF-022, AFF-099 | ✅ OK | Les 1 modele(s) decouvert(s) valident. |
| P18 | Gabarit de voute complet | AFF-026 | ✅ OK | Gabarit de voute complet : 23 secret(s) exige(s), tous presents. (Voute reelle non lisible ici : verification sautee.) |
| P19 | Le GUI couvre le schema du plan | AFF-002, AFF-095 | ✅ OK | GUI : les 28 champ(s) des plans reels sont editables (2 plan(s) inspecte(s)), registres toleres : nomenclature. |
| P20 | Adressage 100% derive du seed (aucun stocke) | AFF-001, AFF-003 | ✅ OK | 2 nomenclature(s) : adressage 100% derive du seed index. |
| P21 | Federation : aucun index en collision | AFF-102 | ✅ OK | Federation coherente : 3 instance(s) federee(s), aucun index en collision. |
| P22 | Plan de recette a jour (genere du wiki) | AFF-002 | ✅ OK | Plan de recette à jour (22 sections). |
| P23 | Underlay sans collision avec la plage tenant | AFF-103 | ✅ OK | Underlay conforme : 12 reseau(x), aucune collision avec la plage tenant. |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P24 | Frontiere nord/sud : acces d'administration declare | AFF-104 | ✅ OK | note : serveur_powerdns declare un port `derive` que le plan du site ne resout pas — aucune regle emise. |
| P25 | Pare-feu Proxmox : est-ouest intra-tenant derive | AFF-107 | ✅ OK | CONFORME : pare-feu Proxmox, 3 tenant(s), 51 groupe(s), 81 regle(s). |
| P26 | Integrations universelles : aucun hote laisse de cote | AFF-108 | ✅ OK | 15 hote(s) x 5 integration(s) universelle(s) : aucune lacune, aucune recopie (0 exemption(s) derivee(s) du service rendu). |
| P27 | Propriete des intrants : hebergeur et tenant separes | AFF-109 | ✅ OK | 8 cle(s) de cluster chez l'hebergeur, aucune recopiee dans les group_vars du tenant. |
| P28 | Pools Proxmox : un par tenant, sans collision | AFF-110 | ✅ OK | CONFORME : 3 pool(s) Proxmox, 35 VM placee(s), aucun nom ni VMID en collision. |
| P29 | Authentification : chaque role declare sa position | AFF-111 | ✅ OK | 32 role(s) serveur declares (interne-sans-auth 2, ldap-direct 2, sans-auth-humaine 21, socle-identite 2, web-sso 5) ; 2 lacune(s) nommee(s) : serveur_loki, serv |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P30 | SDN EVPN : zones, VNets et sous-reseaux derives | AFF-112 | ✅ OK | CONFORME : SDN EVPN, 3 zone(s), 15 VNet(s), 15 sous-reseau(x), aucune collision. |
| P31 | Documentation : tout ce que le depot FAIT est nomme | — | ✅ OK | 54 scripts expliques et atteignables, 108 cibles make documentees, 64 roles avec README. |
| P32 | Intrants exiges par les roles : tous fournis | — | ✅ OK | CONFORME : 41 exigence(s) de role, toutes satisfaites (130 cle(s) declaree(s) par l'instance). |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P33 | Aucune collision de port entre roles co-localises | — | ✅ OK | CONFORME : 33 revendication(s) de port, aucune collision entre roles co-localises (38 groupes). |
| P34 | Chaque document declare son lecteur | — | ✅ OK | 42 document(s) declarent leur lecteur (29 genere(s) exempte(s)). |
| P35 | Toute application exigeant une base en a une au plan | — | ✅ OK | 5 application(s) exigeant une base l'ont toutes (4 entree(s) au registre). |
| P36 | Tout detenteur d'etat porte une sauvegarde | — | ✅ OK | 9 hote(s) detiennent de l'etat, tous porteurs de `client_backup` (9 groupe(s) au catalogue). |
| P37 | Le placement du tenant existe chez son hebergeur | — | ✅ OK | placement confronte a l'hebergeur monte (SITE-Chezlepro) : noeud, stockage, pont — tous offerts. |
| P38 | Catalogue des services : la carte dit ce que le moteur fait | — | ✅ OK | Catalogue a jour : 39 role(s) serveur/client tous nommes, 40 groupe(s) cite(s) en table existent tous. |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P39 | Glossaire : tout mot employe est enseigne | — | ✅ OK | Glossaire complet : 81 terme(s) du jargon expliques, 15 lien(s) valides, 27 page(s) de wiki toutes atteignables. |
| P40 | Parente : l'ecosysteme sait de quoi il descend | — | ✅ OK | Parente coherente : 4 depot(s), tous retrouves, tous porteurs d'un remote. |
gabarit : q35 n est pas un reglage, c est la raison de la procedure manuelle CONSTAT DE L EXPLOITANT, PAYE EN ANOMALIES : convertir une machine deja installee d `i440fx` a `q35` produit une serie de pannes dont chacune ressemble a autre chose qu a sa cause. Ce n est pas une correction, c est une transplantation. LE MECANISME, ECRIT POUR QU ON NE LE REDECOUVRE PAS : `i440fx` est un chipset PCI, `q35` est PCIe. La topologie des bus change, donc les NOMS D INTERFACES PREDICTIBLES changent avec le chemin PCI (enp0s3 -> enp1s0) et la machine perd le reseau ; les chemins de disques bougent ; l ordre d enumeration suit. C EST AUSSI POURQUOI SET-OPS N UTILISE PAS L IMAGE CLOUD OFFICIELLE DE DEBIAN : `genericcloud` est livree configuree pour `i440fx`. Une machine nait `q35`, ou elle ne le sera jamais proprement — et c est ce que l installation depuis l ISO garantit. Ces deux lignes de la procedure n etaient qu une ligne de tableau. Elles portent maintenant leur pourquoi, et le SITE les declare comme DONNEES (cle `gabarit`), plus seulement comme prose. `make gabarit-etat` compare le gabarit reel a ce que le site declare de lui. ON VERIFIE LA SOURCE, PAS CHAQUE COPIE. Ma premiere version gardait le CLONAGE : la propriete s herite, donc verifier chaque clone coute a chaque creation sans rien dire de plus que verifier le gabarit une fois. Retiree. TROIS FOIS J AI DEVINE LA FORME DE LA REPONSE AU LIEU DE LA REGARDER — regex_search a groupe qui rend None, proxmox_vm_info sans `config: current` qui ne rend que l etat. La garde a declare « ? » sur une VM parfaitement conforme : une garde qui crie toujours est pire qu aucune, on apprend a l ignorer. A la demande et non dans `make prouver` : ce controle exige le cluster, que le harnais ne suppose pas joignable. Meme nature que genome-etat et underlay-plan. Controle negatif verifie : declarer i440fx fait echouer, rc=1. make verifier : vert. make prouver : CONFORME, 56 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 14:42:58 -04:00
| P41 | Resolution d'instance : une seule, partagee | — | ✅ OK | Resolution unique : 50 script(s) passent par `inventory_rules`, 3 exemption(s) nommee(s). |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P42 | L'edge porte les noms qu'il publie | — | ✅ OK | 4 edge(s) emettent un certificat portant les noms publies (OPS-Chezlepro-lab/principal, OPS-Chezlepro/principal, OPS-Technolibre/principal, OPS-Patient0/product |
| P43 | Frontiere : le devis voit les machines du site | — | ✅ OK | Devis de la frontiere : 6 machine(s) du plan retrouvees, 80 regle(s) du site. |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P44 | Integrations : le serveur avant ses clients | — | ✅ OK | 4 integration(s) appliquent leur serveur avant leurs clients. |
| P45 | Pare-feu Proxmox : arme sur les VNet SDN, jamais ailleurs | — | ✅ OK | Le pare-feu Proxmox ne s'arme que sur un VNet SDN (4 cas evalues, dont un qui doit rendre VRAI). |
| P46 | Plancher /etc/hosts : un seul role en decide | — | ✅ OK | Un seul maitre du plancher — roles/hosts_statiques/tasks/main.yml : manage_etc_hosts: false ; et le gabarit maitre est pose (roles/hosts_statiques/templates/hos |
| P47 | Zones inverses : couvrir l'occupe, et rien de plus | — | ✅ OK | Les zones inverses couvrent l'occupe et rien de plus (5 cas evalues, dont un site a quatre zones et un tenant a une). |
| P48 | La carte d'orientation designe ce qui existe, et compte juste | — | ✅ OK | La carte designe 84 chemin(s) qui existent, et ses 7 chiffres correspondent a la mesure. |
| P49 | Registre des flux : la matrice d'audit est a jour | — | ✅ OK | Le registre des flux reproduit exactement ce que les `meta/flux.yml` declarent (116 lignes). |
| P50 | Silences : un refus muet est declare, place en dernier, et motive | — | ✅ OK | 2 silence(s) declare(s), tous en sequence > 1 (la plus haute des 145 regles `pass`), tous non consignes et tous motives. |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
| P51 | Collections : toutes declarees, toutes epinglees | — | ✅ OK | 3 collection(s) et 2 bibliotheque(s) Python declarees et epinglees : ansible.posix==1.6.2, community.general==10.3.0, community.postgresql==3.10.2 |
| P52 | Materialiser n'exige pas d'entrer dans le tenant | — | ✅ OK | `creer-vm` confirme par l'agent invite (API des hyperviseurs, deja utilisee pour creer), sans exiger d'entrer dans le tenant. |
| P53 | L'interne refuse a voix haute, la bordure se tait | — | ✅ OK | L'interne parle, la bordure se tait — 15 ruleset(s) nftables refusent a voix haute ; pare-feu est-ouest en REJECT, source unique ; frontiere muette (actions : b |
| P54 | L'insemination ne reclame aucun secret du tenant | — | ✅ OK | 2 couche(s) d'insemination (serveur_debian, serveur_ops), 10 role(s) applique(s), aucun secret de tenant reclame. |
| P55 | La cle du SITE ne nait que sur le runner d'un tenant | — | ✅ OK | 15 hote(s) : la cle du SITE ne nait que sur 1 runner(s) de tenant, celle du tenant sur 15. |
gabarit : minimal — il etait un cache du socle, et il perimait sans le dire Il portait DIX-SEPT roles : exactement ceux du socle et du durcissement, que le deploiement rejoue a l identique. C etait donc un CACHE — et comme tout cache, il perimait sans le dire. MESURE : derniere recapture le 2026-08-09, et SIX de ses roles avaient change depuis — common_packages, cloud_init, ssh_baseline, ssh_hardening, auditd, nftables_baseline. Rien ne le signalait : le deploiement masquait la derive en reappliquant tout, donc personne ne pouvait la voir. Aucune preuve du harnais ne regardait sa fraicheur. IL NE GARDE QUE CE QUI DOIT EXISTER AVANT QU ANSIBLE PUISSE AGIR : qemu_guest_agent l agent repond AVANT SSH — P52 s en sert cloud_init le seul chemin vers la premiere seconde sudo_ansible la porte par ou tout entre ssh_baseline le serveur SSH Ce ne sont pas des choix d efficacite, ce sont des conditions d existence. CE QUE CA COUTE, ET QUI EST COUVERT : une VM neuve n est plus durcie a la naissance. Elle nait cependant DERRIERE LE PARE-FEU DE L HYPERVISEUR, policy_in=REJECT arme au clonage — verifie sur obs-01. La fenetre d exposition est fermee par la fabric, pas par le gabarit. Mon objection initiale tombait devant la mesure. P56 GARDE LES DEUX MOITIES. Qu il ne REGROSSISSE pas : un role ajoute recree le cache, donc la peremption invisible. Et que rien de retire ne soit PERDU : un role absent du gabarit ET du socle disparaitrait de toutes les machines neuves, sans erreur ni trace, et la panne arriverait des mois plus tard sur une machine qu on croyait durcie. Verifie : 14 retires, 14 repris, zero orphelin. Deux controles negatifs. make verifier : vert. make prouver : CONFORME, 56 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 10:35:20 -04:00
| P56 | Gabarit minimal, et rien de retire n'est perdu | — | ✅ OK | Gabarit minimal : 4 role(s), tous indispensables au premier demarrage ; 14 role(s) retire(s), tous repris par le socle ou le durcissement. |
emancipation : l instrument de la quatrieme ligne — couper, pas sonder docs/filiation-emancipation.md decrit quatre temps et n en outillait que trois. Le quatrieme est celui qu on oublie : « une emancipation non prouvee est une emancipation non faite ». SONDER NE PROUVE RIEN. Verifier que le service local repond ne dit pas si l amont sert encore — le depot le disait deja du cache : « tant qu internet repond, un apt update qui reussit ne dit pas d ou vient l octet ». L instrument COUPE donc l amont et refait marcher la chose. LE MEME ESSAI REND LES DEUX VERDICTS, et c est ce qui le rend honnete : coupe, la fonction marche -> EMANCIPE, et c est prouve coupe, la fonction casse -> PAS EMANCIPE, dependance prouvee REELLE Le second n est pas un echec de l outil, c est son CONTROLE NEGATIF rendu par la meme commande. Une preuve d emancipation incapable de montrer la dependance qu elle mesure ne prouverait rien le jour ou elle passerait au vert. UN TEMOIN PRECEDE LA COUPURE : la fonction marchait-elle seulement avant ? Sans lui, une panne preexistante se lirait comme une dependance. LA COUPURE EST GARANTIE REVERSIBLE : une TABLE nftables dediee, jamais une regle glissee dans une table existante — elle se retire d un geste et ne peut pas laisser d etat partiel. Le bloc `always` la retire meme si la mesure echoue ou si le play est interrompu, et une tache verifie ensuite qu elle a bien disparu. MESURE LE JOUR DE SA NAISSANCE, les deux verdicts sur du vrai materiel : obs-01 / resolveur PAS EMANCIPE — plus aucune resolution des la coupure forge-01 / artefacts EMANCIPE — apt installe, cache du site coupe Ce second verdict a ete DOUTE puis verifie : apt aurait pu reussir en rejouant des listes fraiches. Refait avec un dossier de listes NEUF, amont coupe : reussit quand meme. Le cache sert vraiment son contenu. make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 08:36:28 -04:00
## Couverture des affirmations ✅ du registre
Chaque affirmation ✅ automatisable est couverte par la preuve indiquee ci-dessus.
Les ✅ **structurelles/doctrinales** non rejouables par une commande (ex. AFF-005
`make`=aide, AFF-014 ciblage groupe, AFF-024 `instancier-appliquer`, AFF-051 autorite
d'AGENTS.md, AFF-073/075 gardes `make`, AFF-090 wiki) ont ete verifiees a l'audit ;
elles restent hors du harnais recurrent (rien d'executable a rejouer).
## Declarations d'intention (⚪ invérifiables localement — assumees)
Ces affirmations ne sont pas rejouables hors production ; elles sont **assumees**
comme declarations d'intention, non comme preuves :
- **AFF-036** — « testables avec `--check` autant que possible » : verifiable seulement
contre une flotte vivante.
- **AFF-091** — contenu pedagogique du wiki : affirmations conceptuelles.
- **AFF-096** — « GUI 100 % francais » : revue exhaustive des libelles rendus, non automatisee.
- **AFF-007** — hote d'exemple `web-frontal-01` : placeholder assume.
_Rapport genere le 2026-09-01._