First ĞDev bug: Pending membership expiration remove membership even if it is no longer pending

Hier soir en farfouillant le storage de la ĞDev, il m’a semblé identifier un 1er bug, j’ai ouvert une issue indiquant le scénario à dérouler pour potentiellement le reproduire:

Ce matin je viens de rédiger un test automatisé qui reproduis bien le comportement non souhaité que j’avais identifié la veille:

Conséquences du bug

  • Toute identité post genesis est révoquée 12 jours après sa confirmation
  • Toute identité forgeron post genesis perd son status de forgeron 12 jours après l’avoir demandé

Correctif

Très simple, il faut juste vérifier si le pending membership existe encore avant de trigger le handler (qui est écouté par la pallet duniter-wot qui déclenche alors la révocation de l’identité où la perte du statut forgeron selon le type de membership):

À court-terme il est possible de modifier manuellement le storage pour fixer les cas concernés, mais ça ne sera pas tenable dans la durée, il est donc nécessaire de releaser un runtime-101.

Ce sera sans doute l’occasion de faire voter les membres forgerons pour que vous puissiez voir concrètement comment se passe un changement de protocole via la gouvernance on-chain :slight_smile:

Pour ce 1er runtime upgrade il me semble important qu’on se fasse une visio entre membres forgerons pour que je vous montre comment procéder, j’aimerais notamment que soit présent @cgeek @vit, @poka et @kapis , avez-vous des dispo week-end prochain ?

(@kapis as a smith member you have to participate to the votes on the protocol changes, so you are also invited to this remote meeting, we will try to translate as well as possible for you to understand).

Sondage framadate à remplir: Sondage - smiths runtime-101 - Framadate

@1000i100 @HugoTrentesaux et @tuxmain je vous ai déjà montré comment voter lors des RML, c’était pour la trésorerie mais le processus est le même pour un runtime upgrade, vous êtes pour autant bienvenue à cette visio :slight_smile:

6 « J'aime »

Oui dispo. En plus ça me laissera le temps de scruter le correctif et les tests. Au passage je suis totalement en phase avec cette démarche corrective via les tests, c’est assurément une très bonne méthode.

6 « J'aime »

La 1ère fois que j’ai vu cette méthode (reproduire le bug via un test avant de le corriger) c’était par toi dans Duniter v1 justement, mais j’avoue qu’à l’époque je n’étais pas entièrement convaincu :sweat_smile:
Entre-temps certaines expériences pro ainsi que des discussions avec d’autres dev (dont @1000i100) m’ont progressivement convaincu que c’est une méthode pertinente dans certains cas, et notamment pour le protocole d’une blockchain.
En plus c’est ce qu’on nous demande dans mon boulot pro actuel, donc je m’y suis habitué :slight_smile:

3 « J'aime »

J’ai regardé avec attention les commits : OK, c’est limpide.

Cela m’a inspiré pour l’élaboration (en cours) d’une stratégie de test, je bosse le sujet.

2 « J'aime »

D’après le sondage c’est vendredi soir que le plus de monde est disponible, la visio aura donc lieu vendredi à 20h, plus d’informations sur le sujet dédié au runtime 101: ĞDev: runtime-101

3 « J'aime »