Correctif critique (trouvé en test prod, migration Wheelrn)
- Correctif critique (trouvé en test prod, migration Wheelrn) : un déploiement blue/green pouvait faire apparaître une instance fantôme, avec
X/1 activesincohérent et des502intermittents pendant plusieurs dizaines de secondes. Deux bugs cumulés dansdeploy_app.go:
1. Le repérage des conteneurs "déjà en place" d'un déploiement faisait un simple strings.Contains sur le slug de l'app, sans le scoper au projet. Sur cet agent "Pier-self" partagé (qui héberge aussi bien les projets clients que les propres apps dogfoodées du Hub), un slug d'app client comme landing matchait aussi bien pier-hub-landing-1 (l'app Hub interne, sans rapport) - gonflant à tort le nombre de "vieilles" instances et faisant scaler à 2 répliques un déploiement qui aurait dû n'en créer qu'une. Le matching est désormais ancré sur <projet>-<app>-<index>, jamais une sous-chaîne libre.
2. Le gate de santé du swap (waitHealthy) comparait des ids docker ps tronqués à 12 caractères contre une map indexée par l'id complet que renvoie docker inspect - la recherche ratait donc systématiquement, traitant silencieusement toute nouvelle réplique comme "prête" sans jamais vérifier son vrai statut de HEALTHCHECK. Corrigé en réutilisant le même mécanisme de résolution par préfixe déjà en place ailleurs dans l'agent (health_snapshot.go, topology_snapshot.go), désormais partagé via docker.ResolveShortID.