Commit graph

381 commits

Author SHA1 Message Date
f11bb11ad7 vigie : sa base dans tous les modes ; trois restes du site corrigés
- serveur_icingaweb2 : base de console résolue et utilisée en SSO comme en db
  (config_backend db) ; le badge de migrations la réclame sans condition
- serveur_icingaweb2 : php8.4-fpm et nginx avant les paquets tiers ; apache2
  retiré s'il part seul (apt-get -s purge)
- serveur_nginx : ssl_protocols de Debian neutralisé (doublon à chaque reload)
- site_inventaire : les hyperviseurs ne reçoivent plus le cache du site ni ses
  amorçages, qu'ils n'atteignent pas
- exemple de voûte : vault_bd_icingaweb2 dans tous les modes ; CHANGELOG 64

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 21:04:51 -04:00
8d40c687e1 site : journaux allégés, porteur de santé retiré des hyperviseurs
- client_sante : tasks/retirer.yml, joué sur hyperviseurs:!client_sante ;
  le minuteur resté depuis le 2026-09-10 visait 10.0.36.11 et échouait
  toutes les 15 min (une unité en échec permanente par hyperviseur)
- site_inventaire : plus de client_sante_icinga_url pour les hyperviseurs
- client_journal : loki.process jette le bruit de la sonde connectivite,
  phrase exacte et seulement depuis une machine de client_sante
