O Math Challenge está aberto: o código, o plano e a pesquisa
O repositório, o plano inteiro e as 47 pesquisas são públicos — inclusive as que contradizem o produto, e a rodada em que a nossa própria frota de auditores errou.
O que está aberto
Dois links. Os dois públicos hoje, os dois verificáveis no navegador sem ter conta.
-
O repositório
O produto, a frota de auditores, as migrações e a documentação interna moram em um único repositório público. Não existe uma segunda cópia arrumada para quem vem de fora.
-
O quadro
O plano inteiro está num quadro de projeto público: 18 itens com critérios de aceitação que dá para conferir, das três fases do site às treze fases do produto. Dois desses dezoito não são trabalho: são as tensões que ainda não resolvemos, anotadas à vista junto com todo o resto.
As 47 pesquisas, inclusive as que contradizem o produto
Quarenta e sete pesquisas, cerca de 157.000 palavras, com fontes numeradas e limitações declaradas. São publicadas inteiras, e isso inclui os trechos em que a evidência vai contra o que estamos construindo: o pedido original queria algo viciante, e a pesquisa passou semanas contradizendo isso.
As afirmações que não conseguimos confirmar em fonte primária ficam marcadas com [unverified] no texto — 18 marcas espalhadas por 14 dos documentos. Elas continuam visíveis em vez de serem apagadas em silêncio, porque uma pesquisa que esconde seus pontos fracos não é evidência, é propaganda.
A frota de auditores, e o que ela tem permissão de dizer
Hoje existem 31 dos 39 auditores planejados. Oito são determinísticos e bloqueiam cada commit; entre eles: os sete locales completos, os segredos, o peso do bundle, a paleta da Ignia, nenhum campo de texto livre em tabela de criança. Os outros vinte e três são adversariais com LLM, instruídos para achar a violação e não para aprovar, e cada um precisa citar a decisão ou a pesquisa que faz cumprir. Um achado que cita um identificador inexistente é descartado mecanicamente.
Os achados são escritos em SARIF 2.1.0, o padrão da OASIS, e enviados ao GitHub code scanning na mão: este projeto não usa CI, e isso é uma decisão, não uma falta. Cada achado chega ancorado a um arquivo e a uma linha que qualquer um pode ler.
O que deu errado na primeira vez que rodamos
A primeira rodada completa da frota adversarial deu dois veredictos bloqueantes. Um deles era fabricado: o auditor citou uma decisão que existe mesmo e depois afirmou que um arquivo dizia versión onde o arquivo diz versão. Citação real, evidência inventada, e saiu classificado como bloqueante. Metade dos achados bloqueantes daquela rodada era ruído.
O conserto não foi um prompt melhor. Foi uma camada determinística que extrai cada trecho que o auditor diz ter visto e confere se ele aparece de verdade no que foi mostrado a ele. Se nenhum aparece, o achado deixa de bloquear.
O que essa camada ainda não consegue fazer, dito antes que alguém suponha: um auditor que parafraseia em vez de citar não deixa trecho nenhum para verificar. Detectamos a fabricação literal, não a interpretação errada — que foi a outra falha daquela mesma rodada, e essa não tem conserto determinístico.
A licença: AGPL-3.0
O repositório traz um arquivo LICENSE com a Licença Pública Geral Affero do GNU, versão 3. É copyleft forte de rede: quem rodar isto como serviço precisa publicar suas mudanças. Esse é o ponto. O banco de itens é o produto — é onde mora o grosso do trabalho real — e a promessa deste projeto é que chegue a quem não pode pagar. Uma licença permissiva deixaria alguém pegar o motor e o banco, fechá-los e cobrar por eles.
O que isso custa, dito na lata: a AGPL afasta empresas que poderiam contribuir, e muitas a proíbem por política interna. Essa troca foi feita de propósito.
Por que isso vale a pena
Publicar a pesquisa é a estratégia, não um gesto de transparência. A parte que custa de verdade é publicar os erros: o quadro ainda carrega a nota de que a fase F0 foi marcada como fechada com um dos seus próprios critérios — o 0-RTT — sem verificação, e isso só apareceu porque alguém perguntou de novo. Um quadro que mostra o próprio erro vale mais do que qualquer declaração de valores.
Confira você mesmo
Clone o repositório e rode a frota. Cada número desta página sai desse comando ou do quadro público. Nenhum foi escrito de memória.
git clone https://github.com/kilowatto/math-challenge
node audits/run.mjs