le wiki suit le genome : un locataire n en est pas depositaire
Decision : seuls les SITES portent la forge, le cache APT et les artefacts. Meme geste que le retrait de serveur_artefacts d un plan de locataire, un cran plus loin — le site fournit tout ce dont un tenant a besoin pour venir au monde. La generalisation de forge_amorcer a un locataire est revenue en arriere : elle implementait le modele ecarte, et la garder en ferait un piege. ma_forge ne derive plus MA forge mais la forge qui porte MON genome. Le signal est deja au plan : serveur_ops_forge_externe dit je lis mon genome ailleurs. Qui le declare consulte, il ne republie pas. Reste vrai : une forge de locataire peut exister pour LE CODE DE SES GENS — c est l offre Atelier. Ce n est pas l endroit ou vit le moteur. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
This commit is contained in:
parent
8574b7b540
commit
f307a23345
2 changed files with 66 additions and 1 deletions
38
CHANGELOG.md
38
CHANGELOG.md
|
|
@ -1,5 +1,43 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-09-14 (11) — Le wiki suit le genome, et un locataire n'en est pas depositaire
|
||||
|
||||
Decision de l'exploitant : **seuls les SITES portent la forge, le cache APT et les
|
||||
artefacts.** Un locataire n'a pas besoin de sa propre forge pour le moteur — il le lit
|
||||
chez son hebergeur, comme il y prend ses paquets et son gabarit.
|
||||
|
||||
C'est le meme geste que le retrait de `serveur_artefacts` du plan d'un locataire, un cran
|
||||
plus loin, et la meme phrase le porte : *le site fournit tout ce dont un tenant a besoin
|
||||
pour venir au monde*.
|
||||
|
||||
### Ce que la soiree avait deja chiffre
|
||||
|
||||
Une forge par locataire, c'est une organisation, des depots, un mot de passe d'admin en
|
||||
voute, un mecanisme d'amorcage, un wiki, un miroir a tenir synchrone, et une preuve qu'il
|
||||
ne derive pas. Mesure du 2026-09-14 sur TechnoLibre : forge servie en `https=200`, cle du
|
||||
runner acceptee, **zero depot**. La chaine n'existait pas — pour UN locataire.
|
||||
|
||||
### La distinction qui reste vraie
|
||||
|
||||
« Un locataire n'a pas besoin d'une forge **pour le genome** » n'est pas « un locataire n'a
|
||||
jamais de forge ». L'offre **Atelier** vend precisement une forge a des equipes qui
|
||||
developpent : depots, tickets, revues, pour LEUR code. Ce n'est simplement pas l'endroit ou
|
||||
vit le moteur.
|
||||
|
||||
### Ce qui a ete defait, et pourquoi
|
||||
|
||||
La generalisation de `forge_amorcer.py` a un locataire est **revenue en arriere** : elle
|
||||
implementait le modele ecarte. La garder en ferait du code mort au mieux, un piege au pire
|
||||
— quelqu'un finirait par le lancer.
|
||||
|
||||
`ma_forge.py` change de regle : il ne derive plus « MA forge » mais **la forge qui porte
|
||||
mon genome**. Le signal est deja au plan — `serveur_ops_forge_externe: true` dit « je lis
|
||||
mon genome ailleurs ». Un ecosysteme qui le declare ne publie pas : il consulte, la ou le
|
||||
genome vit.
|
||||
|
||||
OPS-Technolibre -> refus : lit son genome sur 10.37.33.11
|
||||
SITE-Chezlepro -> forge.genese.internal
|
||||
|
||||
## 2026-09-14 (10) — Le temoin du wiki pointait une forge VIDE
|
||||
|
||||
En publiant les fiches de role, `make wiki-publier` a refuse : le wiki vise par le temoin
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
"""L'adresse du wiki de MA forge — celle de l'ecosysteme monte.
|
||||
"""L'adresse du wiki de la forge QUI PORTE MON GENOME.
|
||||
|
||||
CHAQUE RUNNER PUBLIE POUR SA FORGE (decide le 2026-09-14).
|
||||
|
||||
|
|
@ -20,6 +20,19 @@ DEUX NOTIONS A NE PAS CONFONDRE, et c'est ce qui a rendu le sujet trouble :
|
|||
Le runner d'un locataire lit sur la forge du SITE et sert sur la SIENNE. Les deux adresses
|
||||
different, et le wiki appartient a la seconde.
|
||||
|
||||
LE WIKI SUIT LE GENOME (decide le 2026-09-14). Un locataire ne porte PAS le moteur : il le
|
||||
lit sur la forge de son hebergeur, comme il y prend ses paquets et son gabarit. Lui faire
|
||||
publier la documentation du moteur sur SA forge reviendrait a l'en rendre depositaire —
|
||||
donc a lui imposer l'organisation, les depots, le miroir a tenir synchrone et la preuve
|
||||
qu'il ne derive pas. Pour un service qu'il ne rend a personne.
|
||||
|
||||
LE SIGNAL EST DEJA AU PLAN : `serveur_ops_forge_externe: true` dit « je lis mon genome
|
||||
ailleurs ». Un ecosysteme qui le declare ne publie pas — il consulte, la ou le genome vit.
|
||||
|
||||
CE QUI RESTE VRAI D'UNE FORGE DE LOCATAIRE : elle peut exister, et servir LE CODE DE SES
|
||||
GENS — depots, tickets, revues. C'est l'offre « Atelier ». Ce n'est simplement pas
|
||||
l'endroit ou vit le moteur.
|
||||
|
||||
CE QUI N'EST PAS DERIVABLE, ET C'EST DIT PLUTOT QUE DEVINE : le poste du mainteneur n'est
|
||||
le runner d'aucun ecosysteme. Il publie vers le domicile PUBLIC du projet, qui n'est la
|
||||
forge d'aucun plan. La, `WIKI_REMOTE` reste explicite — et il l'emporte toujours.
|
||||
|
|
@ -53,6 +66,20 @@ def ma_forge() -> tuple[str | None, str]:
|
|||
except (OSError, ValueError) as e:
|
||||
return None, f"plan illisible ({e.__class__.__name__})"
|
||||
|
||||
# UN ECOSYSTEME QUI LIT SON GENOME AILLEURS NE LE PUBLIE PAS. Le wiki suit le genome :
|
||||
# il vit la ou le moteur vit, et un locataire n'est pas son depositaire.
|
||||
gv = Path(inst) / "inventories" / "principal" / "group_vars" / "serveur_ops.yml"
|
||||
if gv.is_file():
|
||||
try:
|
||||
import yaml
|
||||
d = yaml.safe_load(gv.read_text(encoding="utf-8")) or {}
|
||||
except (OSError, yaml.YAMLError):
|
||||
d = {}
|
||||
if d.get("serveur_ops_forge_externe"):
|
||||
amont = d.get("serveur_ops_forge_amont") or "sa forge amont"
|
||||
return None, (f"{Path(inst).resolve().name} lit son genome sur {amont} — "
|
||||
"le wiki s'y consulte, il ne s'y republie pas d'ici")
|
||||
|
||||
# LE NOM DU SERVICE, PAS CELUI DE LA MACHINE. Un FQDN expose survit au demenagement du
|
||||
# service ; `forge-01` non. C'est la meme regle que partout ailleurs dans ce depot.
|
||||
for nom, app in (apps.items() if isinstance(apps, dict) else []):
|
||||
|
|
|
|||
Loading…
Reference in a new issue