
REODE
Code migration
Antes de corrigir, encontrar a causa comum.
Um agente de migração de código Java/Spring.
REODE vocabulary
- assess
- plan
- explore
- transform
- validate
- fix
- measure
- recipes
- docker isolation
- equivalence
- escalation
- checkpoint
- 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.
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.
Fonte · POMDados: fonte · POMEstado original · compilação
Verificação originalRecebe a fonte Java/Spring e o POM a migrar. O código e as telas de clientes não são mostrados.
Estado original · compilação
Verificação originalDados: compilação originalLinha de base · desconhecidos não medidosEstado da execuçãoAntes 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.
Estado original · compilação
Verificação originalExecução · julgamento: conversão por regrasPlano → conversão baseada em regrasConversãoO 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.
Plano → conversão baseada em regras
ConversãoExecução · julgamento: build · testbuild · test · iteração +1VerificaçãoBuild e test verificam o código convertido e a contagem de iterações sobe em um. Os resultados voltam ao estado da execução.
build · test · iteração +1
VerificaçãoDados: resultado · iteraçõesContinuar · medir · 3 no máx.Próxima etapaO sucesso do build, a taxa de aprovação dos testes e o número de iterações decidem a próxima etapa.
Continuar · medir · 3 no máx.
Próxima etapaExecução · julgamento: aprovação · limite · travamentoParcela de regras · testes · coberturaMediçãoQuando 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.
Linha de base · desconhecidos não medidos
Estado da execuçãoDados: comparação com a linha de baseParcela de regras · testes · coberturaMediçãoA medição lê a linha de base mantida no estado da execução. Não é uma nova execução de linha de base.
5 portões de aceitação
MediçãoDados: atribuição de notaScorecard · notaBuild 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.
build · test · iteração +1
VerificaçãoDados: resultado · iteraçõesContinuar · medir · 3 no máx.Próxima etapaO sucesso do build, a taxa de aprovação dos testes e o número de iterações decidem a próxima etapa.
Continuar · medir · 3 no máx.
Próxima etapaExecução · julgamento: falha · nova tentativaEvidências da causa · 3 fontes · POMExplorar antes de corrigirSe 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.
Evidências da causa · 3 fontes · POM
Explorar antes de corrigirObservação · relatório: salvar antes de corrigirCheckpoint antes da correçãoRegistros de recuperaçãoUm 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.
Evidências da causa · 3 fontes · POM
Explorar antes de corrigirDados: evidências · erros agrupadosCorrigir padrões conhecidosCorreção determinísticaReú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.
Verificação de rebuild
Correção determinísticaExecução · julgamento: aprovado · LLM puladobuild · test · iteração +1VerificaçãoSe 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.
Verificação de rebuild
Correção determinísticaFalha · limite: rebuild com falhaCorrigir com evidências · instruçõesReparo por modeloSe 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.
Correção anterior, mesmo erro
Registros de recuperaçãoDados: correção anteriorCorrigir com evidências · instruçõesReparo por modeloCorreções anteriores registradas sob a mesma assinatura de erro são buscadas e anexadas. Um registro acrescentado à entrada, não treinamento de modelo.
Corrigir com evidências · instruções
Reparo por modeloExecução · julgamento: verificar de novobuild · test · iteração +1VerificaçãoO 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.
Continuar · medir · 3 no máx.
Próxima etapaExecução · julgamento: aprovação · limite · travamentoParcela de regras · testes · coberturaMediçãoQuando 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.
Linha de base · desconhecidos não medidos
Estado da execuçãoDados: comparação com a linha de baseParcela de regras · testes · coberturaMediçãoA medição lê a linha de base mantida no estado da execução. Não é uma nova execução de linha de base.
5 portões de aceitação
MediçãoDados: atribuição de notaScorecard · notaBuild 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.
5 portões de aceitação
MediçãoFalha · limite: apagados · excluídos · com falhaFalha · relatório de travamentoAprovaçõ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.
Continuar · medir · 3 no máx.
Próxima etapaObservação · relatório: saída por limite · travamentoFalha · relatório de travamentoUma 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.