---
type: how-to
title: Corriger un échec de publication au marketplace
summary: "Un guide de correction pour les échecs de publication au marketplace les plus courants : chaque code d'erreur est listé avec ce qui le déclenche et les étapes exactes une-modification-et-réessaie pour le résoudre, sans avoir à nous demander de revérifier quoi que ce soit."
---

Quand la modale Publier ou mettre à jour renvoie une erreur, ou que tu reçois un e-mail de notre part au sujet d'un échec de publication, trouve ton code d'erreur ci-dessous et suis la correction. Une fois que tu pousses la correction vers ton dépôt, clique de nouveau Publier ou mettre à jour pour revérifier immédiatement, ou attends le prochain passage quotidien de l'indexeur.

Chaque échec listé ici est quelque chose que tu peux corriger dans ton dépôt. Si tu ne vois pas ton erreur ici, vérifie la [référence complète des erreurs de publication](/docs/marketplace-game-development/publish-failed-reference) pour les codes moins courants.

## terms_accepted non réglé [#manifest-error-terms-accepted]

Tu vois ceci quand ton `caputchin.json` n'a pas `"terms_accepted": true` au niveau supérieur.

1. Ouvre le `caputchin.json` de ton dépôt.
2. Lis les [Conditions de soumission au Marketplace](/legal/submission-terms).
3. Ajoute `"terms_accepted": true` au niveau supérieur du manifeste.
4. Commit et pousse.
5. Clique de nouveau Publier ou mettre à jour, ou attends le prochain passage d'indexation quotidien.

La valeur doit être le booléen JSON littéral `true`. Les chaînes (`"true"`), les nombres (`1`), ou l'omission du champ comptent tous comme non accepté.

## Licence pas sur la liste approuvée [#manifest-error-license]

Tu vois ceci quand `license` est manquante, malformée, ou nomme un identifiant hors de notre [liste approuvée](/docs/marketplace-game-development/publish-failed-reference#approved-licenses).

1. Choisis un identifiant SPDX de la liste approuvée qui couvre véritablement ton code et tes ressources embarquées.
2. Ouvre `caputchin.json` et règle le champ `license` au niveau supérieur, par exemple `"license": "MIT"`.
3. Si ton code est sous double licence, utilise une expression SPDX `OR` (par ex. `"MIT OR Apache-2.0"`). Au moins une branche doit être sur la liste approuvée.
4. Si ton code est MIT mais embarque des ressources Creative Commons, utilise `AND` (par ex. `"MIT AND CC-BY-4.0"`). Chaque branche doit être sur la liste approuvée.
5. Commit, pousse, réessaie.

Si ton projet dépend d'une licence qui n'est pas sur notre liste approuvée (le plus souvent la famille GPL, AGPL ou LGPL), la seule correction est de re-licencier ou de retirer les composants affectés. Nous ne pouvons pas accorder d'exceptions au cas par cas par auteur.

## Nous n'avons pas pu trouver ton dépôt [#repo-not-found]

Tu vois ceci quand notre récupération de manifeste renvoie un 404.

Causes courantes et corrections :

- Ton dépôt est privé. Rends-le public, ou retire le topic `caputchin-game` pour cesser d'apparaître dans l'index.
- Ton dépôt n'a pas le topic GitHub `caputchin-game`. Ajoute-le via la section About sur la page du dépôt.
- Ton dépôt n'a pas de `caputchin.json` à la racine (ou, pour les jeux enfants d'une collection, pas de `caputchin.json` au répertoire feuille).
- L'URL du dépôt que tu as saisie est fausse. Utilise `owner/name` ou l'URL complète `https://github.com/owner/name`.

Pousse un `caputchin.json` vers ton dépôt, puis réessaie.

## La structure du manifeste est malformée [#manifest-error-structure]

Tu vois une `manifest-error` dont le détail commence par un nom de champ comme `entry`, `npm`, `games`, `marketplace.support` ou `run.modules[0].name`.

Le détail te dit exactement quel champ est faux :

