---
type: reference
title: Référence des erreurs de publication
summary: Chaque code d'erreur que le chemin de publication au marketplace peut émettre, avec le déclencheur et où trouver la correction.
---

Chaque code d'erreur que le chemin de publication au marketplace peut renvoyer, avec le déclencheur et le lien vers la correction. Pour les corrections pas à pas, vois [Corriger un échec de publication](/docs/marketplace-game-development/publish-failed-fixes).

## Codes d'erreur

| Code | Déclencheur | Correction |
|---|---|---|
| `invalid-repo` | Le champ de dépôt que tu as saisi dans la modale de publication ne se parse pas comme `owner/name`. Publication manuelle seulement | Utilise `owner/name` ou l'URL complète `https://github.com/owner/name` |
| `repo-not-found` | Notre récupération de manifeste a renvoyé un 404. Ton dépôt est privé, manquant, n'a pas le topic `caputchin-game`, ou n'a pas de `caputchin.json` au chemin attendu | [Rends le dépôt public + ajoute le topic + pousse un manifeste](/docs/marketplace-game-development/publish-failed-fixes#repo-not-found) |
| `manifest-error` | Ton `caputchin.json` a échoué à la validation. La chaîne de détail nomme le champ précis. Vois [les sous-codes manifest-error](#manifest-error-sub-codes) | Corrige le champ que le détail nomme |
| `bundle-fetch-failed` | L'URL du bundle épinglée par `entry` et/ou `npm` n'a pas pu être récupérée, a renvoyé un non-2xx, ou dépasse 12 Mo | [Vérifie l'URL et la taille du bundle](/docs/marketplace-game-development/publish-failed-fixes#bundle-fetch-failed) |
| `run-not-conforming` | Le test de l'artefact `run` optionnel (exécuté une fois avec une graine déterministe) n'a pas renvoyé un verdict conforme. Ton jeu est toujours listé, s'affiche juste Non rejouable et ne peut pas gater | [Rends ta simulation déterministe](/docs/marketplace-game-development/publish-failed-fixes#run-not-conforming) |
| `rate-limited` | Trop de requêtes de publication depuis ton IP dans les 60 dernières secondes | Attends 60 secondes et réessaie |

## Sous-codes manifest-error [#manifest-error-sub-codes]

Quand tu reçois une `manifest-error`, la chaîne de détail commence par le champ en échec. Utilise cette table pour trouver la bonne correction.

| Champ dans le détail | Signification | Correction |
|---|---|---|
| `terms_accepted` | Le champ est manquant ou n'est pas le booléen JSON littéral `true` | [Règle-le à `true` après avoir lu les Conditions de soumission](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-terms-accepted) |
| `license` | Manquante, malformée, ou nomme un identifiant SPDX hors de la liste approuvée | [Choisis un identifiant de la liste approuvée](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-license) |
| `(root)` | Le fichier JSON ne se parse pas comme un objet (tu as un tableau, une chaîne ou un null de premier niveau) | Enveloppe-le dans `{ ... }` |
| `marketplace` | Le bloc `marketplace` est présent mais n'est pas un objet | Soit fais-en un objet, soit retire-le (les jeux auto-hébergés-seulement omettent le bloc) |
| `marketplace.name` / `description` / `preview` | Le champ n'est pas une chaîne | Convertis en chaîne ou retire |
| `marketplace.author` | Le bloc est présent mais n'est pas un objet | Utilise la forme `{ name?, url?, email? }` |
| `marketplace.author.name` / `url` | Le sous-champ n'est pas une chaîne | Convertis en chaîne ou retire |
| `marketplace.author.email` | N'est pas une chaîne OU échoue à la vérification de forme d'e-mail | [Corrige l'adresse ou retire le champ](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-author-email) |
| `entry` | Un jeu unique n'a ni `entry` ni `npm`, ou la valeur contient une traversée (`../`), des barres obliques absolues, des séparateurs Windows, des chaînes de requête, ou des espaces | Fournis un chemin relatif propre |
| `npm` | N'est pas une chaîne, ou échoue à la regex de nom npm | Utilise un nom de paquet npm valide |
| `entry/npm+games` | À la fois `entry`/`npm` et `games` déclarés au même niveau | Choisis-en un : les jeux uniques utilisent `entry`/`npm` ; les wrappers de collection utilisent `games` |
| `entry/npm` | Un jeu unique n'a ni l'un ni l'autre | Ajoutes-en un |
| `games` | N'est pas un tableau, contient des entrées non-chaînes, contient une traversée/des chemins absolus, ou contient `.` / `./` (qui s'auto-référencerait à la racine du dépôt) | Corrige le tableau |
| `games[i]` | Un chemin d'enfant précis est invalide | Corrige cette entrée |
| `run` / `run.entry` / `run.modules[i].*` | La déclaration de run découpée optionnelle est malformée | [Corrige selon le schéma](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-structure) |

## Licences approuvées [#approved-licenses]

Seuls les manifestes `caputchin.json` dont le champ `license` s'évalue en un identifiant SPDX sur cette liste passent la barrière de licence. Vois [Conditions de soumission au Marketplace section 4](/legal/submission-terms) pour la version contraignante.

### Licences de code permissives

| ID SPDX | Nom |
|---|---|
| `MIT` | MIT License |
| `MIT-0` | MIT No Attribution |
| `Apache-2.0` | Apache License 2.0 |
| `BSD-2-Clause` | BSD 2-Clause "Simplified" |
| `BSD-3-Clause` | BSD 3-Clause "New" / "Revised" |
| `0BSD` | BSD Zero Clause |
| `ISC` | ISC License |
| `Zlib` | zlib License |
| `Unlicense` | The Unlicense (public-domain dedication) |
| `BSL-1.0` | Boost Software License 1.0 |
| `NCSA` | University of Illinois / NCSA Open Source License |
| `PostgreSQL` | PostgreSQL License |
| `Python-2.0` | Python License 2.0 |
| `PHP-3.01` | PHP License 3.01 |
| `Ruby` | Ruby License |
| `TCL` | Tcl/Tk License |
| `MS-PL` | Microsoft Public License |
| `AFL-3.0` | Academic Free License 3.0 |
| `MulanPSL-2.0` | Mulan Permissive Software License v2 |
| `WTFPL` | Do What The Fuck You Want To Public License |

### Copyleft faible à portée de fichier

| ID SPDX | Nom |
|---|---|
| `MPL-2.0` | Mozilla Public License 2.0 |
| `MS-RL` | Microsoft Reciprocal License |

### Licences de ressources (art, audio, polices embarquées dans le jeu)

| ID SPDX | Nom |
|---|---|
| `CC0-1.0` | Creative Commons Zero v1.0 |
| `CC-BY-3.0` | Creative Commons Attribution 3.0 |
| `CC-BY-4.0` | Creative Commons Attribution 4.0 |
| `OFL-1.1` | SIL Open Font License 1.1 |

### Règles d'expression SPDX

- `MIT` : identifiant nu ; doit apparaître ci-dessus.
- `MIT OR Apache-2.0` : n'importe quelle branche d'un `OR` doit apparaître ci-dessus.
- `MIT AND CC-BY-4.0` : chaque branche d'un `AND` doit apparaître ci-dessus.
- `Apache-2.0 WITH LLVM-exception` : les clauses `WITH` ne sont pas acceptées.
- `LGPL-2.1+` : le suffixe `+` (ou-ultérieure) n'est pas accepté.

### Pourquoi certaines licences sont exclues

| Catégorie | Exemples | Pourquoi |
|---|---|---|
| Copyleft fort | `GPL-*`, `AGPL-*` | Viral ; le déclencheur réseau §13 d'`AGPL` est aigu puisque nous sommes l'hôte réseau. (`GPL-2.0-only` n'est accepté que pour les jeux maison publiés par Caputchin, pas pour les soumissions tierces.) |
| Copyleft de bibliothèque avec ambiguïté de bundling | `LGPL-*` | « Transmettre la bibliothèque » se lit de façon ambiguë pour les bundles JavaScript et WebAssembly |
| Share-alike sur les ressources | `CC-BY-SA-*`, `CC-BY-NC-*`, `CC-BY-ND-*` | Le share-alike contamine l'intégration du site intégrateur ; `NC` exclut le déploiement commercial |
| Source-available (pas OSI) | `BUSL-1.1`, `SSPL-1.0`, `Elastic-2.0` | Restrictions de champ d'usage, restrictions de redistribution, ou les deux |

Note que `BSL-1.0` (Boost Software License) est permissive et acceptée ; `BUSL-1.1` (Business Source License) ne l'est pas. Le parseur compare contre la chaîne canonique SPDX verbatim, donc les deux ne se heurtent jamais.

## Voir aussi

- [Corriger un échec de publication](/docs/marketplace-game-development/publish-failed-fixes)
- [Le manifeste caputchin.json](/docs/marketplace-game-development/the-caputchin-json-manifest) : les champs que ces erreurs valident.
- [Conditions de soumission au Marketplace](/legal/submission-terms) (la section 10 couvre l'opt-out de notification)
