
REODE
Code migration
Avant de corriger, trouver la cause commune.
Un agent de migration de code 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
Une boucle de migration qui tient les preuves de réparation à l’écart de l’acceptation.
L’état de build d’origine est consigné et la conversion à base de règles appliquée, puis les preuves de source et de POM sont réunies avant la réparation. Après la modification d’un modèle, build, test et intégrité des tests sont revérifiés, et les exécutions qui s’arrêtent à une limite ou se bloquent sont rapportées à part du succès.
Il combine conversion à base de règles et réparation assistée par modèle, et vérifie le code modifié par build et test. Un projet professionnel.
Travail REODE dans le dépôt ; mission pinxlab : March 16, 2026 to May 26, 2026
Un outil CLI utilisé dans le cadre professionnel.
Conversion par règles
L’état d’origine est conservé comme référence ; après la conversion par règles, build et test vérifient, et l’exécution passe à la mesure.
Sources · POMDonnées: sources · POMÉtat d’origine · compilation
Contrôle d’originePrend la source Java/Spring et le POM à migrer. Le code et les écrans clients ne sont pas montrés.
État d’origine · compilation
Contrôle d’origineDonnées: compilation d’origineRéférence · inconnues non mesuréesÉtat d’exécutionAvant la conversion, le runtime est choisi et l’original compilé, de sorte qu’un build déjà cassé est conservé dans la référence. Les valeurs par défaut de test et de couverture dans la référence ne sont pas des mesures.
État d’origine · compilation
Contrôle d’origineExécution · jugement: conversion par règlesPlan → conversion à base de règlesTransformationLe graphe d’exécution suit contrôle d’origine → plan de conversion → conversion à base de règles → vérification. Les conversions que les règles peuvent porter sont appliquées d’abord.
Plan → conversion à base de règles
TransformationExécution · jugement: build · testbuild · test · itération +1VérificationBuild et test vérifient le code converti et le compteur d’itérations augmente de un. Les résultats retournent à l’état d’exécution.
build · test · itération +1
VérificationDonnées: résultat · itérationsContinuer · mesurer · 3 maxÉtape suivanteLe succès du build, le taux de réussite des tests et le nombre d’itérations décident de l’étape suivante.
Continuer · mesurer · 3 max
Étape suivanteExécution · jugement: réussite · limite · blocagePart des règles · tests · couvertureMesureQuand build et test réussissent tous deux, que la limite d’itérations est atteinte ou qu’un blocage est détecté (après une tentative de reprise si elle n’a pas encore eu lieu), l’exécution passe à la mesure. Passer à la mesure ne signifie pas un succès.
Référence · inconnues non mesurées
État d’exécutionDonnées: comparaison à la référencePart des règles · tests · couvertureMesureLa mesure lit la référence conservée dans l’état d’exécution. Ce n’est pas une nouvelle exécution de référence.
5 portes d’acceptation
MesureDonnées: notationScorecard · noteBuild réussi, taux de réussite des tests de 100%, variation de couverture de −5 ou mieux (seulement si la référence est connue), zéro test supprimé, zéro exclusion surefire. Une note n’est attribuée que si les cinq passent.
Réparation fondée sur la cause
Les preuves sont réunies avant de corriger, et les corrections déterministes passent d’abord. Si la reconstruction réussit, le modèle est sauté ; sinon, le modèle répare avec preuves et instructions, et le résultat est revérifié.
build · test · itération +1
VérificationDonnées: résultat · itérationsContinuer · mesurer · 3 maxÉtape suivanteLe succès du build, le taux de réussite des tests et le nombre d’itérations décident de l’étape suivante.
Continuer · mesurer · 3 max
Étape suivanteExécution · jugement: échec · nouvelle tentativePreuves de cause · 3 sources · POMExplorer avant de corrigerSi le build a échoué ou si le taux de réussite des tests est inférieur à 100%, et que la limite d’itérations (3 par défaut) n’est pas atteinte, l’exécution passe à la réparation.
Preuves de cause · 3 sources · POM
Explorer avant de corrigerObservation · rapport: sauvegarde avant correctionCheckpoint avant correctionEnregistrements de repriseUn checkpoint est sauvegardé avant la correction. Il est best-effort : un échec de sauvegarde n’arrête pas la réparation, et une sauvegarde ne prouve pas un succès.
Preuves de cause · 3 sources · POM
Explorer avant de corrigerDonnées: preuves · erreurs regroupéesCorriger les motifs connusCorrectif déterministeRéunit les fichiers Java en échec, les premières lignes de trois sources au plus, les réglages d’annotations, de POM et de processeur d’annotations, et les imports jusqu’à la profondeur 2. Un échantillon borné, pas une compréhension de toute la base de code.
Contrôle de reconstruction
Correctif déterministeExécution · jugement: réussi · LLM sautébuild · test · itération +1VérificationSi une correction déterministe d’un motif connu (par exemple la configuration Lombok) fait réussir la reconstruction, aucun modèle n’est appelé. L’exécution revient tout de même à la vérification ; ce n’est donc pas une acceptation finale.
Contrôle de reconstruction
Correctif déterministeÉchec · limite: reconstruction échouéeCorriger avec preuves · instructionsRéparation par modèleSi la reconstruction échoue, les preuves réunies et les instructions de correction passent à la réparation par modèle. La lecture du code montre que le texte d’erreur transmis est l’erreur de build d’origine, pas la nouvelle erreur de la reconstruction ; il ne faut donc pas lire « seules les erreurs restantes sont transmises ». Ce n’est pas un défaut reproduit lors d’une exécution.
Correctif antérieur, même erreur
Enregistrements de repriseDonnées: correctif antérieurCorriger avec preuves · instructionsRéparation par modèleLes correctifs antérieurs enregistrés sous la même signature d’erreur sont recherchés et joints. Un enregistrement ajouté à l’entrée, pas un entraînement de modèle.
Corriger avec preuves · instructions
Réparation par modèleExécution · jugement: revérifierbuild · test · itération +1VérificationLe modèle corrige par un chemin structuré architect/editor, ou par un prompt d’usage d’outils quand ce chemin est indisponible ou en reprise, puis build et test vérifient à nouveau. La modification d’un modèle n’est pas en soi un build réussi.
Réussite ou blocage
Une note exige les cinq portes ; les tests supprimés ou exclus et les sorties par limite ou blocage ne comptent pas comme un succès.
Continuer · mesurer · 3 max
Étape suivanteExécution · jugement: réussite · limite · blocagePart des règles · tests · couvertureMesureQuand build et test réussissent tous deux, que la limite d’itérations est atteinte ou qu’un blocage est détecté (après une tentative de reprise si elle n’a pas encore eu lieu), l’exécution passe à la mesure. Passer à la mesure ne signifie pas un succès.
Référence · inconnues non mesurées
État d’exécutionDonnées: comparaison à la référencePart des règles · tests · couvertureMesureLa mesure lit la référence conservée dans l’état d’exécution. Ce n’est pas une nouvelle exécution de référence.
5 portes d’acceptation
MesureDonnées: notationScorecard · noteBuild réussi, taux de réussite des tests de 100%, variation de couverture de −5 ou mieux (seulement si la référence est connue), zéro test supprimé, zéro exclusion surefire. Une note n’est attribuée que si les cinq passent.
5 portes d’acceptation
MesureÉchec · limite: supprimés · exclus · échouésÉchec · rapport de blocageLes réussites obtenues en supprimant des tests ou par des exclusions surefire, ainsi que les builds ou tests en échec, restent des échecs. Les contrôles de suppression et d’exclusion comptent zéro quand Git ou le POM ne peuvent être lus ; ils ne prouvent donc pas que chaque violation est détectée.
Continuer · mesurer · 3 max
Étape suivanteObservation · rapport: sortie par limite · blocageÉchec · rapport de blocageUne exécution qui s’arrête à la limite ou se bloque passe tout de même par la mesure, mais n’est pas rapportée comme un succès. Cela marque la façon de rapporter ; ce n’est pas un raccourci contournant la mesure.
Toutes les connexions avec la même épaisseur. Choisissez un flux pour ne mettre en évidence que son chemin, avec des étapes numérotées.
- Trait plein · sens des entrées, résultats et enregistrements
- Tirets · exécution, jugement, requête
- Pointillés longs · observation et rapport, hors jugement
- Tirets courts · échec, arrêt, limite
- Trait noir épais · le flux sélectionné ; les numéros donnent l’ordre
- Cadre · frontière de code ou d’état, nommée dans l’en-tête
- Pastille intérieure · composant de cette frontière
- Cadre pointillé · hors de cette frontière
- Contour orange · là où un modèle décide
- Étapes du pipeline · réparation
- Vérification · aiguillage · acceptation
- État · enregistrements
- Explorer avant de corriger
Tracé d’après des enregistrements privés d’implémentation et de développement. Les noms sont des noms publics génériques ; aucun chemin de code ni information client n’est montré.
- Entrée après une reconstruction échouée
- La réparation par modèle reçoit les preuves réunies et les instructions de correction, mais le texte d’erreur transmis est l’erreur de build d’origine, pas la nouvelle erreur de la reconstruction. Établi par la lecture du code ; non reproduit lors d’une exécution, et la source n’a pas été modifiée.
- Limites des portes
- Si la référence de couverture est inconnue, cette porte est sautée. Le contrôle surefire compte les exclusions du POM actuel, pas l’écart avec la référence. Les contrôles de suppression et d’exclusion comptent zéro quand Git ou le POM ne peuvent être lus.
- Le cas et ses chiffres
- Les environ 40 erreurs de setter ramenées à une seule cause, la configuration Lombok et POM, sont un diagnostic consigné à l’époque. Ce n’est ni un chiffre de débit, ni d’exactitude, ni de livraison finale.