Publication du wiki depuis le depot (source: d461492)

Daniel Allaire 2026-09-21 10:33:53 -04:00
parent cb20bb57cf
commit 777de741e4

@ -133,6 +133,46 @@ d'instance, devis de configuration des switches.
---
### La vue **Assistants** — l'ordre des gestes, pas seulement les gestes
Les huit autres vues éditent le **plan**. Celle-ci conduit des **gestes**, et elle répond à un
trou précis : le `Makefile` porte **132 cibles documentées** qui disent chacune *ce qu'elle
fait*, et **aucune ne dit dans quel ordre**. Un exploitant devant un site neuf n'avait aucun
moyen d'apprendre, depuis la console, que `site-creer` précède `forge-amorcer`, que le premier
passage **s'arrête** sur une forge vide, ni que rien n'est « prêt » avant `valider`. Cette
connaissance vivait en prose dans les documents ; la console offrait des boutons sans séquence.
**Dix-sept assistants, 126 étapes, et la totalité des 132 cibles.** Chaque cible documentée est
soit portée par un assistant, soit **exemptée avec son motif** — et `P83` refuse qu'une cible
échappe aux deux. Sans cette garde, la console cacherait un pouvoir que le moteur possède.
**Le registre ne recopie pas le Makefile.** `docs/runbooks-construction.yml` déclare seulement
ce que le Makefile ne peut pas porter : l'**ordre**, la **nature** du geste, la **portée** et le
**pourquoi**. Le libellé de chaque étape est *lu dans le Makefile au moment de servir*. Une
cible renommée se voit donc immédiatement, elle ne s'invente pas — c'est la règle « une liste
qui suit une autre prend du retard », et la garde est écrite **en même temps** que la liste.
**Trois natures, trois comportements** :
| Nature | Ce que la console fait |
|---|---|
| `mesure` | n'écrit rien ; **toujours offerte**, même après un échec — mesurer pour comprendre est exactement ce qu'on fait ensuite |
| `écriture` | exige que l'étape précédente **non facultative** ait réussi ; sinon on bâtit sur un terrain non vérifié |
| `destructif` | exige d'**écrire `DETRUIRE`**, en plus du `CONFIRMER=true` que la cible réclame déjà |
**Le navigateur ne nomme pas une commande, il nomme une place.** `/api/runbook-etape` ne lance
jamais « la cible que la page demande » : il lance ce que le registre déclare **à cet index-là**,
avec les seules variables déclarées. Une page compromise — ou simplement périmée — ne peut donc
pas réclamer `raser` depuis un assistant de mesure. L'index compte : « Le premier jour d'un
site » lance `site-deployer-tout` **deux fois**, et les deux places n'ont pas le même sens.
**La portée décide, et elle se dérive.** Un assistant de site exige `materialiser`, un assistant
de locataire `configurer`, un assistant de poste **les deux**. Un assistant hors de portée reste
**visible et lisible** : savoir que le geste existe, et chez qui il se fait, fait partie du
métier. Ce qui est refusé, c'est de le lancer — et le refus dit sa raison.
---
## ③ Pourquoi c'est transférable
| Set-OPS | Équivalents ailleurs |
@ -168,5 +208,8 @@ saisie** — pas « le GUI de Set-OPS ».
## Pour aller plus loin *(dépôt)*
- Lancer : `make inventaire-ui` ; le code : `scripts/inventory_gui.py`.
- Ce que le GUI sait écrire (et la preuve) : `scripts/couverture_gui.py` (P19).
- Les assistants : `docs/runbooks-construction.yml`, lus par `scripts/runbooks.py` (P83).
Vérifier le registre sans lancer la console : `python3 scripts/runbooks.py verifier`,
et le lire en texte : `python3 scripts/runbooks.py lister`.
- Le flux plan → apply : unité **[Infra as Code & idempotence](Infra-as-Code-et-idempotence)**.
- La flotte : unité **[Multi-instance & fédération](Multi-instance-et-fédération)**.