O personagem original do REODE, refinado: um rosto sorridente de axolote creme e rosa com headset azul-marinho e lentes ciano
Voltar à sala

REODE

Code migration

Antes de corrigir, encontrar a causa comum.

Um agente de migração de código Java/Spring.

2026.03 — 2026.04

Projeto de trabalho · sistema de migração e verificação

  • CLIImplementado · projeto de trabalho

REODE vocabulary

Lens
Migration Graph
Read First
Change and Check
Run Harness
Toolchain
Run Control
  1. assess
  2. plan
  3. explore
  1. transform
  2. validate
  3. fix
  4. measure
  1. recipes
  2. docker isolation
  3. equivalence
  1. escalation
  2. checkpoint
  3. learnings

Assess: assess_node · assessment_report · frameworks_detected · SOCRATIC RISK ANALYSIS · clarity_score · BASELINE BUILD · baseline_build_success · detect_spring_features · SpringAssessment · memory_context · get_local_jdk_versionPlan: plan_node · migration_plan · incremental_recipe_chain · get_recipe_chain · project_constraints · llm_structural · get_migration_strategy · is_fw_to_boot_migration · hitl_level · memory_contextExplore: _explore_before_fix · AFFECTED FILES · read_file · @Data · pom.xml · classify_build_error · ErrorCategory · get_category_prompt_hint · _batch_errors · _detect_fix_patterns · CANNOT FIND SYMBOL · compute_error_signatureTransform: llm_structural · transform_node · rewrite-maven-plugin · _ensure_openrewrite_plugin · rewrite:run · java_openrewrite_run · recipes_applied · _BATCH_SIZE · source_path_backup · structural_changes · resume_from_batchValidate: BASELINE BUILD · validate_node · java_build · java_test · java_lint · build_error_output · test_error_output · test_pass_rate · _route_after_validate · build_verification_tasks · verify-compat-check · SubAgentManager · _BackpressureExecutor · docker_maven_command · max_iterationsFix: memory_context · _explore_before_fix · @Data · pom.xml · get_category_prompt_hint · _detect_fix_patterns · build_error_output · test_error_output · fix_node · _fix_deterministic_pass · _apply_deterministic_fixes · LOMBOK 1.18.34 · annotationProcessorPaths · _fix_architect_editor_pass · FixPlan · _execute_llm_fix · _BackpressureExecutor · fix_attempts · java-migration-diagnostic · _determine_escalation · _build_full_project_context · fix-iter-{iteration} · AUTO-LEARNINGSMeasure: baseline_build_success · recipes_applied · test_pass_rate · measure_node · MigrationScorecard · G1 BUILD SUCCESS · G2 TEST EQUIVALENCE · G3 COVERAGE PRESERVATION · G4 TEST INTEGRITY · G5 NO TEST EXCLUSION · _count_deleted_test_files · _count_surefire_excludes · automation_ratio · S/A/B/C GRADERecipes: detect_spring_features · incremental_recipe_chain · get_recipe_chain · rewrite-maven-plugin · java_openrewrite_run · UpgradeToJava17 · UpgradeToJava21 · JavaxMigrationToJakarta · UpgradeSpringBoot_3_2 · UpgradeSpringSecurity_6_2 · JUnit4to5Migration · rewrite-migrate-java · rewrite-spring · SPRING_RECIPE_CHAINS · java_openrewrite_listDocker Isolation: JDK_DOCKER_IMAGES · maven:3.9-eclipse-temurin-22 · needs_docker_build · docker_maven_command · get_local_jdk_version · is_docker_available · docker_build_mode · local_jdk_version · _maven_cache_dir · JDK MISMATCHEquivalence: source_path_backup · verify-compat-check · java_app_start · e2e_smoke_test · java_app_stop · run_jar_comparison · detect_jar_type · deploy_dual_stack · discover_endpoints · api_equivalence_rate · api_breaking_changes · teardown_dual_stackEscalation: _route_after_validate · fix_attempts · _determine_escalation · claude-opus-4-6 · _build_full_project_context · _is_stuck · CONVERGENCE · CIRCUIT BREAKER · recovery_attempted · max_iterations · budget_usd · _check_budget_gateCheckpoint: _BATCH_SIZE · PipelineCheckpoint · reode/checkpoint · fix-iter-{iteration} · resume_from_batch · _resume_skip_nodes · MigrationProgressTracker · migration_progress.json · _save_node_progress · --resumeLearnings: FixPlan · FixEventLog · FixEvent · fix_events.jsonl · query_by_signature · format_learnings · compute_error_signature · AUTO-LEARNINGS · LEARNINGS.md · _append_learning · AVOID THIS APPROACH

