Caputchin
Desenvolvimento de jogo de marketplace

Referência de erros de publicação

Cada código de erro que o caminho de publicação do marketplace pode retornar, com o gatilho e o link para a correção. Para correções passo a passo, veja Corrigir uma falha de publicação.

Códigos de erro

CódigoGatilhoCorreção
invalid-repoO campo de repositório que você inseriu no modal de publicação não faz parse como owner/name. Só publicação manualUse owner/name ou a URL completa https://github.com/owner/name
repo-not-foundNossa busca de manifesto retornou um 404. Seu repositório é privado, está faltando, não tem o tópico caputchin-game, ou não tem caputchin.json no caminho esperadoTorne o repositório público + adicione o tópico + dê push de um manifesto
manifest-errorSeu caputchin.json falhou na validação. A string de detalhe nomeia o campo específico. Veja subcódigos de manifest-errorCorrija o campo que o detalhe nomeia
bundle-fetch-failedA URL do bundle fixada por entry e/ou npm não pôde ser buscada, retornou um não-2xx, ou excede 12MBVerifique a URL e o tamanho do bundle
run-not-conformingA checagem de fumaça do artefato run opcional (rodada uma vez com uma semente determinística) não retornou um veredito conforme. Seu jogo continua listado, só mostra Não reproduzível e não pode protegerTorne sua simulação determinística
rate-limitedRequisições de publicação demais do seu IP nos últimos 60 segundosEspere 60 segundos e tente de novo

Subcódigos de manifest-error

Quando você recebe um manifest-error, a string de detalhe começa com o campo que falhou. Use esta tabela para achar a correção certa.

Campo no detalheSignificadoCorreção
terms_acceptedO campo está faltando ou não é o booleano JSON literal trueDefina-o como true depois de ler os Termos de Submissão
licenseFaltando, malformada, ou nomeia um identificador SPDX fora da lista aprovadaEscolha um identificador da lista aprovada
(root)O arquivo JSON não faz parse como um objeto (você tem um array, string ou null de nível superior)Envolva-o em { ... }
marketplaceO bloco marketplace está presente mas não é um objetoOu torne-o um objeto ou remova-o (jogos só-auto-hospedados omitem o bloco)
marketplace.name / description / previewO campo não é uma stringConverta para string ou remova
marketplace.authorO bloco está presente mas não é um objetoUse o formato { name?, url?, email? }
marketplace.author.name / urlO subcampo não é uma stringConverta para string ou remova
marketplace.author.emailNão é uma string OU falha na checagem de formato de e-mailCorrija o endereço ou remova o campo
entryJogo único não tem entry nem npm, ou o valor contém travessia (../), barras absolutas, separadores Windows, query strings, ou espaço em brancoForneça um caminho relativo limpo
npmNão é uma string, ou falha na regex de nome npmUse um nome de pacote npm válido
entry/npm+gamesTanto entry/npm quanto games declarados no mesmo nívelEscolha um: jogos únicos usam entry/npm; wrappers de coleção usam games
entry/npmJogo único não tem nenhumAdicione um
gamesNão é um array, contém entradas não-string, contém caminhos de travessia/absolutos, ou contém . / ./ (que autorreferenciaria a raiz do repositório)Corrija o array
games[i]Um caminho de filho específico é inválidoCorrija essa entrada
run / run.entry / run.modules[i].*A declaração opcional de run dividido está malformadaCorrija conforme o esquema

Licenças aprovadas

Só manifestos caputchin.json cujo campo license avalia para um identificador SPDX nesta lista passam no portão de licenciamento. Veja a seção 4 dos Termos de Submissão do Marketplace para a versão vinculante.

Licenças de código permissivas

SPDX IDNome
MITMIT License
MIT-0MIT No Attribution
Apache-2.0Apache License 2.0
BSD-2-ClauseBSD 2-Clause "Simplified"
BSD-3-ClauseBSD 3-Clause "New" / "Revised"
0BSDBSD Zero Clause
ISCISC License
Zlibzlib License
UnlicenseThe Unlicense (public-domain dedication)
BSL-1.0Boost Software License 1.0
NCSAUniversity of Illinois / NCSA Open Source License
PostgreSQLPostgreSQL License
Python-2.0Python License 2.0
PHP-3.01PHP License 3.01
RubyRuby License
TCLTcl/Tk License
MS-PLMicrosoft Public License
AFL-3.0Academic Free License 3.0
MulanPSL-2.0Mulan Permissive Software License v2
WTFPLDo What The Fuck You Want To Public License

Copyleft fraco de escopo de arquivo

SPDX IDNome
MPL-2.0Mozilla Public License 2.0
MS-RLMicrosoft Reciprocal License

Licenças de ativos (arte, áudio, fontes empacotados no jogo)

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

Regras de expressão SPDX

  • MIT: identificador simples; precisa aparecer acima.
  • MIT OR Apache-2.0: qualquer ramo de um OR precisa aparecer acima.
  • MIT AND CC-BY-4.0: todo ramo de um AND precisa aparecer acima.
  • Apache-2.0 WITH LLVM-exception: cláusulas WITH não são aceitas.
  • LGPL-2.1+: o sufixo + (ou-posterior) não é aceito.

Por que algumas licenças são excluídas

CategoriaExemplosPor quê
Copyleft forteGPL-*, AGPL-*Viral; o gatilho de rede do §13 da AGPL é agudo já que somos o anfitrião da rede. (GPL-2.0-only é aceita só para jogos próprios publicados pela Caputchin, não para submissões de terceiros.)
Copyleft de biblioteca com ambiguidade de empacotamentoLGPL-*"Transmitir a biblioteca" lê de forma ambígua para bundles de JavaScript e WebAssembly
Share-alike em ativosCC-BY-SA-*, CC-BY-NC-*, CC-BY-ND-*Share-alike contamina a integração do site que embute; NC exclui implantação comercial
Source-available (não OSI)BUSL-1.1, SSPL-1.0, Elastic-2.0Restrições de campo de uso, restrições de redistribuição, ou ambas

Note que BSL-1.0 (Boost Software License) é permissiva e aceita; BUSL-1.1 (Business Source License) não é. O parser compara contra a string canônica SPDX de forma literal, então as duas nunca colidem.

Veja também

Nesta página