idempotence de la flotte : zero changed, et le zero est verifie
924 (rejeu depuis zero) -> 17 (2e passage) -> 0 (3e). Zero tache changed, zero echec sur les quatorze hotes. Le depot n'avait jamais fait ce test a l'echelle de la flotte. Verification du zero, parce qu'un zero peut signifier que les roles ne font plus rien : PLUS de taches se sont executees au passage a vide qu'au rejeu (2266 contre 2152). Elles ont toutes tourne et toutes trouve le systeme conforme. Un zero obtenu avec MOINS de taches aurait dit l'inverse. Ce que le test a rapporte : trois defauts, dont deux n'etaient pas des defauts d'idempotence mais des PANNES SILENCIEUSES — node_exporter mourait a chaque renouvellement de certificat sur les 14 hotes, et chaque deploiement invalidait les jetons OAuth2 de la forge. Le chiffre devient la ligne de base : un deploiement futur qui rapporte changed sur une flotte non modifiee signale desormais quelque chose. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ffb515cf3c
commit
c7fe250520
2 changed files with 68 additions and 0 deletions
27
CHANGELOG.md
27
CHANGELOG.md
|
|
@ -1,5 +1,32 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-08-09 — Idempotence de la flotte : zéro, et c'est un zéro qui veut dire quelque chose
|
||||
|
||||
```
|
||||
plays taches ok changed
|
||||
rejeu depuis zero 61 2152 924
|
||||
2e passage 30 2249 17
|
||||
3e passage 30 2266 0
|
||||
```
|
||||
|
||||
**Zéro tâche `changed`, zéro échec, sur les quatorze hôtes.** Le dépôt n'avait jamais fait
|
||||
ce test à l'échelle de la flotte.
|
||||
|
||||
**Vérification du zéro**, parce qu'un zéro peut aussi signifier que les rôles ne font plus
|
||||
rien : **plus de tâches se sont exécutées au passage à vide qu'au rejeu** — 2266 contre
|
||||
2152. Elles ont toutes tourné et toutes trouvé le système conforme. Un zéro obtenu avec
|
||||
*moins* de tâches aurait dit l'inverse.
|
||||
|
||||
**Ce que ce test aura coûté et rapporté.** Trois défauts trouvés, dont deux n'étaient pas
|
||||
des défauts d'idempotence mais des **pannes silencieuses** : node_exporter mourait à chaque
|
||||
renouvellement de certificat sur les quatorze hôtes, et chaque déploiement invalidait les
|
||||
jetons OAuth2 de la forge. Aucune des deux ne se signalait autrement — c'est le compte de
|
||||
`changed` qui les a fait apparaître.
|
||||
|
||||
Ce chiffre devient la **ligne de base**. Un déploiement futur qui rapporte `changed` sur
|
||||
une flotte non modifiée signale désormais quelque chose. Tant que le fond était à 17, ce
|
||||
signal était noyé.
|
||||
|
||||
## 2026-08-09 — Les deux dernières tâches non idempotentes, et ce qu'elles cachaient
|
||||
|
||||
**Prometheus — une liste non ordonnée.** `intersect` rend un *ensemble*, dont l'ordre
|
||||
|
|
|
|||
|
|
@ -89,3 +89,44 @@ voie. La reconstruction a inversé l'ordre de démarrage et rendu visible un dé
|
|||
laissé un schéma à moitié migré (`no such column: with_credentials`). Base mise de côté,
|
||||
recréée par Grafana — 95 s pour lier son port, ce qui explique la course.
|
||||
- **Rien d'autre.** Ni certificat, ni compte, ni zone DNS, ni base de données.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Idempotence de la flotte — référence du 2026-08-09
|
||||
|
||||
Mesure faite après la seconde reconstruction, en rejouant `make deployer-tout` sur une
|
||||
flotte intacte. Le dépôt n'avait jamais fait ce test à l'échelle de la flotte.
|
||||
|
||||
```
|
||||
plays taches ok changed sautees
|
||||
rejeu depuis zero 61 2152 924 443
|
||||
2e passage 30 2249 17 ...
|
||||
3e passage (apres) 30 2266 0 227
|
||||
```
|
||||
|
||||
**Zéro tâche `changed`, zéro échec.**
|
||||
|
||||
Et ce zéro n'est pas du silence : **plus de tâches se sont exécutées au passage à vide
|
||||
qu'au rejeu** (2266 contre 2152). Elles ont toutes tourné, et toutes trouvé le système
|
||||
conforme. Un zéro obtenu avec moins de tâches aurait signifié l'inverse — des rôles qui ne
|
||||
font plus leur travail.
|
||||
|
||||
### Ce que les 17 du deuxième passage cachaient
|
||||
|
||||
| Tâche | Ce que c'était vraiment |
|
||||
|---|---|
|
||||
| 13× `Activer et demarrer node_exporter` | **le service était mort** — tué par `SIGHUP` à chaque renouvellement de certificat |
|
||||
| 2× Prometheus | liste de cibles non ordonnée (`intersect` rend un ensemble) |
|
||||
| 2× Forgejo | **le dépôt faisait tourner le secret JWT du service** à chaque déploiement |
|
||||
|
||||
Deux des trois n'étaient pas des défauts d'idempotence : c'étaient des **pannes**, qu'un
|
||||
compte de `changed` a rendues visibles. La collecte de métriques s'arrêtait toutes les
|
||||
24 heures sur les quatorze hôtes, et les jetons OAuth2 de la forge étaient invalidés à
|
||||
chaque passage. Ni l'une ni l'autre ne se signalait autrement.
|
||||
|
||||
### À quoi sert ce chiffre
|
||||
|
||||
Il devient la **ligne de base**. Un déploiement futur qui rapporte `changed` sur une flotte
|
||||
non modifiée signale quelque chose : soit une dérive du système, soit un rôle qui a cessé
|
||||
d'être idempotent. Tant que le fond était à 17, ce signal était noyé.
|
||||
|
|
|
|||
Loading…
Reference in a new issue