Um loop de migração que mantém as evidências de reparo à parte da aceitação.

O estado de build original é registrado e a conversão baseada em regras é aplicada, depois as evidências de fonte e de POM são reunidas antes do reparo. Após a edição de um modelo, build, test e integridade dos testes são verificados de novo, e execuções que terminam em um limite ou travam são relatadas à parte do sucesso.

Combina conversão baseada em regras com reparo assistido por modelo e verifica o código alterado com build e test. Um projeto de trabalho.

Trabalho do REODE no repositório; contrato com a pinxlab: March 16, 2026 to May 26, 2026

Uma ferramenta CLI usada no trabalho.

Mapa do loop de reparo · a partir de registros de implementação privados
Loop de reparo de migração do REODEO estado de build original é mantido como linha de base, a conversão baseada em regras é aplicada, e build e test verificam o resultado. Em caso de falha, evidências de fonte, anotações e POM são reunidas antes de qualquer correção, e padrões conhecidos são corrigidos de forma determinística e reconstruídos. Se o rebuild passar, nenhum modelo é chamado; se falhar, um modelo repara com as evidências reunidas e as instruções de correção, e o resultado é verificado de novo. Execuções que terminam no limite de iterações ou travam seguem para a medição, mas não contam como sucesso, e a scorecard só dá nota quando os cinco critérios de aceitação passam.Fonte · POMEntrada de migração privadaScorecard · notaNão é uma implantaçãoFalha · relatório de travamentoNão conta como sucessoVerificação originalEstado original · compilaçãoEstado da execuçãoLinha de base · desconhecidos não medidosRegistros de recuperaçãoCheckpoint antes da correçãoCorreção anterior, mesmo erroConversãoPlano → conversão baseada em regrasExplorar antes de corrigirEvidências da causa · 3 fontes · POMCorreção determinísticaCorrigir padrões conhecidosVerificação de rebuildReparo por modeloCorrigir com evidências · instruçõesVerificaçãobuild · test · iteração +1Próxima etapaContinuar · medir · 3 no máx.MediçãoParcela de regras · testes · cobertura5 portões de aceitaçãoEntrada · linha de baseRegistros de recuperaçãoConversão · reparoVerificação · saída1fonte · POM2compilação original3 conversão por regras · Estado original · compilação → Plano → conversão baseada em regras34build · test5resultado · iterações6aprovação · limite · travamento7comparação com a linha de base8 atribuição de nota · 5 portões de aceitação → Scorecard · nota81resultado · iterações2 falha · nova tentativa · Continuar · medir · 3 no máx. → Evidências da causa · 3 fontes · POM23salvar antes de corrigir4evidências · erros agrupados5aprovado · LLM pulado6rebuild com falha7 correção anterior · Correção anterior, mesmo erro → Corrigir com evidências · instruções78verificar de novo1aprovação · limite · travamento2comparação com a linha de base3 atribuição de nota · 5 portões de aceitação → Scorecard · nota34apagados · excluídos · com falha5saída por limite · travamento

Conversão por regras

