# Reverter a entropia de sistemas legados (Genesis Innovation) > Três casos reais com programas de código aberto. Em cada um: ler o sistema antigo (executável ou código-fonte), escrever o contrato do que ele promete, gerar o sistema novo a partir do contrato e conferir com um avaliador que reprova a diferença. Todo número da página sai dos JSON abaixo. - Delphi para a web (HeidiSQL 12.21, GPL-2.0): 34 de 34 telas lidas só do executável idênticas ao código-fonte. - Laravel para FastAPI (laravel-realworld-example-app, MIT): 19 de 19 endpoints e 81 de 81 passos iguais; controle negativo com 0 iguais. Limite medido: BookStack v26.09.1, 0 de 82 rotas da API cobertas. - O jogo (Chocolate Doom 3.1.1, GPL-2.0-or-later): 5 de 12 funções equivalentes ao fonte, 6 parciais, 1 não achada; formato WAD lido do binário (3163 lumps, 36 mapas). ## Índice - [Índice dos casos](https://rea.genesisinnovation.io/dados/indice.json): placar e endereço de cada evidência, em JSON - [Página](https://rea.genesisinnovation.io/): as abas #inicio, #delphi, #fastapi, #jogo e #experimente ## Delphi para a web - [caso](https://rea.genesisinnovation.io/dados/delphi/caso.json): o programa, o binário (sha256) e os números do caso - [contrato das telas](https://rea.genesisinnovation.io/dados/delphi/telas.json): cada tela lida do executável: componentes, posições e eventos ligados às operações - [botoes](https://rea.genesisinnovation.io/dados/delphi/botoes.json): o que cada botão faz, lido do binário pela engenharia reversa, e o veredito contra o fonte ## Laravel para FastAPI - [contrato e rotas](https://rea.genesisinnovation.io/dados/fastapi/realworld.json): o contrato extraído do app Laravel (rotas, tabelas, models) e o resumo do placar - [placar](https://rea.genesisinnovation.io/dados/fastapi/resultado.json): cada passo do cenário nos dois apps: status, motivo da diferença, veredito por endpoint - [controle negativo](https://rea.genesisinnovation.io/dados/fastapi/resultado-negativo.json): a mesma rodada com um dado alterado só no app novo: o avaliador tem de reprovar - [cobertura do gerador](https://rea.genesisinnovation.io/dados/fastapi/cobertura-gerador.json): por rota, se o gerador traduziu tudo o que ela alcança - [limite bookstack](https://rea.genesisinnovation.io/dados/fastapi/bookstack.json): o contrato de um app grande e por que o gerador ainda não cobre a API dele ## O jogo - [caso](https://rea.genesisinnovation.io/dados/jogo/caso.json): o programa, o binário (sha256) e os números do caso - [metricas](https://rea.genesisinnovation.io/dados/jogo/metricas.json): procedimentos, nomes e textos achados no binário contra o código-fonte - [funcoes](https://rea.genesisinnovation.io/dados/jogo/funcoes.json): doze funções: pseudo-código contra o fonte, com veredito e motivo - [wad](https://rea.genesisinnovation.io/dados/jogo/freedoom1.wad.json): o arquivo de dados do jogo lido pelo formato escrito a partir do binário ## Experimente: o leitor de Delphi no navegador - [https://rea.genesisinnovation.io/experimente/](https://rea.genesisinnovation.io/experimente/): lê um executável Delphi (ou o projeto) na própria aba, com o Python 3.14.2 em WebAssembly (Pyodide 314.0.7); o arquivo não sai do navegador - entrada: #arquivo (input de arquivo: .exe, .dll, .bpl, .dfm, .pas ou .zip) - estado: body[data-estado] - resultado: #resultado-json - contrato: #contrato-json - api: window.delphiContrato - webmcp: ferramentas extrair_contrato e comparar, registradas quando o navegador tem document.modelContext ## Vídeo - [https://rea.genesisinnovation.io/midia/rea.mp4](https://rea.genesisinnovation.io/midia/rea.mp4): os três casos em 50 segundos