Salut @Chiara07, merci pour cet état des lieux — il est juste, et il recoupe ce qu’on observe de notre côté depuis des mois. Je réponds point par point, et j’ajoute ce qu’on a appris en réparant l’indexeur ĞTest, parce que ça éclaire une partie du problème.
1. Pourquoi mon indexeur annonce 0.5.11 (et pourquoi ce n’est pas juste « une mise à jour à faire »)
J’ai regardé du côté de nodes/duniter-squid. Deux constats :
Il n’existe pas de tag 0.5.11. Les tags passent de 0.5.10 (3 mars) à 0.5.12 (5 mars). Le « 0.5.11 » que voit Ğecko vient donc d’un package.json bumpé sur un commit intermédiaire jamais taggé — ce qui est cohérent avec la manière dont les images sont produites (voir plus bas).
Aucun tag de la série 0.5.x n’a de pipeline réussi. 0.5.0, 0.5.1, 0.5.5, 0.5.6, 0.5.7, 0.5.8, 0.5.10, 0.5.12, 0.5.13 : tous en échec. Le dernier tag avec un pipeline vert est 0.4.11, en octobre 2025. L’image 0.5.13 dont parlait @cgeek a été poussée à la main, et l’annonce ne concernait que la Ğ1 et les smiths-v2.
Donc : il n’existe probablement pas d’image duniter/squid-app-gtest en 0.5.13. Il n’y a rien à docker pull. Ce n’est pas de la négligence de ma part, c’est un trou dans la chaîne de publication.
2. La bonne façon de produire cette image (et ce n’est pas chez moi)
En lisant docs/dev/g1-production-launch.md dans duniter-v2s, l’étape 11 décrit exactement le mécanisme :
cargo xtask release squid trigger-builds g1-1100 --rpc-url wss://…
Cette commande déclenche le pipeline CI de duniter-squid, qui télécharge les données genesis depuis la release réseau GitLab, récupère les métadonnées Substrate depuis un RPC vivant, puis build et pousse les trois images multi-arch (squid-app-*, squid-graphile-*, squid-postgres-*). La version des images = celle du package.json au moment du déclenchement.
Ce qui veut dire :
- l’équivalent pour nous serait
cargo xtask release squid trigger-builds gtest-1100 --rpc-url wss://gtest.coinduf.eu (le nœud archive de @HugoTrentesaux, le seul que je sache complet), depuis le tag 0.5.13 ;
- ça demande un
GITLAB_TOKEN avec accès à nodes/duniter-squid et le DOCKERHUB_TOKEN de l’orga — que je n’ai pas. @cgeek, @poka, @HugoTrentesaux : est-ce que l’un de vous peut déclencher ce build ? C’est probablement une demi-heure de travail, et ça règle le blocage de Ğecko pour tout le monde, pas seulement chez moi.
- accessoirement, ça repasserait par une régénération de la genèse — et c’est là que ça devient intéressant.
3. Notre expérience : ce qu’il a fallu pour faire tourner un squid ĞTest
Résumé de trois mois, pour éviter à d’autres de refaire le chemin.
La genèse ĞTest embarquée dans l’image est incomplète. Le processor plantait en boucle au bloc 48783 (EntityNotFoundError: Smith index 12483), et une fois ce cas débloqué il a buté successivement sur des Account manquants (~bloc 178357) puis des Identity manquantes (~bloc 182381). Les trois types d’entités de genèse sont concernés. C’est l’issue #66, toujours ouverte.
Notre correctif : un patch « résilient » sur src/data_handler.ts, qui remplace tous les findOneByOrFail sur ces entités par des variantes non-faillibles — création d’entités fantômes pour les Smiths, skip + warn ailleurs, dans l’esprit de la convention déjà présente pour les validators manquants. Ça indexe, mais c’est un mode dégradé assumé : les données comportent des trous. Ce n’est pas un substitut à une genèse correcte.
Or l’annonce de la 0.5.13 disait précisément « corrige les genesis de l’image ». Si le pipeline est relancé proprement pour la ĞTest, mon patch devient probablement inutile. C’est l’argument principal pour passer par la CI plutôt que par un rebuild artisanal chez moi.
L’autre gros écueil : le nœud archive. Squid exige un nœud d’archive complet. Le mien ne l’était pas (rien avant le bloc 3,13M), ce qui a produit des Trie lookup error: Database missing expected key en pleine réindexation. On a rattrapé les 3,6M de blocs en s’appuyant sur wss://gtest.coinduf.eu, puis rebasculé en local pour le live. Un resync archive depuis la genèse, c’est de l’ordre de 280 Go et plusieurs jours. @Chiara07, c’est le point à anticiper sur ton mini PC : un nœud ĞTest « archive » complet n’est pas une petite machine.
Enfin, un détail utile à tous : le healthcheck GraphQL des images échouait silencieusement (curl absent de node:20-alpine, et localhost qui résout en IPv6 alors que le service n’écoute qu’en IPv4). Corrigé en amont via la MR !37, mergée. C’est peut-être une partie de ton « répond une fois sur trois ».
4. Le pg_dump
Oui, volontiers, sur le principe. Deux réserves à poser clairement :
- ma base est celle du processor patché : elle contient des entités fantômes et des événements ignorés. Bâtir un indexeur public dessus, c’est propager le mode dégradé ;
- si le point 2 aboutit (image 0.5.13 avec genèse régénérée), il vaudra mieux réindexer proprement que partir de ma base. Le dump reste utile comme solution d’attente ou pour du dev.
Dis-moi ce qui t’arrange, je peux préparer un pg_dump -Fc compressé.
5. Relancer, ou repartir sur une neuve ?
Mon avis, avec la réserve que je ne suis pas décisionnaire :
Techniquement, refaire une ĞTest est un chemin documenté, pas de la magie noire. Le processus de lancement réseau existe dans duniter-v2s (scripts/launch-network.sh, puis cargo xtask release network g1-data / build-runtime / build-specs / create, puis la release client et le build squid). Il y a même de quoi lancer une chaîne gtest locale à deux autorités (gtest_local2, scripts/run-gtest-local2.sh) pour répéter la manœuvre sans risque. À adapter pour la ĞTest, évidemment — et il faudrait confirmer que launch-network.sh accepte bien --runtime gtest.
Le vrai obstacle n’est pas technique, il est social : il faut 3 à 5 forgerons engagés à tenir leur nœud, et surtout une toile de confiance de départ avec assez de membres actifs pour que tester certification et adhésion ait un sens. C’est exactement ce qui manque à la ĞTest actuelle : 1 360 membres pour 17 186 identités, et plus une seule certification depuis avril. Relancer les indexeurs sur une chaîne où personne ne certifie ne réglera pas ton problème de test de la toile.
Donc je pencherais pour : débloquer l’indexeur maintenant (point 2, c’est rapide et ça sert immédiatement), et ouvrir en parallèle la discussion sur une ĞTest neuve avec une genèse pensée pour le test — quelques dizaines d’identités bien connectées, des paramètres accélérés — plutôt que de s’acharner sur une chaîne gelée dont la genèse est de toute façon cassée.
6. Et Dunipod ?
À prendre en compte avant d’investir beaucoup d’énergie dans un squid ĞTest : @elois développe Dunipod, dont le microservice onchain-indexer remplace Squid, ne nécessite pas de nœud d’archive (un miroir minimal suffit) et permet de plafonner l’espace disque avec élagage automatique. C’est exactement la contrainte qui rend un indexeur ĞTest pénible à héberger aujourd’hui.
@elois : est-ce que Dunipod gère (ou pourrait gérer) la ĞTest, ou seulement la Ğ1 pour l’instant ? Si oui, @Chiara07 a peut-être intérêt à monter un pod plutôt qu’un squid, et la question du pg_dump disparaît d’elle-même.
Et pour Ğecko, la question devient : est-ce que durt2 pourrait accepter un pod Dunipod comme source alternative à un squid ?
En résumé : je veux bien mettre à jour mon image, mais l’image n’existe pas — il faut relancer le pipeline. Je peux fournir un dump en attendant. Et je pense qu’il faut poser sérieusement la question d’une ĞTest neuve, parce que le problème de fond n’est pas l’indexeur.