Agno a publié v3.0.3 le 30 août à 20:45:21 UTC, en introduisant une suite d’outils de gestion des connaissances. Il a publié v3.0.4 à 22:40:41 UTC — une heure et cinquante-cinq minutes plus tard — et a utilisé cette version de correctif pour réécrire l’interface publique de la suite d’outils.
Ce qui a changé dans un correctif
Trois choses qui n’ont pas leur place dans une version de correctif. Le chemin du module a changé, sans aucun shim de compatibilité derrière lui. Les quatre drapeaux du constructeur ont été renommés. Et la gestion par le constructeur des arguments de mot-clé inconnus fait que les anciens noms ne sont pas rejetés — ils sont ignorés silencieusement.
Pourquoi le silence est pire que le bruit
Ce dernier détail est celui qui compte. Si un renommage de drapeau déclenche une erreur, tout déploiement concerné échoue bruyamment au démarrage et quelqu’un corrige le problème en quelques minutes. Si l’ancien nom est discrètement ignoré, le constructeur retombe sur sa propre valeur par défaut — et un opérateur qui avait écrit un drapeau précisément pour désactiver une capacité voit cette capacité activée après la mise à niveau, sans erreur, sans avertissement et sans ligne de journal. La mise à niveau semble réussir. La configuration qu’elle transportait n’y survit pas.
Le point de correction du bug qui relève de la sécurité
La même version corrige un bug de valeur par défaut qui supprimait la porte de confirmation sur le seul outil de l’ensemble capable de détruire le contenu stocké. Il s’agit d’une correction pertinente pour la sécurité. Dans les notes, elle est classée comme un simple point de bug, aux côtés d’éléments cosmétiques, sans rien indiquer qu’elle pourrait être la raison pour laquelle un opérateur voudrait mettre à niveau en urgence.
Ce que le cadrage courant comprend mal
Le versionnage sémantique est largement lu comme un contrat : un incrément de correctif signifie que l’on peut l’appliquer sans risque. Ici, le chiffre du correctif couvre un déplacement de module sans shim, quatre drapeaux renommés et un changement de valeur effective par défaut — la définition même d’une rupture de compatibilité. Et le projet connaissait le principe : une version précédente publiée le même jour plaidait pour le rejet des arguments de mot-clé ignorés silencieusement plutôt que de les avaler. Le principe a été énoncé puis n’a pas été appliqué à son propre renommage quelques heures plus tard.
Comment effectuer la mise à niveau
Ne considérez pas le passage de 3.0.3 à 3.0.4 comme une mise à jour de routine. Recherchez les anciens noms de drapeaux et l’ancien chemin du module avant de mettre à niveau, car ni l’installateur ni l’exécution ne vous diront qu’ils ne signifient plus rien.