O estado original é mantido como linha de base; após a conversão por regras, build e test verificam, e a execução segue para a medição.

  1. Fonte · POMDados: fonte · POMEstado original · compilaçãoVerificação original

    Recebe a fonte Java/Spring e o POM a migrar. O código e as telas de clientes não são mostrados.

  2. Estado original · compilaçãoVerificação originalDados: compilação originalLinha de base · desconhecidos não medidosEstado da execução

    Antes da conversão, o runtime é escolhido e o original é compilado, de modo que um build já quebrado fica na linha de base. Os valores padrão de test e cobertura na linha de base não são medições.

  3. Estado original · compilaçãoVerificação originalExecução · julgamento: conversão por regrasPlano → conversão baseada em regrasConversão

    O grafo de execução segue verificação original → plano de conversão → conversão baseada em regras → verificação. As conversões que as regras conseguem cobrir são aplicadas primeiro.

  4. Plano → conversão baseada em regrasConversãoExecução · julgamento: build · testbuild · test · iteração +1Verificação

    Build e test verificam o código convertido e a contagem de iterações sobe em um. Os resultados voltam ao estado da execução.

  5. build · test · iteração +1VerificaçãoDados: resultado · iteraçõesContinuar · medir · 3 no máx.Próxima etapa

    O sucesso do build, a taxa de aprovação dos testes e o número de iterações decidem a próxima etapa.

  6. Continuar · medir · 3 no máx.Próxima etapaExecução · julgamento: aprovação · limite · travamentoParcela de regras · testes · coberturaMedição

    Quando build e test passam, o limite de iterações é atingido ou um travamento é detectado (após uma tentativa de recuperação, se ainda não feita), a execução vai para a medição. Ir para a medição não significa sucesso.

  7. Linha de base · desconhecidos não medidosEstado da execuçãoDados: comparação com a linha de baseParcela de regras · testes · coberturaMedição

    A medição lê a linha de base mantida no estado da execução. Não é uma nova execução de linha de base.

  8. 5 portões de aceitaçãoMediçãoDados: atribuição de notaScorecard · nota

    Build bem-sucedido, taxa de aprovação de testes de 100%, variação de cobertura de −5 ou melhor (só quando a linha de base é conhecida), zero testes apagados, zero exclusões do surefire. Uma nota só é dada quando os cinco passam.

Reparo baseado na causa

As evidências são reunidas antes de corrigir, e as correções determinísticas vêm primeiro. Se o rebuild passar, o modelo é pulado; se não, o modelo repara com evidências e instruções e o resultado é verificado de novo.

  1. build · test · iteração +1VerificaçãoDados: resultado · iteraçõesContinuar · medir · 3 no máx.Próxima etapa

    O sucesso do build, a taxa de aprovação dos testes e o número de iterações decidem a próxima etapa.

  2. Continuar · medir · 3 no máx.Próxima etapaExecução · julgamento: falha · nova tentativaEvidências da causa · 3 fontes · POMExplorar antes de corrigir

    Se o build falhou ou a taxa de aprovação dos testes está abaixo de 100%, e o limite de iterações (3 por padrão) não foi atingido, a execução vai para o reparo.

  3. Evidências da causa · 3 fontes · POMExplorar antes de corrigirObservação · relatório: salvar antes de corrigirCheckpoint antes da correçãoRegistros de recuperação

    Um checkpoint é salvo antes da correção. É best-effort: uma falha ao salvar não interrompe o reparo, e salvar não é evidência de sucesso.

  4. Evidências da causa · 3 fontes · POMExplorar antes de corrigirDados: evidências · erros agrupadosCorrigir padrões conhecidosCorreção determinística

    Reúne os arquivos Java com falha, as primeiras linhas de até três fontes, as configurações de anotações, POM e processador de anotações, e os imports até profundidade 2. Uma amostra limitada, não uma compreensão de toda a base de código.

  5. Verificação de rebuildCorreção determinísticaExecução · julgamento: aprovado · LLM puladobuild · test · iteração +1Verificação

    Se uma correção determinística de um padrão conhecido (por exemplo a configuração do Lombok) faz o rebuild passar, nenhum modelo é chamado. A execução ainda volta à verificação, então isso não é aceitação final.

  6. Verificação de rebuildCorreção determinísticaFalha · limite: rebuild com falhaCorrigir com evidências · instruçõesReparo por modelo

    Se o rebuild falhar, as evidências reunidas e as instruções de correção vão para o reparo por modelo. A leitura do código mostra que o texto de erro repassado é o erro de build original, não o novo erro do rebuild, então isso não deve ser lido como “só os erros restantes são repassados”. Não é um defeito reproduzido em execução.

  7. Correção anterior, mesmo erroRegistros de recuperaçãoDados: correção anteriorCorrigir com evidências · instruçõesReparo por modelo

    Correções anteriores registradas sob a mesma assinatura de erro são buscadas e anexadas. Um registro acrescentado à entrada, não treinamento de modelo.

  8. Corrigir com evidências · instruçõesReparo por modeloExecução · julgamento: verificar de novobuild · test · iteração +1Verificação

    O modelo corrige por um caminho estruturado architect/editor, ou por um prompt de uso de ferramentas quando esse caminho não está disponível ou está em recuperação, e build e test verificam de novo. A edição de um modelo não é, por si só, um build aprovado.

