Le personnage original de REODE, retravaillé : un visage d’axolotl crème et rose, souriant, avec un casque bleu marine et des verres cyan
Retour à la salle

REODE

Code migration

Avant de corriger, trouver la cause commune.

Un agent de migration de code Java/Spring.

2026.03 — 2026.04

Projet professionnel · système de migration et de vérification

  • CLIImplémenté · projet professionnel

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

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.

Carte de la boucle de réparation · d’après des enregistrements d’implémentation privés
Boucle de réparation de migration REODEL’état de build d’origine est conservé comme référence, la conversion à base de règles est appliquée, et build et test vérifient le résultat. En cas d’échec, les preuves de source, d’annotations et de POM sont réunies avant toute correction, et les motifs connus sont corrigés de façon déterministe puis reconstruits. Si la reconstruction réussit, aucun modèle n’est appelé ; si elle échoue, un modèle répare avec les preuves réunies et les instructions de correction, et le résultat est revérifié. Les exécutions qui s’arrêtent à la limite d’itérations ou se bloquent passent à la mesure mais ne comptent pas comme un succès, et la scorecard ne note que si les cinq critères d’acceptation passent.Sources · POMEntrée de migration privéeScorecard · notePas un déploiementÉchec · rapport de blocageNon compté comme succèsContrôle d’origineÉtat d’origine · compilationÉtat d’exécutionRéférence · inconnues non mesuréesEnregistrements de repriseCheckpoint avant correctionCorrectif antérieur, même erreurTransformationPlan → conversion à base de règlesExplorer avant de corrigerPreuves de cause · 3 sources · POMCorrectif déterministeCorriger les motifs connusContrôle de reconstructionRéparation par modèleCorriger avec preuves · instructionsVérificationbuild · test · itération +1Étape suivanteContinuer · mesurer · 3 maxMesurePart des règles · tests · couverture5 portes d’acceptationEntrée · référenceEnregistrements de repriseConversion · réparationVérification · sortie1 sources · POM · Sources · POM → État d’origine · compilation12compilation d’origine3 conversion par règles · État d’origine · compilation → Plan → conversion à base de règles34build · test5résultat · itérations6réussite · limite · blocage7comparaison à la référence8notation1résultat · itérations2 échec · nouvelle tentative · Continuer · mesurer · 3 max → Preuves de cause · 3 sources · POM23sauvegarde avant correction4preuves · erreurs regroupées5réussi · LLM sauté6reconstruction échouée7 correctif antérieur · Correctif antérieur, même erreur → Corriger avec preuves · instructions78revérifier1réussite · limite · blocage2comparaison à la référence3notation4supprimés · exclus · échoués5sortie par limite · blocage

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.

  1. Sources · POMDonnées: sources · POMÉtat d’origine · compilationContrôle d’origine

    Prend la source Java/Spring et le POM à migrer. Le code et les écrans clients ne sont pas montrés.

  2. État d’origine · compilationContrôle d’origineDonnées: compilation d’origineRéférence · inconnues non mesuréesÉtat d’exécution

    Avant 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.

  3. État d’origine · compilationContrôle d’origineExécution · jugement: conversion par règlesPlan → conversion à base de règlesTransformation

    Le 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.

  4. Plan → conversion à base de règlesTransformationExécution · jugement: build · testbuild · test · itération +1Vérification

    Build 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.

  5. build · test · itération +1VérificationDonnées: résultat · itérationsContinuer · mesurer · 3 maxÉtape suivante

    Le succès du build, le taux de réussite des tests et le nombre d’itérations décident de l’étape suivante.

  6. Continuer · mesurer · 3 maxÉtape suivanteExécution · jugement: réussite · limite · blocagePart des règles · tests · couvertureMesure

    Quand 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.

  7. Référence · inconnues non mesuréesÉtat d’exécutionDonnées: comparaison à la référencePart des règles · tests · couvertureMesure

    La 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.

  8. 5 portes d’acceptationMesureDonnées: notationScorecard · note

    Build 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é.

  1. build · test · itération +1VérificationDonnées: résultat · itérationsContinuer · mesurer · 3 maxÉtape suivante

    Le succès du build, le taux de réussite des tests et le nombre d’itérations décident de l’étape suivante.

  2. Continuer · mesurer · 3 maxÉtape suivanteExécution · jugement: échec · nouvelle tentativePreuves de cause · 3 sources · POMExplorer avant de corriger

    Si 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.

  3. Preuves de cause · 3 sources · POMExplorer avant de corrigerObservation · rapport: sauvegarde avant correctionCheckpoint avant correctionEnregistrements de reprise

    Un 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.

  4. Preuves de cause · 3 sources · POMExplorer avant de corrigerDonnées: preuves · erreurs regroupéesCorriger les motifs connusCorrectif déterministe

    Ré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.

  5. Contrôle de reconstructionCorrectif déterministeExécution · jugement: réussi · LLM sautébuild · test · itération +1Vérification

    Si 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.

  6. Contrôle de reconstructionCorrectif déterministeÉchec · limite: reconstruction échouéeCorriger avec preuves · instructionsRéparation par modèle

    Si 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.

  7. Correctif antérieur, même erreurEnregistrements de repriseDonnées: correctif antérieurCorriger avec preuves · instructionsRéparation par modèle

    Les 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.

  8. Corriger avec preuves · instructionsRéparation par modèleExécution · jugement: revérifierbuild · test · itération +1Vérification

    Le 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.

  1. Continuer · mesurer · 3 maxÉtape suivanteExécution · jugement: réussite · limite · blocagePart des règles · tests · couvertureMesure

    Quand 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.

  2. Référence · inconnues non mesuréesÉtat d’exécutionDonnées: comparaison à la référencePart des règles · tests · couvertureMesure

    La 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.

  3. 5 portes d’acceptationMesureDonnées: notationScorecard · note

    Build 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.

  4. 5 portes d’acceptationMesureÉchec · limite: supprimés · exclus · échouésÉchec · rapport de blocage

    Les 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.

  5. Continuer · mesurer · 3 maxÉtape suivanteObservation · rapport: sortie par limite · blocageÉchec · rapport de blocage

    Une 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.