Leçons de soumission Stake Engine — le registre des pièges (et leur correctif)

But : chaque bug qui a cassé une soumission réelle est consigné ici avec sa cause, son correctif, et où il vit dans le code. Tous ces correctifs sont dans le moteur/pipeline partagétoute nouvelle machine en hérite automatiquement. Ce document est la mémoire durable de l'équipe : à lire avant de soumettre, à compléter à chaque nouveau piège.

La règle qui résume tout : node factory/qa/submission-check.mjs <gameId> doit être 6/6 vert avant de proposer un DOWNLOAD. Ce test reproduit les conditions réelles de Stake et attrape chacun des pièges ci-dessous. Aucune machine ne se soumet sans lui.


Contexte : pourquoi le mock ne suffit pas

Le moteur a d'abord été testé contre un mock RGS dont on avait inventé le format. Le vrai RGS Stake diffère sur plusieurs points, et l'arborescence servie par Stake n'est pas celle de l'export brut. Tous les bugs ci-dessous viennent de cet écart. Le mock renvoie désormais le même format que le vrai RGS (engine/src/devtools/mockrgs.js) pour que dev == production.


1. BOOT ERROR — l'identifiant de jeu de l'URL ≠ le nom de dossier

2. BOOT ERROR — math.meta.json dans un dossier math/

3. Devise figée sur $

4. Format d'authenticate réel (imbriqué sous config)

5. Mode Replay — le SPIN tentait de miser

6. Publication math lente / échouée (timeout du validateur)

7. payoutMultiplier = multiplicateur direct


Boot auto-diagnostique

Si un boot échoue malgré tout, le moteur affiche la cause exacte à l'écran (URL + code HTTP) sans ouvrir la console — engine/src/main.js (fetchJSON + le boot().catch). Le prochain screenshot suffit à diagnostiquer.

La porte de contrôle (à ne jamais sauter)

factory/qa/submission-check.mjs + factory/qa/stake-sim.mjs reproduisent Stake : export → retire math/ → sert derrière un RGS au vrai format → vérifie boot en JPY/ja + EUR/fr + USD/en, la devise, et le replay (SPIN relance). 6/6 obligatoire avant DOWNLOAD. Chaque nouveau piège rencontré doit devenir une nouvelle assertion ici.