---
type: reference
title: Publish-Fehler-Referenz
summary: Jeder Error-Code, den der Marketplace-Publish-Pfad emittieren kann, mit dem Auslöser und wo der Fix zu finden ist.
---

Jeder Error-Code, den der Marketplace-Publish-Pfad zurückgeben kann, mit dem Auslöser und dem Link zum Fix. Für Schritt-für-Schritt-Fixes sieh dir [Ein Publish-Versagen beheben](/docs/marketplace-game-development/publish-failed-fixes) an.

## Error-Codes

| Code | Auslöser | Fix |
|---|---|---|
| `invalid-repo` | Das Repository-Feld, das du im Publish-Modal eingegeben hast, parst nicht als `owner/name`. Nur manuelles Veröffentlichen | Nutz `owner/name` oder die volle `https://github.com/owner/name`-URL |
| `repo-not-found` | Unser Manifest-Abruf gab einen 404 zurück. Dein Repository ist privat, fehlt, hat nicht das `caputchin-game`-Topic oder keine `caputchin.json` am erwarteten Pfad | [Mach das Repository öffentlich + füg das Topic hinzu + pushe ein Manifest](/docs/marketplace-game-development/publish-failed-fixes#repo-not-found) |
| `manifest-error` | Deine `caputchin.json` schlug bei der Validierung fehl. Der Detail-String benennt das spezifische Feld. Sieh dir [manifest-error-Sub-Codes](#manifest-error-sub-codes) an | Beheb das Feld, das das Detail benennt |
| `bundle-fetch-failed` | Die durch `entry` und/oder `npm` gepinnte Bundle-URL konnte nicht abgerufen werden, gab einen Nicht-2xx zurück oder überschreitet 12MB | [Verifizier die Bundle-URL und -Größe](/docs/marketplace-game-development/publish-failed-fixes#bundle-fetch-failed) |
| `run-not-conforming` | Die Smoke-Prüfung des optionalen `run`-Artefakts (einmal mit einem deterministischen Seed gelaufen) gab kein konformes Urteil zurück. Dein Spiel ist trotzdem gelistet, zeigt nur Nicht abspielbar und kann nicht gaten | [Mach deine Simulation deterministisch](/docs/marketplace-game-development/publish-failed-fixes#run-not-conforming) |
| `rate-limited` | Zu viele Publish-Anfragen von deiner IP in den letzten 60 Sekunden | Warte 60 Sekunden und versuch erneut |

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

Wenn du einen `manifest-error` empfängst, beginnt der Detail-String mit dem fehlschlagenden Feld. Nutz diese Tabelle, um den richtigen Fix zu finden.

| Feld im Detail | Bedeutung | Fix |
|---|---|---|
| `terms_accepted` | Das Feld fehlt oder ist nicht das literale JSON-Boolean `true` | [Setz es auf `true` nach dem Lesen der Einreichungsbedingungen](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-terms-accepted) |
| `license` | Fehlt, fehlerhaft oder benennt einen SPDX-Identifier außerhalb der genehmigten Liste | [Wähl einen Identifier aus der genehmigten Liste](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-license) |
| `(root)` | Die JSON-Datei parst nicht als Objekt (du hast ein Top-Level-Array, einen String oder null) | Wickel es in `{ ... }` |
| `marketplace` | Der `marketplace`-Block ist vorhanden, aber kein Objekt | Mach es entweder zu einem Objekt oder entferne es (nur-selbst-gehostete Spiele lassen den Block weg) |
| `marketplace.name` / `description` / `preview` | Das Feld ist kein String | Stringify oder entferne |
| `marketplace.author` | Der Block ist vorhanden, aber kein Objekt | Nutz die `{ name?, url?, email? }`-Form |
| `marketplace.author.name` / `url` | Das Unterfeld ist kein String | Stringify oder entferne |
| `marketplace.author.email` | Kein String ODER besteht die E-Mail-Form-Prüfung nicht | [Beheb die Adresse oder entferne das Feld](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-author-email) |
| `entry` | Einzelnes Spiel hat kein `entry` und kein `npm`, oder der Wert enthält Traversierung (`../`), absolute Slashes, Windows-Separatoren, Query-Strings oder Whitespace | Stell einen sauberen relativen Pfad bereit |
| `npm` | Kein String, oder besteht die npm-Namen-Regex nicht | Nutz einen gültigen npm-Paket-Namen |
| `entry/npm+games` | Sowohl `entry`/`npm` als auch `games` auf derselben Ebene deklariert | Wähl eins: einzelne Spiele nutzen `entry`/`npm`; Sammlungs-Wrapper nutzen `games` |
| `entry/npm` | Einzelnes Spiel hat weder noch | Füg eins hinzu |
| `games` | Kein Array, enthält Nicht-String-Einträge, enthält Traversierungs-/absolute Pfade oder enthält `.` / `./` (was den Repo-Root selbst-referenzieren würde) | Beheb das Array |
| `games[i]` | Ein bestimmter Kind-Pfad ist ungültig | Beheb diesen Eintrag |
| `run` / `run.entry` / `run.modules[i].*` | Die optionale Split-Run-Deklaration ist fehlerhaft | [Beheb gemäß dem Schema](/docs/marketplace-game-development/publish-failed-fixes#manifest-error-structure) |

## Genehmigte Lizenzen [#approved-licenses]

Nur `caputchin.json`-Manifeste, deren `license`-Feld zu einem SPDX-Identifier auf dieser Liste auswertet, bestehen das Lizenz-Gate. Sieh dir [Marketplace-Einreichungsbedingungen Abschnitt 4](/legal/submission-terms) für die bindende Version an.

### Freizügige Code-Lizenzen

| SPDX ID | Name |
|---|---|
| `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-Widmung) |
| `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 |

### Datei-bezogenes schwaches Copyleft

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

### Asset-Lizenzen (Kunst, Audio, Schriften, im Spiel gebündelt)

| SPDX ID | Name |
|---|---|
| `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 |

### SPDX-Ausdrucks-Regeln

- `MIT`: nackter Identifier; muss oben erscheinen.
- `MIT OR Apache-2.0`: jeder Zweig eines `OR` muss oben erscheinen.
- `MIT AND CC-BY-4.0`: jeder Zweig eines `AND` muss oben erscheinen.
- `Apache-2.0 WITH LLVM-exception`: `WITH`-Klauseln werden nicht akzeptiert.
- `LGPL-2.1+`: das `+` (oder-später)-Suffix wird nicht akzeptiert.

### Warum manche Lizenzen ausgeschlossen sind

| Kategorie | Beispiele | Warum |
|---|---|---|
| Starkes Copyleft | `GPL-*`, `AGPL-*` | Viral; der `AGPL`-§13-Netzwerk-Auslöser ist akut, da wir der Netzwerk-Host sind. (`GPL-2.0-only` wird nur für hauseigene, von Caputchin veröffentlichte Spiele akzeptiert, nicht für Drittanbieter-Einreichungen.) |
| Bibliotheks-Copyleft mit Bündelungs-Mehrdeutigkeit | `LGPL-*` | "Die Bibliothek übermitteln" liest sich mehrdeutig für JavaScript- und WebAssembly-Bundles |
| Share-Alike auf Assets | `CC-BY-SA-*`, `CC-BY-NC-*`, `CC-BY-ND-*` | Share-Alike kontaminiert die Integration der einbettenden Seite; `NC` schließt kommerzielles Deployment aus |
| Source-available (nicht OSI) | `BUSL-1.1`, `SSPL-1.0`, `Elastic-2.0` | Field-of-Use-Beschränkungen, Redistributions-Beschränkungen oder beides |

Beachte, `BSL-1.0` (Boost Software License) ist freizügig und akzeptiert; `BUSL-1.1` (Business Source License) ist es nicht. Der Parser vergleicht gegen den SPDX-kanonischen String wörtlich, also kollidieren die zwei nie.

## Siehe auch

- [Ein Publish-Versagen beheben](/docs/marketplace-game-development/publish-failed-fixes)
- [Das caputchin.json-Manifest](/docs/marketplace-game-development/the-caputchin-json-manifest): die Felder, die diese Fehler validieren.
- [Marketplace-Einreichungsbedingungen](/legal/submission-terms) (Abschnitt 10 deckt das Benachrichtigungs-Opt-out)
