
REODE
Code migration
Antes de corregir, encontrar la causa común.
Un agente de migración 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
Un bucle de migración que mantiene la evidencia de reparación aparte de la aceptación.
Se registra el estado de build original y se aplica la conversión basada en reglas, y luego se reúne la evidencia de fuentes y POM antes de reparar. Tras la edición de un modelo, se vuelven a comprobar build, test y la integridad de los tests, y las ejecuciones que terminan en un límite o se estancan se informan aparte del éxito.
Combina la conversión basada en reglas con la reparación asistida por modelos y comprueba el código modificado con build y test. Un proyecto laboral.
Trabajo de REODE en el repositorio; colaboración con pinxlab: March 16, 2026 to May 26, 2026
Una herramienta CLI usada en el trabajo.
Conversión por reglas
El estado original se conserva como línea base; tras la conversión por reglas, build y test verifican, y la ejecución pasa a la medición.
Fuente · POMDatos: fuente · POMEstado original · compilación
Comprobación originalRecibe la fuente Java/Spring y el POM que se van a migrar. No se muestran el código ni las pantallas de clientes.
Estado original · compilación
Comprobación originalDatos: compilación originalLínea base · desconocidos sin medirEstado de ejecuciónAntes de la conversión se elige el runtime y se compila el original, de modo que un build que ya estaba roto se conserva en la línea base. Los valores por defecto de test y cobertura de la línea base no son mediciones.
Estado original · compilación
Comprobación originalEjecución · juicio: conversión por reglasPlan → conversión basada en reglasConversiónEl grafo de ejecución sigue comprobación original → plan de conversión → conversión basada en reglas → verificación. Primero se aplican las conversiones que las reglas pueden cubrir.
Plan → conversión basada en reglas
ConversiónEjecución · juicio: build · testbuild · test · iteración +1VerificaciónBuild y test verifican el código convertido y el contador de iteraciones sube en uno. Los resultados vuelven al estado de ejecución.
build · test · iteración +1
VerificaciónDatos: resultado · iteracionesContinuar · medir · 3 máx.Paso siguienteEl éxito del build, la tasa de aprobación de los tests y el número de iteraciones deciden el siguiente paso.
Continuar · medir · 3 máx.
Paso siguienteEjecución · juicio: aprobado · límite · estancamientoProporción de reglas · tests · coberturaMediciónCuando build y test pasan ambos, se alcanza el límite de iteraciones o se detecta un estancamiento (tras un intento de recuperación si aún no se hizo), la ejecución pasa a la medición. Pasar a la medición no significa éxito.
Línea base · desconocidos sin medir
Estado de ejecuciónDatos: comparación con la línea baseProporción de reglas · tests · coberturaMediciónLa medición lee la línea base guardada en el estado de ejecución. No es una nueva ejecución de línea base.
5 puertas de aceptación
MediciónDatos: calificaciónScorecard · calificaciónBuild exitoso, una tasa de aprobación de tests del 100%, un cambio de cobertura de −5 o mejor (solo cuando se conoce la línea base), cero tests eliminados, cero exclusiones de surefire. Solo se asigna una calificación cuando pasan los cinco.
Reparación basada en la causa
La evidencia se reúne antes de corregir y las correcciones deterministas van primero. Si la reconstrucción pasa, se omite el modelo; si no, el modelo repara con evidencia e instrucciones y el resultado se vuelve a verificar.
build · test · iteración +1
VerificaciónDatos: resultado · iteracionesContinuar · medir · 3 máx.Paso siguienteEl éxito del build, la tasa de aprobación de los tests y el número de iteraciones deciden el siguiente paso.
Continuar · medir · 3 máx.
Paso siguienteEjecución · juicio: fallo · reintentoEvidencia de la causa · 3 fuentes · POMExplorar antes de corregirSi el build falló o la tasa de aprobación de los tests es inferior al 100%, y no se alcanzó el límite de iteraciones (3 por defecto), la ejecución pasa a reparación.
Evidencia de la causa · 3 fuentes · POM
Explorar antes de corregirObservación · informe: guardar antes de corregirCheckpoint antes de corregirRegistros de recuperaciónSe guarda un checkpoint antes de la corrección. Es best-effort: un guardado fallido no detiene la reparación, y un guardado no es evidencia de éxito.
Evidencia de la causa · 3 fuentes · POM
Explorar antes de corregirDatos: evidencia · errores agrupadosCorregir patrones conocidosCorrección deterministaReúne los archivos Java con fallos, las primeras líneas de hasta tres fuentes, los ajustes de anotaciones, POM y procesador de anotaciones, y los imports hasta profundidad 2. Una muestra acotada, no una comprensión de toda la base de código.
Comprobación de reconstrucción
Corrección deterministaEjecución · juicio: aprobado · LLM omitidobuild · test · iteración +1VerificaciónSi una corrección determinista de un patrón conocido (por ejemplo la configuración de Lombok) hace pasar la reconstrucción, no se llama a ningún modelo. La ejecución vuelve igualmente a la verificación, así que no es la aceptación final.
Comprobación de reconstrucción
Corrección deterministaFallo · límite: reconstrucción fallidaCorregir con evidencia · instruccionesReparación con modeloSi la reconstrucción falla, la evidencia reunida y las instrucciones de corrección pasan a la reparación con modelo. Leer el código muestra que el texto de error que se pasa es el error de build original, no el nuevo de la reconstrucción, así que no debe leerse como “solo se pasan los errores restantes”. No es un defecto reproducido en una ejecución.
Corrección anterior, mismo error
Registros de recuperaciónDatos: corrección anteriorCorregir con evidencia · instruccionesReparación con modeloSe buscan y adjuntan las correcciones anteriores registradas con la misma firma de error. Un registro añadido a la entrada, no entrenamiento del modelo.
Corregir con evidencia · instrucciones
Reparación con modeloEjecución · juicio: volver a verificarbuild · test · iteración +1VerificaciónEl modelo corrige mediante una ruta estructurada architect/editor, o con un prompt de uso de herramientas cuando esa ruta no está disponible o está en recuperación, y build y test vuelven a verificar. La edición de un modelo no es en sí un build aprobado.
Aprobado frente a estancamiento
Una calificación requiere las cinco puertas; los tests eliminados o excluidos y las salidas por límite o estancamiento no cuentan como éxito.
Continuar · medir · 3 máx.
Paso siguienteEjecución · juicio: aprobado · límite · estancamientoProporción de reglas · tests · coberturaMediciónCuando build y test pasan ambos, se alcanza el límite de iteraciones o se detecta un estancamiento (tras un intento de recuperación si aún no se hizo), la ejecución pasa a la medición. Pasar a la medición no significa éxito.
Línea base · desconocidos sin medir
Estado de ejecuciónDatos: comparación con la línea baseProporción de reglas · tests · coberturaMediciónLa medición lee la línea base guardada en el estado de ejecución. No es una nueva ejecución de línea base.
5 puertas de aceptación
MediciónDatos: calificaciónScorecard · calificaciónBuild exitoso, una tasa de aprobación de tests del 100%, un cambio de cobertura de −5 o mejor (solo cuando se conoce la línea base), cero tests eliminados, cero exclusiones de surefire. Solo se asigna una calificación cuando pasan los cinco.
5 puertas de aceptación
MediciónFallo · límite: eliminados · excluidos · fallidosFallo · informe de estancamientoLos aprobados obtenidos eliminando tests o mediante exclusiones de surefire, y los builds o tests fallidos, siguen siendo fallos. Las comprobaciones de eliminación y exclusión cuentan cero cuando no se pueden leer Git o el POM, así que no prueban que se detecte cada violación.
Continuar · medir · 3 máx.
Paso siguienteObservación · informe: salida por límite · estancamientoFallo · informe de estancamientoUna ejecución que termina en el límite o se estanca pasa igualmente por la medición, pero no se informa como éxito. Esto marca cómo se informa; no es un atajo para saltarse la medición.
Todas las conexiones con el mismo grosor. Elija un flujo para resaltar solo su recorrido, con pasos numerados.
- Continua · dirección de entradas, resultados y registros
- Discontinua · ejecución, juicio, solicitud
- Puntos largos · observación e informe, aparte del juicio
- Guiones cortos · fallo, parada, límite
- Línea negra gruesa · el flujo seleccionado; los números dan el orden
- Recuadro · frontera de código o de estado, con su nombre en la cabecera
- Chip interior · componente de esa frontera
- Recuadro punteado · fuera de esa frontera
- Contorno naranja · donde decide un modelo
- Pasos del pipeline · reparación
- Verificación · enrutamiento · aceptación
- Estado · registros
- Explorar antes de corregir
Dibujado a partir de registros privados de implementación y desarrollo. Los nombres son nombres públicos genéricos; no se muestran rutas de código ni información de clientes.
- Entrada tras una reconstrucción fallida
- La reparación con modelo recibe la evidencia reunida y las instrucciones de corrección, pero el texto de error que se pasa es el error de build original, no el nuevo de la reconstrucción. Establecido leyendo el código; no se reprodujo en una ejecución y no se cambió el código fuente.
- Límites de las puertas
- Si se desconoce la línea base de cobertura, esa puerta se omite. La comprobación de surefire cuenta las exclusiones del POM actual, no la diferencia con la línea base. Las comprobaciones de eliminación y exclusión cuentan cero cuando no se pueden leer Git o el POM.
- El caso y sus cifras
- Los unos 40 errores de setter atribuidos a una sola causa, la configuración de Lombok y POM, son un diagnóstico registrado en su momento. No es una cifra de rendimiento, exactitud ni entrega final.