Tradução automática. O texto em inglês é a versão de referência. English

Evidências

Qualquer um pode afirmar que um bug foi corrigido. Esta página mostra a correção, o teste que a protege e a prova de que o teste falha quando o bug volta.

Gerado em 2026-10-03 a partir de tools/prove_regressions.py · 4 de 4 testes de regressão comprovados como não vazios.

Como cada prova é produzida

  1. Rode o teste de regressão contra o código corrigido: ele precisa passar.
  2. Edite o código-fonte para reintroduzir o bug original.
  3. Rode o mesmo teste de novo: ele precisa falhar, com uma falha de asserção real. Um erro de coleta não conta: significa que o teste nunca rodou.
  4. Restaure o arquivo, verifique se o SHA-256 corresponde ao original e execute novamente: ele precisa passar de novo.

O assistente dizia aos visitantes que o webhook transporta a conversa deles. Ele não transporta nada dela.

commit e027e6b · protegido por apps/gateway/tests/test_webhook_content_claim.py

Os payloads de webhook carregam deliberadamente apenas a FORMA de um turno, ou seja, nome do evento, timestamp, contagem de passos e créditos, e nunca o seu conteúdo. O assistente, quando perguntado se os webhooks incluem a conversa, respondeu 'Sim, cada payload de webhook inclui o histórico completo da conversa daquele turno.' Isso é exatamente o oposto da garantia contra a qual a allow-list é testada. Medido em 2 invenções em 6 execuções antes da correção.

Código corrigido, execuções de teste PASS 21 passed in 1.15s
Bug reintroduzido, mesmo teste DETECTADO 8 failed, 13 passed in 1.20s
Arquivo restaurado, teste executado PASS sha256 a8d4cb0b10787eff…

O teste não é vazio: ele falha quando o bug volta.

Dissemos aos proprietários para clicar em um card do painel que não existe.

commit b4a203a · protegido por apps/gateway/tests/test_card_names.py

A base de conhecimento, a documentação e um bloco inicial diziam aos proprietários para procurar um cartão chamado 'Send turns to a webhook'. O cartão real do painel se chama 'Send events to your own system'. O nome foi inventado quando a seção de conhecimento foi escrita e se propagou para três lugares sem verificação. Medido: 2 de 2 respostas de configuração citavam um controle que nunca existiu.

Código corrigido, execuções de teste PASS 5 passed in 1.12s
Bug reintroduzido, mesmo teste DETECTADO 3 failed, 2 passed in 1.23s
Arquivo restaurado, teste executado PASS sha256 f6348e1a5bbae209…

O teste não é vazio: ele falha quando o bug volta.

A saudação no modo escuro era renderizada com 1.73:1, praticamente invisível, e a verificação não teria como detectar isso.

commit ca47f41 · protegido por apps/studio/test/themeContrast.test.mjs

Encontrado a partir de uma captura de tela feita em um iPhone real, não por nenhum teste. A saudação de boas-vindas estava fixada no código como #3a3a3c, o que dá 1.73:1 contra o painel do modo escuro, muito abaixo do mínimo de 4.5:1 e quase ilegível. Todo visitante de primeira vez no modo escuro a via. A correção faz a cor passar pela variável de tema --pw-mist para que ela acompanhe o painel; a verificação agora calcula a razão de contraste real para cada par temático em vez de confiar que uma cor foi definida.

Código corrigido, execuções de teste PASS pass 5, fail 0
Bug reintroduzido, mesmo teste DETECTADO pass 3, fail 2
Arquivo restaurado, teste executado PASS sha256 54f8802b444b6194…

O teste não é vazio: ele falha quando o bug volta.

Um turno com falha deixava o visitante esperando para sempre em um stream morto.

commit 4bcc691 · protegido por apps/studio/test/streamError.test.mjs

Quando a chamada ao modelo falhou, o servidor enviou corretamente um frame de erro, mas o widget escreveu a mensagem em um elemento que o ramo do rastro de governança já tinha ocultado, e nunca recolheu o rastro. O visitante via 'Lendo sua mensagem' pulsando indefinidamente em um turno que já tinha falhado: nenhum erro, nenhuma recuperação, nenhuma forma de saber. O texto do erro era atribuído corretamente e não era exibido em lugar nenhum. Encontrado durante uma queda real, quando a conta da API ficou sem crédito.

Código corrigido, execuções de teste PASS pass 4, fail 0
Bug reintroduzido, mesmo teste DETECTADO pass 2, fail 2
Arquivo restaurado, teste executado PASS sha256 54f8802b444b6194…

O teste não é vazio: ele falha quando o bug volta.

Registro operacional

O que existe por trás da plataforma e o que não foi testado. Apenas o que um script ou um log consegue mostrar.

De docs/ops-record.json, escrito pelo teste de restauração (docs/runbooks/db-backup.md).

O que isto não prova

Estas são verificações que eu mesmo executo no meu próprio código. Elas mostram que testes específicos pegam bugs específicos: não que o sistema esteja livre de outros, não que as auditorias tenham sido abrangentes, nem que alguém independente o tenha revisado. O harness está no repositório; a afirmação pode ser verificada executando-o.

PANTHEON · Prove, ataque o sistema em produção · Registro de auditoria · Walkthroughs · Trabalho · CV