Este arquivo não é publicado no site da documentação. Ele saiu de
docs/docs/licenca.mdem 12/08/2026: a página existia em português e em uma tradução inglesa que precisava ser sincronizada à mão, e uma tradução de página de licença que atrasa é pior que página nenhuma — foi assim que/docs/en/licensepassou dias dizendo "the code is under the MIT License" depois da migração para AGPL. O que é normativo vive em três lugares medidos por gerador: oLICENSEdeclara, oREADME.mdpublica o nome vigente, e oCONTRIBUTING.mdtraz a tabela de superfícies. Aqui ficam as decisões e o porquê, que ninguém precisa ler traduzido para saber qual é a licença.
Este documento responde três perguntas que costumam ser respondidas errado, e por arquivos diferentes: o que vale hoje, o que mudou em 07/08/2026 e por quê, e o que a licença não resolve — que é onde a conta erra com mais frequência.
Este documento não troca a licença. Ele documenta. Enquanto o
LICENSEdisser o que diz, é isso que vale — aqui e em qualquer outro arquivo do repositório. Nenhum arquivo tem autoridade para declarar licença diferente da que está noLICENSE.
O código está sob a licença que o arquivo LICENSE da raiz declarar — hoje,
AGPL-3.0. A resposta gerada (lida do título do LICENSE e conferida contra o campo
license do package.json) é publicada no README.md, no bloco
GERADO:licenca. Este parágrafo não é fonte: se ele divergir do LICENSE, o LICENSE vence.
Trocar a licença não é editar um arquivo. O nome dela está repetido em cada lugar onde
o projeto responde "qual é a licença?" — para o desenvolvedor no GitHub, para o jogador no
rodapé, para o buscador no JSON-LD, para um LLM no llms.txt.
A tabela dessas superfícies é medida, não enumerada à mão, e vive no
CONTRIBUTING.md, seção "As superfícies da licença" — ela é gerada por
npm run docs e mora ao lado do termo que o contribuidor aceita, que é onde ela é lida na
hora que importa.
Por que essa tabela é gerada, e não uma lista. Duas listas escritas à mão já tentaram enumerar essas superfícies — a seção de licenças do
README.mde o degrau 3 dodocs/historico/plans/08-RELEASE-PROFISSIONAL.md. As duas esquecem o JSON-LD do jogo e o rodapé da documentação. Uma lista de onde a licença aparece envelhece exatamente como qualquer outro número escrito à mão: no primeiro commit que criar uma página nova. A lista de superfícies a conferir é decisão humana e mora no topo dotools/gen-docs.mjs; onde cada uma nomeia a licença é medido a cadanpm run docs.
O projeto nasceu MIT e é AGPL-3.0 desde 07/08/2026, aplicada no commit
3f7a9be — as oito superfícies
num commit só, como este documento exigia antes de a troca acontecer. A decisão reverte uma
recomendação anterior do próprio repositório (docs/historico/plans/06 §1.2 defendia manter permissivo por
causa de Steamworks e de programas de crédito de IA).
O motivo da virada está no docs/historico/plans/08 §3:
o projeto pretende vender skins e mapas, e venda de item muda o modelo de ameaça. A AGPL
não impede vender — você vende o direito de uso — mas ela é honesta sobre o que não
resolve: qualquer um pode publicar um fork com o gate de posse removido, legalmente. Essa
é a razão de a proteção real ser server-side, não a licença.
Esta era a tarefa que a doc anunciava como bloqueante, e ela estava mal formulada. A regra do consentimento vale para a direção permissiva → permissiva ou para relicenciar contribuição de terceiro sob termos que a licença original não autoriza. Não é o caso aqui:
- MIT é permissiva e compatível com a AGPL. Ela autoriza sublicenciar e incorporar o código em obra distribuída sob outros termos, desde que o aviso de copyright original continue no pacote.
- Por isso o que entrou antes de 07/08/2026 segue MIT dentro do conjunto, e o conjunto é distribuído sob AGPL-3.0. Quem contribuiu antes não perde nada e não precisou aprovar.
- A direção incompatível seria a inversa — pegar código AGPL de terceiro e redistribuir sob MIT. Essa, sim, exigiria consentimento de cada autor, e é a razão de a troca ser de mão única na prática.
O mesmo texto vale no CONTRIBUTING.md e no
README.md, e é lá que ele é normativo — aqui é explicação.
Isto é a leitura do projeto, não parecer jurídico. Compatibilidade MIT → AGPL é consenso confortável e velho no ecossistema, mas se a sua contribuição tem exigência específica de empregador ou de cliente, pergunte antes de abrir o PR em vez de assumir.
O levantamento continua útil por outro motivo — saber de quem é o código —, e ele é medido, não estimado:
git shortlog -sne --no-merges origin/main # quem assina o histórico publicado
gh pr list --state merged --limit 50 # o que entrou, e de quemEm 2026-08-05, o histórico publicado (origin/main) tem dois contribuintes de terceiro
com trabalho mesclado:
| Quem | O que entrou | Onde |
|---|---|---|
daltonfontes |
o mapa fy_pool_day ("Piscinão da Treta"), 1 commit |
está nesta branch |
William Oliveira (@woliveiras) |
o cliente Godot desktop, 13 commits, PR #14 mesclado em 18/07/2026 | main — não está nesta branch |
O
git shortlogda branch de trabalho NÃO enumera os contribuidores do projeto. O bloco de pessoas de Como colaborar mede o HEAD, e o HEAD é uma branch. Av2/alphasaiu demainantes do merge do PR #14, então os 13 commits do William não aparecem nela — e a doc anunciava três pessoas num repositório que tem quatro. Para qualquer decisão sobre licença, meça contraorigin/main, não contra a branch em que você está trabalhando. Ver Roadmap, seção sobre a divergência entremainev2/alpha.
O repositório é público e tem estrelas (gh repo view --json stargazerCount), o que quer
dizer que já existem cópias do código sob MIT, feitas antes de 07/08/2026. Isso é
irreversível: o histórico do git guarda a versão permissiva para sempre, e um fork feito
sob a licença antiga continua sob ela. A AGPL vale para o que sai daqui de hoje em
diante — ela não recolhe o que já saiu.
Tudo isto foi no mesmo commit, e é a lista que qualquer troca futura tem que repetir:
- o arquivo
LICENSE; - o badge do topo do
README.md; - a seção de licenças do
README.md(bloco gerado — basta rodarnpm run docs); - o termo que o contribuidor aceita, no
CONTRIBUTING.md; - o rodapé do site (
src/layouts/Layout.astro); - o JSON-LD do jogo (
src/pages/index.astro) e a página/sobre; - o
public/llms.txte o rodapé da documentação.
A tabela gerada no CONTRIBUTING.md é a versão sempre atual desta lista — os números de
linha saem dela, e não deste parágrafo. Meia troca de licença é pior que nenhuma, porque
cada arquivo passa a responder uma coisa diferente para quem pergunta.
O que a troca de licença NÃO faz sozinha: publicar. O commit trocou os arquivos. A doc publicada continuou dizendo
MITpor três dias, porquedocs/é um site buildado — e ninguém tinha rodado o build depois da migração. Não adianta trocar as oito superfícies num commit se a nona, a página que o público lê, é uma cópia estática de antes:cd docs && npm run build:site # reescreve public/docs/ — é ISSO que vai para o arPior ainda: o
tools/gen-docs.mjsnão reconhecia oLICENSEnovo (o texto oficial da AGPL não contém a siglaAGPL-3.0em lugar nenhum do cabeçalho) e, em vez de ficar vermelho, devolveunulle escreveu prosa coerente em cima de nada. As duas coisas estão consertadas: o nome sai do título da licença, é conferido contra o campolicensedopackage.json, e não identificar reprova odocs:checkem vez de publicar umnull.
Esta é a decisão do docs/historico/plans/08 §3
que torna o resto possível, e ela é três licenças diferentes para três coisas diferentes:
| Camada | O que é | Regime | Onde mora |
|---|---|---|---|
| Código | motor, mapas base, UI, o arnês inteiro | aberto (AGPL-3.0) | repositório público |
| Arte paga | skins, mapas e itens vendidos | licença própria, proprietária | fora do repositório público, sob autorização |
| Marca | "CORO SOLTO: Treta Suprema", o canarinho, a logomarca | não licenciada | de ninguém além do dono |
É isso que permite vender skin sem trancar o código. O código continua aberto e auditável; o que se vende é arte, que nunca esteve sob a licença do código; e o nome não vai junto — um fork legal do motor não é o CORO SOLTO, porque a marca não foi licenciada.
Isto é irreversível depois que existir a primeira arte paga. Os GLBs de personagem já estão no repositório público (a contagem está no bloco gerado de Começando). Se um deles virar item pago, relicenciar é retroativo e o histórico do git guarda a versão livre para sempre.
A decisão de onde a arte paga mora tem que ser tomada ANTES de a primeira arte paga existir. Depois, o custo não é editar um
LICENSE: é aceitar que o item vendido já foi distribuído de graça.
E a verdade desconfortável, que fica escrita para não ser redescoberta a cada rodada: o
jogador sempre pode fazer a própria tela mostrar qualquer skin, e tentar impedir isso custa
semanas e não funciona. A fraude que importa é obter o arquivo sem pagar e aparecer com ele
para os outros — e essa é server-side, como o entitlement, que vive no Postgres sob
service_role. Gastar esforço no cliente é gastar no lugar errado.
- Three.js — MIT (© Three.js authors), vendorizado em
public/vendor/. - Áudio — o pacote não é versionado; as vozes e memes têm direitos incertos. Sons do CS 1.6 são propriedade da Valve e não são distribuídos aqui. Sem o pacote, o jogo usa sons sintetizados e roda normalmente.
- Paródia independente, sem afiliação com a Valve. Counter-Strike é marca da Valve Corporation.
Assets gerados por IA (mint.gg, Tripo3D, Meshy, OpenRouter) entram no repositório como
resultado, com o registro de procedência em mint-assets.json — ver
Stack e ferramentas.
O termo que vale está no CONTRIBUTING.md, e ele é a fonte — este
documento não o repete. O resumo operacional: você licencia sob a licença que o LICENSE
disser no momento do seu PR — hoje, AGPL-3.0 —, qualquer troca futura virá num commit
único e anunciado, e se isso for decisivo para você, pergunte antes de abrir o PR.