Aprovação versus travamento

Uma nota exige os cinco portões; testes apagados ou excluídos e saídas por limite ou travamento não contam como sucesso.

  1. Continuar · medir · 3 no máx.Próxima etapaExecução · julgamento: aprovação · limite · travamentoParcela de regras · testes · coberturaMedição

    Quando build e test passam, o limite de iterações é atingido ou um travamento é detectado (após uma tentativa de recuperação, se ainda não feita), a execução vai para a medição. Ir para a medição não significa sucesso.

  2. Linha de base · desconhecidos não medidosEstado da execuçãoDados: comparação com a linha de baseParcela de regras · testes · coberturaMedição

    A medição lê a linha de base mantida no estado da execução. Não é uma nova execução de linha de base.

  3. 5 portões de aceitaçãoMediçãoDados: atribuição de notaScorecard · nota

    Build bem-sucedido, taxa de aprovação de testes de 100%, variação de cobertura de −5 ou melhor (só quando a linha de base é conhecida), zero testes apagados, zero exclusões do surefire. Uma nota só é dada quando os cinco passam.

  4. 5 portões de aceitaçãoMediçãoFalha · limite: apagados · excluídos · com falhaFalha · relatório de travamento

    Aprovações obtidas apagando testes ou por exclusões do surefire, e builds ou testes com falha, continuam sendo falhas. As verificações de remoção e exclusão contam zero quando o Git ou o POM não podem ser lidos, então não provam que toda violação é detectada.

  5. Continuar · medir · 3 no máx.Próxima etapaObservação · relatório: saída por limite · travamentoFalha · relatório de travamento

    Uma execução que termina no limite ou trava ainda passa pela medição, mas não é relatada como sucesso. Isso marca como se relata; não é um atalho para pular a medição.

Todas as conexões com a mesma espessura. Escolha um fluxo para destacar só o caminho dele, com etapas numeradas.

  • Contínua · direção de entradas, resultados e registros
  • Tracejada · execução, julgamento, requisição
  • Pontos longos · observação e relatório, à parte do julgamento
  • Traços curtos · falha, parada, limite
  • Linha preta grossa · o fluxo selecionado; os números dão a ordem
  • Caixa · fronteira de código ou de estado, com o nome no cabeçalho
  • Chip interno · componente dessa fronteira
  • Caixa pontilhada · fora dessa fronteira
  • Contorno laranja · onde um modelo decide
  • Etapas do pipeline · reparo
  • Verificação · roteamento · aceitação
  • Estado · registros
  • Explorar antes de corrigir

Desenhado a partir de registros privados de implementação e desenvolvimento. Os nomes são nomes públicos genéricos; nenhum caminho de código ou informação de cliente é mostrado.

Entrada após um rebuild com falha
O reparo por modelo recebe as evidências reunidas e as instruções de correção, mas o texto de erro repassado é o erro de build original, não o novo erro do rebuild. Estabelecido pela leitura do código; não reproduzido em execução, e o código-fonte não foi alterado.
Limites dos portões
Se a linha de base de cobertura for desconhecida, esse portão é pulado. A verificação do surefire conta as exclusões do POM atual, não a diferença em relação à linha de base. As verificações de remoção e exclusão contam zero quando o Git ou o POM não podem ser lidos.
O caso e seus números
Os cerca de 40 erros de setter atribuídos a uma única causa, a configuração do Lombok e do POM, são um diagnóstico registrado na época. Não é um número de vazão, acurácia ou entrega final.