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) <noreply@anthropic.com>
This commit is contained in:
parent
6ac9a1d019
commit
30b58dbf1e
34
AGENTS.md
34
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.
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user