diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ad2e88..b742f77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,49 @@ # CHANGELOG — Set-OPS +## 2026-10-11 (136) — Technolibre reconstruit avec des dépôts privés : chaque runner ne lit que le sien + +**95 preuves.** Reconstruction complète de Technolibre (`make reconstruire-locataire`), puis +`make forge-etancheite` ETANCHE. Rien n'est changé dans le code par cette entrée : elle +consigne la preuve du chantier (`docs/depots-prives-conception.md`, décision D3). + +### La bascule + +`make forge-cles CONFIRMER=true` a rendu privés `site-chezlepro`, `ops-chezlepro` et +`ops-technolibre`. `set-ops-public` et `set-ops-modeles` restent publics. Mesuré ensuite : + +- sans identifiant, les trois dépôts privés exigent une authentification, les deux publics + répondent ; +- chaque runner de locataire lit son dépôt en SSH, et la forge lui refuse les deux autres ; +- la mesure qui avait ouvert le chantier, refaite depuis le runner de Technolibre : le dépôt + de Chezlepro et celui du site demandent maintenant un identifiant ; +- `make genome-etat`, qui lit maintenant la forge authentifié, trouve les cinq dépôts à jour. + +### La reconstruction de Technolibre + +Sauvegarde « avant-raser », rasage et création des 13 VM, puis arrêt à l'insémination sur un +dossier SSH absent d'une machine neuve (entrée 135, corrigé et publié). Reprise depuis +l'insémination, 36 minutes jusqu'au bilan : + +- **insémination** : le runner neuf n'avait pas encore de clé (« Identity file … not + accessible ») ; le runner du site lui a apporté `ops-technolibre` en colis, et le clone neuf + a réussi. C'était la seule partie du mécanisme jamais vue sur un runner ; +- **armement** : la voûte a remis la clé stable, et la garde de l'entrée 132 a confirmé + qu'elle est celle que la face publie ; +- **montage** : le runner a tiré son dépôt privé en SSH avec cette clé, puis monté la flotte, + recette comprise ; +- **bilan** : aucune perte. Sur les 9 machines qui portent un état, chaque témoin est + IDENTIQUE ou CONFORME à l'instantané d'avant le rasage (Nextcloud 268 fichiers, PostgreSQL + 121 tables, OpenLDAP 12 entrées, step-ca, courriel, rspamd, Icinga, Prometheus, Loki). + +Après coup, la console de Technolibre ne trouve rien à prendre : son moteur et son dépôt sont +au niveau de la forge, sa face est à jour. Son runner vise la forge en SSH et n'a plus de colis +en attente. + +**Limite.** Le runner de Chezlepro n'a pas été reconstruit ; il lit déjà son dépôt en SSH +depuis l'étape 3. Les deux consoles de locataires portaient avant la reconstruction un +moteur en retard (`d7717a4`) : celle de Technolibre est à jour, celle de Chezlepro attend un +`make appliquer GROUPE=serveur_ops`. + ## 2026-10-11 (135) — Une machine neuve n'avait pas encore de dossier SSH **95 preuves.** Le lint du rôle passe. Correctif de l'entrée 133, trouvé par la reconstruction diff --git a/docs/depots-prives-conception.md b/docs/depots-prives-conception.md index a4a926a..84a4092 100644 --- a/docs/depots-prives-conception.md +++ b/docs/depots-prives-conception.md @@ -126,6 +126,12 @@ pousse déjà en SSH), la console (`etat_forge` lit `origin`, qui deviendra l'UR ## 7. L'ordre de bascule +**Fait le 2026-10-11, étapes 1 à 5.** Bascule par `make forge-cles CONFIRMER=true`, mesurée +ETANCHE par `make forge-etancheite`. Preuve par reconstruction de Technolibre (§D3) : le runner +neuf a reçu son dépôt en colis à l'insémination (il n'avait pas encore de clé), l'a tiré en SSH +une fois armé, et la flotte est remontée avec ses témoins d'état intacts. La reconstruction a +d'abord révélé un dossier SSH manquant sur une machine neuve (corrigé, `3fc16c8`). + Chaque étape se vérifie avant la suivante, et la bascule se défait d'un appel par dépôt (repasser public).