From 30b58dbf1efea845861a35d7d09ca5662d57be7a Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Sun, 2 Aug 2026 10:49:39 +0200 Subject: [PATCH] docs: put the promotion chain the right way round The chain climbs experimental-silo, then landing-silo, then main: a change is attempted in testing before it becomes a nightly candidate for stable. The document had the two silos the other way round, which is how the Fronius work ended up one rung below stable while it had only ever been verified against the bench simulator. Corrected in the diagram, the promotion criteria, the fix table and its downward path, the packaging channel list and the agent rules. The channel each branch feeds is unchanged: experimental-silo is testing, landing-silo is nightly. Co-Authored-By: Claude Opus 5 (1M context) --- AGENTS.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index a43d3f9..ca0946b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,29 +24,29 @@ amont. ## Branches et canaux ``` -feature/* ──► landing-silo ──► experimental-silo ──► main - (nightly) (testing) (stable) +feature/* ──► experimental-silo ──► landing-silo ──► main + (testing) (nightly) (stable) ``` Vers la droite on promeut, vers la gauche on redescend un correctif. Une correction ne saute jamais un cran. Les trois branches existent sur le remote depuis le 2026-08-02. Les deux silos ont été créés -vides depuis `main` ; `landing-silo` a ensuite reçu `feature/fronius-sunspec` comme premier -contenu, `experimental-silo` est encore au niveau de `main`. Avant cette date le modèle -ci-dessus était une intention, pas un état du dépôt. +vides depuis `main` ; `experimental-silo` a ensuite reçu le travail Fronius comme premier +contenu, `landing-silo` est encore au niveau de `main`. Avant cette date le modèle ci-dessus +était une intention, pas un état du dépôt. -`experimental-silo` n'est pas une branche de travail : elle ne reçoit que ce qui a déjà survécu au -nightly. Le travail se fait dans `feature/*`. +Aucun silo n'est une branche de travail : `landing-silo` ne reçoit que ce qui a déjà survécu à +`experimental-silo`. Le travail se fait dans `feature/*`. ### Critères de promotion | Passage | Critère | |---|---| | commits dans `feature/*` | `verify` en local, l'agent boucle seul | -| `feature/*` → `landing-silo` | PR, `verify` vert sur le runner, AC de la spec couverts par des tests | -| `landing-silo` → `experimental-silo` | build complet propre, banc nocturne vert | -| `experimental-silo` → `main` | validation matérielle nommée : appareil, firmware, configuration | +| `feature/*` → `experimental-silo` | PR, `verify` vert sur le runner, AC de la spec couverts par des tests | +| `experimental-silo` → `landing-silo` | build complet propre, banc nocturne vert | +| `landing-silo` → `main` | validation matérielle nommée : appareil, firmware, configuration | Le dernier critère n'est pas automatisable et ne doit pas l'être. @@ -57,9 +57,9 @@ Le dernier critère n'est pas automatisable et ne doit pas l'être. | Le bug se reproduit… | Départ | Ensuite | |---|---|---| -| jusque dans `main` | `hotfix/*` depuis `main` | fusion dans `main`, puis redescente dans `experimental-silo`, puis dans `landing-silo` | -| dans `experimental-silo`, pas dans `main` | `fix/*` depuis `experimental-silo` | redescente dans `landing-silo` | -| seulement dans `landing-silo` | `fix/*` depuis `landing-silo` | rien, il remonte par la promotion normale | +| jusque dans `main` | `hotfix/*` depuis `main` | fusion dans `main`, puis redescente dans `landing-silo`, puis dans `experimental-silo` | +| dans `landing-silo`, pas dans `main` | `fix/*` depuis `landing-silo` | redescente dans `experimental-silo` | +| seulement dans `experimental-silo` | `fix/*` depuis `experimental-silo` | rien, il remonte par la promotion normale | Ne jamais corriger en aval un bug présent en amont : le correctif remontera un jour, mais la branche amont reste cassée entre-temps et la promotion suivante réintroduit l'ancien code par @@ -74,8 +74,8 @@ Trois préfixes, pas davantage : `feature/*`, `fix/*`, `hotfix/*`. ### Versionnement des paquets Tout paquet issu d'un dépôt produit ETM porte un suffixe `+etmN` sur la version amont qu'il modifie -ou remplace (ex. `1.15.2+etm1`), à tous les canaux de promotion (`landing-silo`/nightly, -`experimental-silo`/testing, `main`/stable). Ce suffixe garantit la préséance apt/dpkg sur le paquet +ou remplace (ex. `1.15.2+etm1`), à tous les canaux de promotion (`experimental-silo`/testing, +`landing-silo`/nightly, `main`/stable). Ce suffixe garantit la préséance apt/dpkg sur le paquet upstream identique. Ne jamais le remplacer par un tiret (`-etmN`) : `-` a un sens réservé en version Debian (champ @@ -83,8 +83,8 @@ Ne jamais le remplacer par un tiret (`-etmN`) : `-` a un sens réservé en versi ## Agents -Les agents travaillent dans `feature/*` et `fix/*`. Jamais de commit direct dans `landing-silo`, -`experimental-silo` ou `main` : ces branches ne reçoivent que des fusions. +Les agents travaillent dans `feature/*` et `fix/*`. Jamais de commit direct dans `experimental-silo`, +`landing-silo` ou `main` : ces branches ne reçoivent que des fusions. Une spec, une branche, un jeu de critères d'acceptation.