Set-OPS-Public/docs/audit/preuve-2026-08-12.md
Daniel Allaire 5ace6bdb95 adressage : le decalage de +10 est retire, l'index se lit dans l'adresse
supernet_de rendait 10.(10+index).0.0/16. Personne ne savait plus pourquoi : ni le
commentaire de la constante, ni le wiki, ni le commit fondateur 36a882b ne le
justifiaient. Trois endroits consultes, zero raison ecrite.

Ses deux effets constates :
  - il reservait 10.0-10.9 sous la plage tenant. Utile tant que l'underlay vivait
    la — mais D-77 l'a fait entrer dans la bande basse de son propre /16, ce qui a
    vide cette reserve de son role la veille ;
  - il eloignait le premier tenant de 10.0.0.0/16, la plage la plus repandue en
    reseau domestique. Ce risque revient donc aux index bas, et c'est ASSUME.

En echange l'index se lit directement dans l'adresse (17 -> 10.17.x.x) et le
plafond passe de 245 a 255 ecosystemes federes.

  Chezlepro (17)   10.27.0.0/16 -> 10.17.0.0/16
  Technolibre (11) 10.21.0.0/16 -> 10.11.0.0/16
  lab (1)          10.11.0.0/16 -> 10.1.0.0/16

Doc alignee : les trois pages du wiki, multi-instances.md (plafond et exemple
devenus faux arithmetiquement), sdn-evpn.md, le libelle de la GUI, la docstring
d'underlay.py, D-77, et le document de preparation d'un site hebergeur. Les
CONSTATS DE TERRAIN dates sont laisses tels quels : ce sont des mesures.

CE COMMIT NE RENUMEROTE RIEN. Il change ce que le plan DERIVE ; l'inventaire
applique porte toujours 10.27.x.x et les quatorze VM tournent dessus. Appliquer
sans reconstruire rendrait la flotte injoignable — le renumerotage est une
operation a part, a mener a froid.

Au passage, retire un debris : une copie de conflit Nextcloud de
serveur_powerdns/defaults/main.yml, IDENTIQUE a l'original, commitee par accident
dans 1295eea et jamais chargee par Ansible.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 16:16:08 -04:00

6.6 KiB
Raw Blame History

Preuve de conformite — Set-OPS — 2026-08-12

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, et le registre trace : docs/audit/affirmations.md.

  • Instance : instance — inventaire instance/inventories/principal/hosts.yml
  • Verdict : CONFORME (36 OK · 0 echec · 0 saute)

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 (inventaire genere) AFF-001, AFF-004, AFF-030, AFF-031, AFF-032 OK 14 hote(s) avec ecart.
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 : 30 groupes classes, aucun cycle, aucune arete en arriere.
P09 Flux reseau (schema + matrice) AFF-071 OK Flux coherents : 29 rôles, 77 flux, schéma + matrice OK.
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 playbook: playbooks/proxmox/cloner_vm_debian.yml
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 14 hotes, 31 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 : 26 secret(s) exige(s), tous presents. Voute reelle : 29 cle(s), aucun manque.
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 : 2 instance(s) federee(s), aucun index en collision.
P22 Plan de recette a jour (genere du wiki) AFF-002 OK Plan de recette à jour (20 sections).
P23 Underlay sans collision avec la plage tenant AFF-103 OK Underlay conforme : 6 reseau(x), aucune collision avec la plage tenant.
P24 Frontiere nord/sud : acces d'administration declare AFF-104 OK CONFORME : frontiere nord/sud, 39 regles, 12 routes, admin=10.0.0.0/24,192.168.254.2/32,192.168.255.2/32.
P25 Pare-feu Proxmox : est-ouest intra-tenant derive AFF-107 OK CONFORME : pare-feu Proxmox, 2 tenant(s), 40 groupe(s), 66 regle(s).
P26 Integrations universelles : aucun hote laisse de cote AFF-108 OK 14 hote(s) x 4 integration(s) universelle(s) : aucune lacune, aucune recopie (1 exemption(s) derivee(s) du service rendu).
P27 Propriete des intrants : hebergeur et tenant separes AFF-109 OK 0 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 : 2 pool(s) Proxmox, 28 VM placee(s), aucun nom ni VMID en collision.
P29 Authentification : chaque role declare sa position AFF-111 OK 23 role(s) serveur declares (interne-sans-auth 2, ldap-direct 2, sans-auth-humaine 12, socle-identite 2, web-sso 5) ; 2 lacune(s) nommee(s) : serveur_loki, serv
P30 SDN EVPN : zones, VNets et sous-reseaux derives AFF-112 OK CONFORME : SDN EVPN, 2 zone(s), 12 VNet(s), 12 sous-reseau(x), aucune collision.
P31 Documentation : tout ce que le depot FAIT est nomme OK 44 scripts expliques et atteignables, 92 cibles make documentees, 54 roles avec README.
P32 Intrants exiges par les roles : tous fournis OK CONFORME : 35 exigence(s) de role, toutes satisfaites (126 cle(s) declaree(s) par l'instance).
P33 Aucune collision de port entre roles co-localises OK CONFORME : 32 revendication(s) de port, aucune collision entre roles co-localises (33 groupes).
P34 Chaque document declare son lecteur OK 39 document(s) declarent leur lecteur (15 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).

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-08-12.