Math Challenge
Mais

O Math Challenge está aberto: o código, o plano e a investigação

O repositório, o plano inteiro e as 47 investigações são públicos — incluindo as que contradizem o produto, e a execução em que a nossa própria frota de auditores se enganou.

O que está aberto

Duas ligações. Ambas públicas hoje, ambas verificáveis no navegador sem ter conta.

As 47 investigações, incluindo as que contradizem o produto

Quarenta e sete investigações, cerca de 157.000 palavras, com fontes numeradas e limitações declaradas. São publicadas inteiras, e isso inclui as passagens em que a evidência vai contra aquilo que estamos a construir: o pedido original queria algo viciante, e a investigação passou semanas a contradizê-lo.

As afirmações que não conseguimos confirmar junto de uma fonte primária ficam marcadas com [unverified] no texto — 18 marcas espalhadas por 14 dos documentos. Continuam visíveis em vez de serem apagadas em silêncio, porque uma investigação que esconde os seus pontos fracos não é evidência, é publicidade.

A frota de auditores, e o que lhe é permitido dizer

Hoje existem 31 dos 39 auditores planeados. 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 numa tabela de criança. Os outros vinte e três são adversariais com LLM, instruídos para encontrar a violação e não para aprovar, e cada um tem de citar a decisão ou a investigação que faz cumprir. Um achado que cita um identificador inexistente é descartado mecanicamente.

Os achados são escritos em SARIF 2.1.0, a norma da OASIS, e enviados para o GitHub code scanning à mão: este projeto não usa integração contínua, e isso é uma decisão, não uma falha. Cada achado chega ancorado a um ficheiro e a uma linha que qualquer pessoa pode ler.

O que correu mal da primeira vez que a executámos

A primeira execução 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 ficheiro dizia versión onde o ficheiro diz versão. Citação real, evidência inventada, e saiu classificado como bloqueante. Metade dos achados bloqueantes dessa execução era ruído.

A correção não foi um prompt melhor. Foi uma camada determinística que extrai cada excerto que o auditor diz ter visto e verifica se ele aparece mesmo naquilo que lhe foi mostrado. Se nenhum aparecer, o achado deixa de bloquear.

O que essa camada ainda não consegue fazer, dito antes que alguém o suponha: um auditor que parafraseia em vez de citar não deixa excertos para verificar. Deteta-se a fabricação literal, não a interpretação errada — que foi a outra falha dessa mesma execução, e essa não tem correção determinística.

A licença: AGPL-3.0

O repositório inclui um ficheiro LICENSE com a Licença Pública Geral Affero da GNU, versão 3. É copyleft forte de rede: quem o executar como serviço tem de publicar as suas alterações. É esse o objectivo. O banco de itens é o produto — é aí que reside a maior parte do trabalho real — e a promessa deste projecto é que chegue a quem não pode pagar. Uma licença permissiva permitiria que alguém pegasse no motor e no banco, os fechasse e cobrasse por eles.

O que isto custa, dito com frontalidade: a AGPL afasta empresas que poderiam contribuir, e muitas proíbem-na por política interna. Essa troca foi feita de propósito.

Porque é que isto vale a pena

Publicar a investigação é a estratégia, não um gesto de transparência. A parte que custa mesmo é publicar os erros: o quadro ainda leva a nota de que a fase F0 foi marcada como fechada com um dos seus próprios critérios — o 0-RTT — por verificar, e só apareceu porque alguém voltou a perguntar. Um quadro que mostra o próprio erro vale mais do que qualquer declaração de valores.

Verifique você mesmo

Clone o repositório e execute 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