- serveur_loki : log_level warn (Loki réingérait ses propres requêtes)
- auditd : règle never pour adjtimex de node_exporter (35 % de l'audit) ;
  nouveau handler augenrules --load, un restart d'auditd ne rechargeait
  pas les règles sur Debian 13
- audit : rapport de preuves du 2026-10-03, carte à 51 pièces

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 17:58:47 -04:00
6a8fc53084 frontiere : les interfaces internes refusent a voix haute, le WAN reste muet
Un reject final, journalise, sur chaque interface interne (zones du site,
gestion, transit, WireGuard) : un flux mal declare entre deux zones echoue
au lieu d'expirer. P53 affinee, P50 ne compte que les block, test du devis.
La sonde classe ECONNREFUSED en avertissement : le RST de la frontiere est
indiscernable d'un port ferme.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 15:39:46 -04:00
7a2f179f39 repertoires partages : un seul mode par repertoire ; le depot de binaires du site sert de nouveau
/var/lib/setops etait tenu par quatre roles (0750 contre 0755) : apt-cacher-ng
ne le traversait plus, le depot rendait 403 et chaque runner reconstruit allait
chercher 500 Mo sur Internet. /etc/setops (0700 contre 0755) et /srv/restic au
site portaient le meme desaccord. test_repertoires_partages.py le refuse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:01:54 -04:00
25fd4fc6f1 flux : seulement_si non_vide ; forge 3000 et PowerDNS 5300 conditionnels
La forge du site sert son propre TLS (443) : le flux 3000 derriere un edge
ne vaut que si serveur_forgejo_tls est faux. L'AXFR 5300 ne vaut que la ou
l'instance publique existe (dns_public_site non vide) : pas au site.
Absente partout = vide ; une expression Jinja garde le statu quo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:01:46 -04:00
85932d948c connectivite : la liste hors de /etc/setops, le chemin du site, la simulation
Au site, l'inventaire est dynamique : le chemin de la liste pointait hors du
depot (meme surcharge que le ruleset). /etc/setops a deja ses gardiens : la
liste, qui n'a rien de secret, va dans /usr/local/lib/setops. L'activation
du minuteur ne s'execute plus en --check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:59:22 -04:00
34bfd43e06 flux : seulement_si — un flux peut dependre d'un reglage de l'ecosysteme
La vigie (8080) et la console (8090) n'ecoutent sur le reseau qu'en mode
locale ; en SSO, nginx est lie a 127.0.0.1 et la regle ne menait a rien.
Evaluee par ecosysteme dans les trois generateurs (nftables, Proxmox,
frontiere). Locataires : 8 regles Proxmox et 4 nftables en moins. Site :
inchange.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:45:48 -04:00
d2e2bb8990 connectivite : une sonde a la minute remplace la matrice du pare-feu
make flux ecrit, a cote de chaque .nft et depuis les memes regles, la
liste de ce que chaque VM doit joindre. La sonde (nftables_baseline) la
teste chaque minute avec la cause (rejete, delai, personne n'ecoute) ;
client_sante la porte en mode minute ; Icinga a une fraicheur par sonde.
eprouver_parefeu --sondes : tout activer d'un coup, juger par Icinga.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:46:49 -04:00
2bf94acb96 reconstruire-locataire : les sous-commandes ecrivent sans tampon
L'etape parefeu est restee muette douze minutes : ecrivant dans un tuyau,
le Python enfant gardait sa sortie par blocs. PYTHONUNBUFFERED pour tous
les enfants, -u pour eprouver_parefeu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:25:14 -04:00
20a5e44803 client_backup : le premier rapport a Icinga part d'un marqueur a lui ; le pare-feu ne compte que ses critiques
La copie de l'AC d'Icinga est deposee aussi par client_sante, plus tot :
sur une flotte neuve elle ne changeait jamais ici, et rien ne partait
(reconstruction de Chezlepro). client_backup retient desormais l'empreinte
de l'Icinga qui l'a entendu, apres le rapport. eprouver_parefeu ne s'arrete
plus sur les critiques presents avant l'activation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:08:55 -04:00
249d37d2c4 reconstruire-locataire : le nom de l'ecosysteme n'est plus demande deux fois
TENANT= le designe en toutes lettres ; le nom qu'exige raser en est
derive par raser.nom_court (une seule derivation). raser seul garde
son garde-fou.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:56:42 -04:00
a5a21ee4c5 reconstruire-locataire : le runner du site tire ses trois depots avant toute etape
Moteur, plan du locataire, depot du site (deduit d'underlay.yml), en
avance rapide seulement ; refus devant une modification locale. Vaut
aussi pour une reprise DEPUIS=creer ou inseminer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:35:23 -04:00
5a6d0f28f6 reconstruire-locataire : eprouve d'armer a bilan ; le suivi ne duplique plus le journal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:24:28 -04:00
14bf977bd6 reconstruction : make reconstruire-locataire conduit tout depuis le poste
Sauvegarder, raser/creer/inseminer (runner du site), armer (pause sauf
ARMER=oui), monter-flotte (runner du locataire), pare-feu, bilan.
Arret a la premiere etape en echec, reprise par DEPUIS=, journal dans
<locataire>/logs/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 10:14:12 -04:00
cc906af918 reconstruction : monter-flotte et parefeu-*-flotte entrent dans le code
La sequence du runner (flux, socle, deployer-tout, valider) devient
make monter-flotte ; reconstruire s'appuie dessus. eprouver_parefeu.py
--flotte : toutes les VM une a une, runner en dernier, arret au premier
refus ; les reseaux des IPSet (zone d'administration) comptent enfin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 05:23:27 -04:00
b135b09488 client_backup : un Icinga neuf recoit le premier rapport sans attendre dimanche
La copie de l'AC d'Icinga change quand Icinga ou le noeud est neuf : elle
declenche deposer, verifier le depot, verifier la restauration. Eprouve
sur web-frontal-01 de Technolibre ; second passage sans effet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 04:40:20 -04:00
515aac415a restauration : la section d'une base passe a psql par l'entree standard
postgres ne lit pas le repertoire jetable de root ; trouve en repetition
sur data-sql-01 de Technolibre. Le test l'exige desormais.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 02:51:19 -04:00
8a9da0c31a restauration : la reconstruction remet l'etat de l'incarnation precedente
Chaque role proprietaire (AC, bases, annuaire, Nextcloud, rspamd/DKIM,
courriel, forge, web) remet son etat au moment ou il le creerait neuf,
depuis le dernier instantane anterieur a la naissance de la machine.
La sauvegarde refuse de deposer tant qu'un etat d'avant attend.
Outil de noeud setops-restaurer ; cibles sauvegarder-maintenant,
restauration-etat, restauration-renoncer ; test_restauration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 02:39:22 -04:00
f3e8883083 flux : sans voir son site, un ecosysteme qui en depend ne regenere pas ses pare-feux
Sur le runner d un locataire (ni underlay.yml ni plan du site), make flux reecrivait des
regles amputees de tout lien au site : AXFR du DNS public, collecte de la fabric,
insemination. Le generateur s abstient et le dit ; les regles committees font foi.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 00:33:27 -04:00
37753984a7 services publics des locataires : web frontal 80/443, soumission 587/465 ; externe ouvre a tous chez les locataires
Le web frontal devient la porte publique (80/443 externe) ; Postfix publie la soumission
587 et ajoute le 465 (TLS direct). Le generateur nftables ouvrait un flux externe combine
a une source nommee a cette seule source : l Internet etait refuse par l hote. Corrige chez
les locataires ; au site, rien ne s elargit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 16:09:31 -04:00
e9b03399b9 frontiere : NAT des locataires par leur adresse publique (devis)
Sortie traduite avec l adresse attribuee par le site ; flux externe rediriges depuis cette
adresse vers la machine du role. Gardes : pas de redirection en double, adresse du pool.
Non applique : en attente de l accord de l exploitant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 15:54:36 -04:00
e84b155a5f pool d adresses publiques : le site attribue a chaque locataire la sienne
Declare dans opnsense.yml du site, rendu par le contrat (ip_publique), valide (une par
locataire, jamais celle du site), compare aux alias du WAN par frontiere-plan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 15:24:09 -04:00
712a7da1fd frontiere : les flux admin traduits chez les tenants ; edge retire de l Internet
Le devis OPNsense ne rendait le chemin du poste chez un tenant qu au travers des flux
externe ; il traduit desormais les flux admin (gestion, VPN). Applique : 4 retraits
(WAN -> edges), 18 ajouts, 0 ecart. sonde_tcp : une fermeture propre apres la requete
est une reponse de la destination ; la mesure de la frontiere est conforme.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 15:05:23 -04:00
2695013b32 proxmox-fw : les types ICMP au vocabulaire de Proxmox (fragmentation-needed)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 14:05:22 -04:00
1493059271 edge ferme a l Internet ; le pare-feu Proxmox recoit les flux externe
L edge n expose qu a sa zone d administration (plus de pair externe) ; le public passera
par le web frontal. Le devis Proxmox recoit les flux externe depuis +t<i>-internet (RFC 1918
exclus en nomatch) et depuis l admin quand le poste en est client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 13:58:01 -04:00
1bd211d62b resolution_interne : entre machines du site, chaque nom mene a son service
L edge expose les interfaces web aux personnes ; les VM du site vont directement au
service. Declare par domaine (service | edge, defaut edge) ; plancher, zone et certificat
du service suivent. Pose au site : 35 planchers sur 35 conformes ; locataires inchanges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 13:25:37 -04:00
eee6851c3b sonde plancher ; une exposition sans port n est plus attribuee a l edge
La zone publie l empreinte de ce que le plancher doit porter ; chaque machine la compare
a son /etc/hosts. Au site, elle a revele que sauvegarde, pki et dns.genese.internal
pointaient vers l edge (regression de mon deploiement du matin) : la derivation ne donne
plus a l edge ce qui n a pas de port. Zone du site corrigee, SFTP des locataires verifie.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 12:34:47 -04:00
6b6a56ab3f sondes filtrage et edge : elles verifient le service rendu ; l edge refuse les noms inconnus
filtrage soumet GTUBE ; edge interroge chaque exposition en local. Sans serveur
par defaut, un nom inconnu recevait Keycloak : 000-defaut.conf (444, rejet TLS).
Garde test_sondes_syntaxe : chaque gabarit de sonde se rend en bash valide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:40:26 -04:00
cf08e51c38 wireguard : pairs de Technolibre appliques ; un renommage se fait sur place
Le meme appareil renomme garde sa cle : creer puis retirer echouait (cle en
double) et laissait le tunnel sans pair dans la configuration. rapprocher le
reconnait a la cle et modifie le pair existant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 17:33:04 -04:00
91dc90f22b publier : eregion et la forge du site en un seul geste, verifie
La forge du site fait autorite et n etait nourrie que par un geste a part,
genome-pousser, qu on oublie. make publier pousse, porte, et verifie ; il refuse
si eregion porte des commits absents du poste.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 17:20:06 -04:00
b1c4775afe sauvegardes : un controle hebdomadaire de restauration, rapporte a Icinga
restic check en relisant 10 pourcent des donnees, puis restauration reelle du
dernier instantane avec --verify et comptage des fichiers. Service restauration,
fraicheur de 8 jours, filtre du compte d API complete.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 17:04:28 -04:00
a401481ae9 administration : la frontiere garde l intrant, l est-ouest y ajoute le tunnel
Ajouter le tunnel a admin_de l avait fait classer WAN par le devis de la
frontiere : une regle SSH sur le WAN qui ne correspondrait jamais.
admin_avec_tunnel pour Proxmox et l epreuve ; admin_de redevient l intrant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 16:54:32 -04:00
5e7534d87f pare-feu proxmox : la procedure d activation prouvee entre au depot
eprouver_parefeu.py, make proxmox-fw-eprouver et proxmox-fw-activer-vm :
matrice du devis, flux observes, avant/apres, Icinga ; sans objet derive de
ce qui ecoute, VMID du bon locataire.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 16:09:22 -04:00
67fd3ab6b7 administration : nftables et Proxmox admettent les memes sources
Le devis Proxmox ne lisait que nftables_admin_ssh ; nftables y ajoutait le
tunnel du locataire. Filtre par Proxmox, Technolibre refusait le SSH de son
propre tunnel. Une derivation, tunnel_admin_de, pour les deux.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 15:39:37 -04:00
35831608d0 pare-feu proxmox : un flux ICMP devient une regle, au lieu d etre saute
Le type ICMP (echo-request) etait range parmi les ports derives et le flux
saute : le ping de supervision n avait pas de regle, et web-frontal-01 passe
en REJECT est devenu mort pour Icinga. icmp_type dans le devis, icmp-type
vers l API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 15:01:04 -04:00
4ce296f3d5 pare-feu proxmox : un flux ICMP devient une regle, au lieu d etre saute
Le type ICMP (echo-request) etait range parmi les ports derives et le flux
saute : le ping de supervision n avait pas de regle, et web-frontal-01 passe
en REJECT est devenu mort pour Icinga. icmp_type dans le devis, icmp-type
vers l API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 13:29:38 -04:00
4f5a0b5696 pare-feu proxmox : poser les objets, puis activer VM par VM
--objets-seulement et --vm <vmid> : aucune des 26 VM des locataires n avait son
pare-feu actif ; tout activer d un coup ouvrait 26 pannes possibles a la fois.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 13:25:29 -04:00
0156596f01 P02 : une table du plan ne se coupe plus a son premier commentaire
_fusion_table traversait mal les commentaires interieurs a une entree :
chezlepro.ca (DNSSEC) etait coupee et ses enregistrements pris pour des entrees.
make verifier : CONFORME, 83 OK, 0 echec.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 13:17:52 -04:00
5f52dcb2b7 wireguard : rotation des cles de daniel-portable, sans afficher de privee
cle-appareil et config --cle/--vers ecrivent les secrets en 0600 ;
--portee restreint appliquer au tunnel vise. Nouvelles cles en service,
anciennes retirees, Technolibre intact.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 12:57:15 -04:00
4855cda294 voutes : elles sortent du poste, dans leur propre archive, relues
exporter_voutes.py et make voutes-exporter : les six voutes (gitignorees, sur
aucune forge) sont sur la cle USB, a cote des cles ; restauration eprouvee.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 12:53:14 -04:00
0551c4b4de exportateur postgresql de chezlepro pose ; les voutes ne sont pas sur les forges
vault_pg_exportateur ajoute a la voute de Chezlepro (hors depot), role redeploye,
pg_up 1 : plus aucun critique. La voute a ete redeposee sur le runner. Deux
phrases qui disaient les voutes repliquees sur les forges sont corrigees.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 12:41:14 -04:00
f5adffb0de sondes conditionnelles : attendues seulement la ou elles sont posees
seulement_si dans meta/supervision.yml, lu par le gabarit Icinga des sondes ;
garde test_sondes_conditionnelles. journaux-frontiere ne rougit plus a vie chez
les locataires ; Technolibre sans critique.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 12:31:17 -04:00
185b000c60 icinga : un service passif qui n a jamais rien recu passe au rouge
Gabarit setops-rapport-attendu : actif, dummy critique, check_interval = le
ttl que le noeud envoie. Prouve a t+60 s sur site-mon-01, deploye sur les trois
Icinga ; la garde test_fraicheur_icinga lie seuils et ttl.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 12:05:15 -04:00
478aab3eb8 pare-feu Proxmox : force dans l URL, et le retrait de t29 est pose
Proxmox refuse un corps sur DELETE (501) : aucun IPSet n etait jamais retire
par l applicateur. SDN, frontiere et pare-feu Proxmox ne portent plus rien de
l index 29 ; le journal dit comment, et ce qui reste (strophe FRR).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 10:08:22 -04:00
badbcd3971 pare-feu Proxmox : un tenant retire sort du perimetre, ses objets aussi
Les IPSets et groupes t29- restaient poses : le perimetre ne retenait que
les prefixes des tenants presents. Les etiquettes des zones retirees
(ANCIEN_NOMMAGE du SDN) y entrent, pour etre retirees. Et un cluster muet
arrete le plan au lieu de se lire vide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 09:58:42 -04:00
fde604c2a5 pare-feu et pools Proxmox : les tenants du site, pas toute la federation
Les deux devis balayaient tous les dossiers freres. Le runner du site, qui
gardait un clone de patient 0, proposait de recreer ses groupes t29 ; le poste
comptait un dossier de CI comme tenant. La frontiere et le SDN filtraient deja
par underlay.tenants : ces deux-la suivent maintenant la meme liste.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 09:57:06 -04:00
6a7188290f sdn : un cluster muet n est pas un cluster vide, et t29 se retire
Le poste coupe du site, sdn-plan annoncait a creer : 33 — toutes les zones,
Chezlepro comprise. Une lecture en echec rendait un dict d erreur, que rep or []
parcourait comme une liste vide. La lecture s arrete maintenant, comme la frontiere.

t29 rejoint l ancien nommage : sortie du devis sans cela, la zone aurait ete
lue comme etrangere et laissee en place, avec ses VLAN 1291-1296.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 09:34:20 -04:00
c0f610be33 patient 0 efface : l index 29 est libere, et le site n ouvre plus rien a 10.29.0.0/16
Ses machines n existaient plus depuis le 2026-09-06 (D-83), mais son plan
restait sur disque : la federation lui reservait l index 29 et quatre machines
du site lui ouvraient SSH, apt, DNS et HTTPS. Les commentaires et documents
vivants gardent leur lecon sans le nommer ; les archives restent telles quelles.

Pas encore sur le reseau : les regles regenerees attendent le runner du site.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 21:55:27 -04:00
1d07a6cf80 runbooks : la recette tranche, le registre ne se compare plus a lui-meme
Un outil tiers veut n'offrir de ce moteur que ce qui n'agit pas. Le seul champ
qui le lui dise est `nature`. Il fallait donc qu'il ne mente pas, et il mentait
dans les deux sens.

`filiation` → `emancipation-prouver` se declarait « mesure » en portant
`fixes: {CONFIRMER: "true"}`. La cible tranche elle-meme — son refus dit
« cette preuve COUPE l'amont quelques secondes pour mesurer ». Un constat
rapporte ne rend pas inerte le geste qui l'obtient : l'etape passe a
`ecriture`.

Dans l'autre sens, trois cibles — flotte-creer, deployer-tout, reconstruire —
refusent sans confirmation sans que le registre le declare : un assistant les
lancait telles quelles, et sortait en 2. Comparer `nature` a `fixes` ne les
voyait pas, car c'est comparer deux champs ecrits par la meme main. `verifier`
lit desormais la RECETTE, qui ne ment pas.

Effet de bord traite : une etape qui agit barre celles qui la suivent dans la
console, alors qu'une « mesure » se debloque d'office. `depots-perimes` est
marque `facultative` — il nettoie ce que la filiation a laisse, il n'en est pas
le prealable.

`lister --json` rend le registre assemble d'un bloc, et le drapeau est refuse
hors de son action : rendre la prose humaine a qui demande du JSON est pire
qu'un refus. L'affichage humain ne bouge pas, et la preuve mesure ce qu'il
PORTE — un identifiant, un libelle, les marques de nature — et non seulement
qu'il n'est pas du JSON.

Valide : `verifier` a 0 ecart, test_runbooks.py 25/25, et sept des neuf
epreuves de `make test` ; test_raser et test_raser_resultat echouent sur
« Aucune instance montee », avant comme apres. Mesure : 127 etapes, dont 84 de
nature « mesure » — la surface qui n'agit pas.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RbXr5vv4Rat6PCPGG9GoG8
2026-09-25 17:54:03 -04:00
d461492623 adressage : le site est une flotte, et P20 le regarde enfin
L'exploitant a demande si l'adressage derive ne valait pas pour toute flotte, site compris.
Oui — decision du 12 septembre, index 37 pour le site. J'avais affirme le contraire a
l'entree (11) du CHANGELOG, en recopiant un commentaire perime de huit jours au lieu de
mesurer. Un commentaire perime se propage : celui-la s'etait aussi loge dans la docstring de
ConsoleSite.

P20 s'appelle « Adressage 100% derive du seed (aucun stocke) » et sa portee etait
« l'instance liee + les modeles » : elle ne regardait jamais le site, qui stockait
sous_reseau et passerelle pour ses sept zones. Elle juge desormais les deux natures d'un
underlay et refuse une entree qui ne declare pas la sienne — on ne peut pas juger ce qu'on
ne sait pas lire. Controle negatif joue : une zone remise a 10.36.31.0/24 est refusee, en
nommant l'index dont elle aurait du descendre.

Le loader derive sous_reseau et passerelle a la lecture, pour que rien ne change chez les
consommateurs. Mesure : 14 valeurs retirees du fichier, zero ecart sur ce qu'ils lisent, et
make underlay, devis-sdn et devis-reseau passent.

Valide : make test a 0 echec, P20 verte sur 2 nomenclatures et 7 zones de site. P02 et P60
restent, pour les raisons deja consignees.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 22:46:43 -04:00