- `entry: entry must be a clean relative path` : ta valeur `entry` contient une traversée (`../`), des barres obliques absolues, des chaînes de requête, ou des espaces. Utilise un chemin propre relatif au dépôt comme `dist/game.js`.
- `npm: npm package name is malformed` : ton champ `npm` n'est pas une coordonnée npm valide. Utilise `name` ou `@scope/name`, alphanumériques + tirets + points + underscores seulement.
- `games[i] must be a relative path inside the repo` : un chemin d'enfant dans le tableau `games` de ta collection s'échappe du dépôt. Utilise des chemins comme `packages/leaf-memory`, pas `../external` ni `/abs/path`.
- `run.entry must be a clean relative path` : même règle d'hygiène que `entry`, appliquée à l'entrée de run découpée optionnelle.
- `run.modules[i].name` : le nom de module doit correspondre à `[a-zA-Z0-9_-]+\.(wasm|js)$` et ne peut pas être `entry.js` ni `artifact.js`.

Édite le champ nommé selon la règle, commit, pousse, réessaie.

## marketplace.author a un e-mail invalide [#manifest-error-author-email]

Tu vois ceci quand `marketplace.author.email` est présent mais ne correspond pas à une forme d'e-mail normale (un `@`, un domaine pointé, pas d'espace).

1. Ouvre `caputchin.json`.
2. Trouve `marketplace.author.email`.
3. Soit corrige la valeur en une vraie adresse e-mail (nous l'utilisons seulement pour les notifications d'échec de publication), soit retire entièrement le champ.
4. Commit, pousse, réessaie.

Tu peux aussi retirer tout le bloc `marketplace.author` si tu ne veux pas recevoir de notifications d'échec de publication.

## Ton artefact run est non déterministe [#run-not-conforming]

Tu vois ceci quand notre test de conformité exécute la fonction `run(seed, trace)` de ton jeu et qu'elle ne produit pas un verdict conforme.

Important : ce n'est pas un échec de publication fatal. Ton jeu est toujours listé dans le parcours du marketplace et peut être intégré. Il s'affiche juste **Non rejouable** et ne peut pas gater une clé de site jusqu'à ce que le problème de déterminisme soit corrigé.

Causes courantes :

- Ta simulation lit `Date.now()`, `performance.now()`, `Math.random()`, ou d'autres globaux non déterministes.
- Ta simulation lit un état externe (DOM, réseau, stockage) que nous ne fournissons pas au moment du rejeu.
- Ta simulation dépend d'une arithmétique à virgule flottante qui diffère entre runtimes.

Corrige la simulation pour qu'elle soit une fonction pure de la graine et de la trace, pousse, réessaie. Vois [le contrat de rejeu](/docs/marketplace-game-development/replay-contract#determinism-is-the-whole-requirement) pour la règle de déterminisme, et envisage le [kit moteur](/docs/marketplace-game-development/engine-kit) optionnel, qui fournit un RNG ensemençable déterministe et une horloge.

## La récupération du bundle a échoué [#bundle-fetch-failed]

Tu vois ceci quand l'URL du bundle épinglée par `entry` et/ou `npm` ne peut pas être récupérée, renvoie un non-2xx, ou dépasse 12 Mo.

- Si tu viens de pousser une nouvelle version : le CDN peut ne pas encore avoir propagé. Attends une minute et réessaie.
- Si ton bundle dépasse 12 Mo : élague les ressources, découpe en modules via la déclaration `run`, ou déplace les grosses ressources vers un autre chemin de livraison.
- Si ton paquet `npm` n'est pas encore publié : publie-le d'abord ; nous ne pouvons pas récupérer les versions non publiées.

## Trop de requêtes de publication [#rate-limited]

Tu vois ceci sur la modale de publication manuelle quand tu as soumis plus de dix requêtes dans les 60 dernières secondes.

Attends 60 secondes et réessaie. Il n'y a aucun moyen d'élever la limite ; elle protège le point de terminaison de l'abus.

## Arrêter les e-mails de notification

Si tu veux cesser de recevoir les e-mails d'échec de publication, vois [Conditions de soumission section 10](/legal/submission-terms). L'adresse destinataire est ton `marketplace.author.email` dans le manifeste ; le retirer ou le changer arrête les e-mails.

## Voir aussi

- [Référence complète des erreurs de publication](/docs/marketplace-game-development/publish-failed-reference)
- [Publier au marketplace](/docs/marketplace-game-development/publish-to-the-marketplace)
- [Conditions de soumission au Marketplace](/legal/submission-terms)
