From 36b6926e216a8618f01e87c470d1a51382ea0cc6 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Mon, 7 Sep 2026 00:13:21 -0400 Subject: [PATCH] patient 0 : il n existe plus, et le depot le disait encore au present MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ses machines sont detruites. Le depot en parlait comme d un ecosysteme vivant, et l une de ces phrases datait de la veille : positionnement.md comptait ses 5 VM dans la flotte, chiffre que j avais moi-meme ecrit en revisant. CE QUI EST CORRIGE positionnement.md 51 VM sur quatre plans vivants, et non 56 sur cinq sortir-les-cles-du-poste le genome est replique DEUX fois, non trois wiki/Glossaire.md SQLite : ce qu il PORTAIT filiation-emancipation la famille de pairs a perdu un pair decisions-architecture D-83 consigne le retrait, avec son cout carte-set-ops.md 80 decisions en vigueur LE COUT, PARCE QU IL N ETAIT NOMME NULLE PART D-82 lui avait laisse deux raisons d etre : la mise en oeuvre de reference du modele origine, et un TEMOIN de plus du genome. Le retrait solde la premiere et abaisse la seconde de trois copies vivantes a deux. Or c est le raisonnement de son propre README qui portait tout : on n echappe pas a la boucle par la ruse, mais par le NOMBRE. Le nombre a baisse. Et le point unique de defaillance que patient 0 existait pour eliminer — eregion, hors flotte, que Set-OPS ne deploie ni ne sauvegarde ni ne prouve — est toujours a la racine. Il n a jamais ete elimine, seulement promu ; il n y a maintenant plus de miroir independant pour l absorber. CE QUI RESTE SUR LE TERRAIN, ET QUI N EST PAS DE LA PROSE Son plan est encore sur disque en federe: true. La federation lui reserve donc toujours l index 29, la zone SDN t29, ses VNets, les VLAN 1291-1296 et les sous-reseaux 10.29.16-21.0/24. Quatre machines du site — backup, cache, dns, forge — acceptent encore SSH, apt, DNS et HTTPS depuis 10.29.0.0/16 : un perimetre vide. Le runner du site clone encore ops-patient0. C est un geste, pas une intention, et il touche le reseau : il n est pas fait ici. La sequence est listee dans D-83. make prouver --verifier : CONFORME, 56 OK, 0 echec, 1 saute. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q --- docs/carte-set-ops.md | 2 +- docs/decisions-architecture.md | 1 + docs/filiation-emancipation.md | 11 ++++++++--- docs/positionnement.md | 8 ++++---- docs/sortir-les-cles-du-poste.md | 11 +++++++++-- wiki/Glossaire.md | 3 ++- 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/docs/carte-set-ops.md b/docs/carte-set-ops.md index 6a526f1..051c1ce 100644 --- a/docs/carte-set-ops.md +++ b/docs/carte-set-ops.md @@ -28,7 +28,7 @@ README de rôles). Cette page comble ces deux trous. | documents | 39 | `docs/*.md` | | pièces d'audit | 36 | `docs/audit/*` | | unités de wiki | 27 | `wiki/*.md` | -| décisions en vigueur | 79 | lignes `\| **D-nn** \|` de `decisions-architecture.md` | +| décisions en vigueur | 80 | lignes `\| **D-nn** \|` de `decisions-architecture.md` | | décisions renversées | 3 | lignes `\| **D-nn** —` du même document | ## 1. À lire d'abord (dans l'ordre) diff --git a/docs/decisions-architecture.md b/docs/decisions-architecture.md index c768c0f..fe4f3b8 100644 --- a/docs/decisions-architecture.md +++ b/docs/decisions-architecture.md @@ -56,6 +56,7 @@ sont les seules vérifiables. | # | Décision | Pourquoi | Détail | Garde | |---|---|---|---|---| | **D-82** | **Patient 0 n'est le parent de personne.** Il est la **mise en œuvre de référence** du modèle `origine` — le plus petit écosystème complet — et un pair de la famille du génome, pas sa racine | trois faits l'ont retiré un par un : D-81 a donné l'autorité du génome à la forge du SITE (son dernier lecteur corrigé le 2026-08-26, Technolibre le 08-31) ; le dénominateur commun vit dans les modèles depuis le 08-24 ; et **l'ancêtre était locataire de son enfant** — index 29 sur la fabric de `SITE-Chezlepro`, qui descend de lui. Ce qu'il devait éliminer — le SPOF `eregion`, hors flotte — n'a PAS été éliminé mais **promu** : le poste y pousse, la forge du site en tire. Cette dette appartient désormais au SITE, et la nommer est le minimum : *un objectif qu'on abandonne sans le dire devient un objectif qu'on croit atteint* | `OPS-Patient0/README.md`, `docs/filiation-emancipation.md` | — | +| **D-83** | **Patient 0 a été retiré** — ses machines n'existent plus (constaté le 2026-09-06) | D-82 lui avait laissé une raison d'être : la mise en œuvre de référence du modèle `origine`, et un **témoin** de plus du génome. Le retrait solde la première et **abaisse la seconde de trois copies vivantes à deux** (`eregion`, la forge du site). Ce qu'il devait éliminer — le SPOF `eregion` — reste entier, et sans lui il n'y a plus de miroir indépendant pour l'absorber. **Son plan reste sur disque et la fédération lui réserve toujours l'index 29** : tant que ce n'est pas tranché, le site ouvre SSH, apt, DNS et HTTPS à `10.29.0.0/16` — un périmètre vide | `OPS-Patient0/`, `SITE-Chezlepro/flux-genere/` | **P21** (index), **P23** | | **D-81** | **La forge du SITE fait autorité pour le génome.** Toute autre copie — y compris celle d'où le moteur a été poussé jusqu'ici — est un **miroir**. Le poste de l'exploitant ne route pas jusqu'à elle : c'est le **runner du site** qui publie, par `make genome-pousser` | un écosystème se reproduit depuis la forge de son site : c'est de là qu'il clone son moteur, ses plans, ses modèles. Si l'autorité est ailleurs, cette forge devient un cache qu'on croit à jour — et le 2026-08-26 elle était **quatre commits en arrière** sans que rien ne le signale, dont le correctif qui désarme le pare-feu Proxmox. **Un écosystème qui se reproduit depuis une forge en retard reproduit ses défauts.** Le poste n'a de patte que sur l'administration, et on ne perce pas de chemin pour lui : le runner existe pour ce travail | `playbooks/maintenance/genome_pousser.yml`, `scripts/genome_colis.py`, `Makefile` §genome-pousser | — | | **D-13** | Un **hébergeur** sert plusieurs **tenants** et a son tenant par défaut | Chezlepro est les deux à la fois, ce qui masquait la distinction | `frontiere-opnsense.md` §2 | — | | **D-14** | `underlay.yml` appartient à l'**hébergeur**, monté par symlink | ce sont ses commutateurs, ses câbles ; le moteur est générique, un tenant n'en possède pas | `sdn-evpn.md`, `underlay.yml.example` | — | diff --git a/docs/filiation-emancipation.md b/docs/filiation-emancipation.md index 99b0c97..2e94280 100644 --- a/docs/filiation-emancipation.md +++ b/docs/filiation-emancipation.md @@ -196,9 +196,14 @@ la plus élégante, mais parce que les deux autres avaient cessé d'être dispon - **le SITE est la source** ✔ — c'est ce que D-81 avait déjà fait, et que le reste du dépôt a suivi sans qu'on le déclare : `serveur_forge_site`, puis `serveur_cache_site`, puis `serveur_resolveur_site`. Trois services prêtés, un seul patron ; -- **une famille de pairs** — reste vraie *pour la redondance*, et c'est ce que patient 0 - garde : il porte un miroir du génome comme chaque écosystème. Ce qu'il perd, c'est le - rang, pas la place. +- **une famille de pairs** — reste vraie *pour la redondance*. C'est ce que patient 0 + gardait : un miroir du génome, comme chaque écosystème. Il perdait le rang, pas la place. + +> **Il a perdu la place aussi : ses machines n'existent plus (2026-09-06).** La famille du +> génome compte donc **deux** copies vivantes au lieu de trois — `eregion` et la forge du +> site. Or c'est précisément le raisonnement ci-dessus qui portait tout : *on n'échappe pas +> à la boucle par la ruse, mais par le nombre.* Le nombre a baissé, et le SPOF que patient 0 +> devait absorber (`eregion`, hors flotte) est toujours là. **Ce que ça ne règle pas.** Le point unique de défaillance que patient 0 devait éliminer — `eregion`, hors flotte — n'a pas disparu : il alimente maintenant l'autorité. La dette a diff --git a/docs/positionnement.md b/docs/positionnement.md index e28ca40..93fac12 100644 --- a/docs/positionnement.md +++ b/docs/positionnement.md @@ -45,10 +45,10 @@ Raisons assumées : applications lourdes à héberger et maintenir (Django + PostgreSQL, etc.). Set-OPS reste possédé en entier, sans dépendance. 2. **Bon dimensionnement** — mais l'argument a bougé, et il faut le dire honnêtement. - Ce document a longtemps écrit « ~13 VM ». Le moteur pilote aujourd'hui **cinq plans** - (mesuré le 2026-09-06) : Chezlepro 14 VM, Technolibre 15, le lab 15, Patient 0 5, plus - les 7 machines du site — **56 VM déclarées**, réparties sur des écosystèmes qui ne se - parlent pas. Ça reste très loin de l'échelle entreprise pour laquelle NetBox est fait, + Ce document a longtemps écrit « ~13 VM ». Le moteur pilote aujourd'hui **quatre plans + vivants** (mesuré le 2026-09-06) : Chezlepro 14 VM, Technolibre 15, le lab 15, plus les + 7 machines du site — **51 VM déclarées**, réparties sur des écosystèmes qui ne se parlent + pas. *(Patient 0 en portait 5 ; ses machines n'existent plus.)* Ça reste très loin de l'échelle entreprise pour laquelle NetBox est fait, et le seuil du §4 n'est pas franchi. Mais la courbe monte : c'est **le** chiffre à regarder quand on se demande si la décision tient encore. 3. **Modèle sur-mesure** — NetBox exprimerait nos DSN / expositions à coups de diff --git a/docs/sortir-les-cles-du-poste.md b/docs/sortir-les-cles-du-poste.md index 86b011a..3493686 100644 --- a/docs/sortir-les-cles-du-poste.md +++ b/docs/sortir-les-cles-du-poste.md @@ -5,8 +5,15 @@ ## Ce qui est en jeu -Le **code** de Set-OPS est répliqué trois fois : `eregion`, la forge du site, patient 0. -Les **voûtes chiffrées** y sont aussi. Le coffre est solide. +Le **code** de Set-OPS est répliqué **deux fois** : `eregion` et la forge du site. Les +**voûtes chiffrées** y sont aussi. + +> **Ce chiffre était trois, et il a baissé sans que rien ne le signale.** Le troisième +> témoin était patient 0 ; ses machines n'existent plus. Un coffre répliqué deux fois reste +> solide — mais c'est la **redondance du génome** qui a diminué, pas le chiffrement, et +> c'est exactement ce que la page *Filiation, signatures & témoins* appelle la vraie mesure +> de résistance d'une lignée : combien de copies **vivantes**, sur combien de machines +> distinctes. Les **clés** qui l'ouvrent vivent dans neuf fichiers de ce poste — 1 644 octets — sans aucune copie ailleurs. S'y ajoutent les clés SSH par lesquelles on entre sur les diff --git a/wiki/Glossaire.md b/wiki/Glossaire.md index 3ed1700..a307f2d 100644 --- a/wiki/Glossaire.md +++ b/wiki/Glossaire.md @@ -289,7 +289,8 @@ règles. Un par écosystème. ## L'état, et sa preuve **SQLite** — Une base de données qui tient dans **un fichier**, sans serveur ni compte. -Suffisante pour une petite forge ; c'est ce que porte patient 0. À l'inverse de +Suffisante pour une petite forge — c'est ce que portait patient 0, dont les machines +n'existent plus. À l'inverse de *PostgreSQL*, qui est un service à part entière — un serveur, une zone, un secret. **restic** — L'outil de sauvegarde chiffrée et dédupliquée. Cf. [Sauvegardes](Sauvegardes).