Quand la règle de distance est-elle ré-évaluée?

Bon je pense avoir trouvé : dans Duniter 1.8, le module de WoT refuse d’ajouter la certification de Hugo vers gpsqueeek au motif que Hugo dépasserait son stock de 100 certifications concurrentes.

Le bug

Mais d’une part ce motif n’est pas fondé car le module de WoT n’a pas à prendre ce genre de décision qui revient normalement au protocole et donc au code TypeScript (on a là 2 sources de vérité, contrevenant au principe SSOT), mais en plus le code appelant côté TypeScript passe sous silence l’erreur rencontrée, tandis que pour le protocole il n’y a pas de problème de stock : selon ce dernier Hugo avait un stock de 66 certifications en cours, une 67ème ne pose aucun problème.

Pour le module WoT de Duniter 1.8, Hugo serait à 100 certifications en cours. En version 1.7, le module WoT ne maintient pas un tel index donc il n’y a pas de sujet et le décompte est laissé aux soins du code appelant TypeScript, qui gère le protocole. le décompte est de 66.

Bref il y a un bug quelque part soit au niveau de l’interfaçage entre le code TypeScript de Duniter 1.8 et son module WoT, soit directement dans le module WoT qui décompterait mal les certifications expirées et ne remettrait pas correctement la valeur du stock. Ce bug est en plus ignoré dû à l’autre bug passant sous silence l’erreur de stock.

Je pourrais passer du temps à chercher la source de l’erreur, mais comme indiqué plus haut le module de WoT n’a pas à prendre ce genre de décisions car il ne dispose pas de tous les éléments pour juger. Seul le code du protocole en dipose.

Le correctif

Déjà, il est possible de retirer le contrôle de stock Il faut corriger le module de WoT 1.8 et créer une version 1.8.3 de Duniter.

Mais ensuite il faudrait redresser les données, et là le plus simple c’est de demander une resynchronisation aux possesseurs de nœuds avec la nouvelle version 1.8.3.

Le réseau sera alors soumis à des forks :

  • tant que les nœuds 1.8.3 resynchronisés seront minoritaires, le réseau restera comme avant
  • dès que les nœuds 1.8.3 seront majoritaires, le réseau exclura les nœuds <= 1.8.2
8 Likes