
REODE
Code migration
Před opravou najít společnou příčinu.
Agent pro migraci kódu 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
Migrační smyčka, která drží doklady oprav odděleně od přijetí.
Zaznamená se stav původního buildu a uplatní převod založený na pravidlech, pak se před opravou shromáždí doklady ze zdrojů a POM. Po úpravě modelem se znovu kontrolují build, testy a integrita testů a běhy, které skončí na limitu nebo uvíznou, se vykazují odděleně od úspěchu.
Spojuje převod založený na pravidlech s opravou s pomocí modelu a změněný kód kontroluje buildem a testy. Pracovní projekt.
Práce na REODE v repozitáři; spolupráce s pinxlab od March 16, 2026 do May 26, 2026
Nástroj CLI používaný v práci.
Převod podle pravidel
Stav originálu se uchová jako baseline; po převodu podle pravidel build a testy výsledek ověří a běh pokračuje k měření.
Zdroje · POMÚdaje: zdroje · POMStav originálu · kompilace
Kontrola origináluPřijímá zdroje Java/Spring a POM k migraci. Kód a obrazovky zákazníka se nezobrazují.
Stav originálu · kompilace
Kontrola origináluÚdaje: kompilace origináluBaseline · neznámé hodnoty neměřenyStav běhuPřed převodem se zvolí běhové prostředí a zkompiluje se originál, takže build, který byl rozbitý už předtím, zůstane v baseline. Výchozí hodnoty testů a pokrytí v baseline nejsou měřeními.
Stav originálu · kompilace
Kontrola origináluSpuštění · rozhodnutí: převod podle pravidelPlán → převod založený na pravidlechPřevodGraf běhu jde: kontrola originálu → plán převodu → převod založený na pravidlech → ověření. Nejprve se uplatní převody, které lze provést pravidly.
Plán → převod založený na pravidlech
PřevodSpuštění · rozhodnutí: build · testbuild · test · iterace +1OvěřeníBuild a testy ověří převedený kód a počet iterací se zvýší o jednu. Výsledky se vracejí do stavu běhu.
build · test · iterace +1
OvěřeníÚdaje: výsledek · iteracePokračovat · měřit · nejvýše 3Další krokO dalším kroku rozhoduje úspěch buildu, podíl úspěšných testů a počet iterací.
Pokračovat · měřit · nejvýše 3
Další krokSpuštění · rozhodnutí: úspěch · limit · uvíznutíPodíl pravidel · testy · pokrytíMěřeníKdyž projdou build i testy, je dosažen limit iterací nebo je zjištěno uvíznutí (po jednom pokusu o obnovu, pokud ještě neproběhl), běh přejde k měření. Přechod k měření neznamená úspěch.
Baseline · neznámé hodnoty neměřeny
Stav běhuÚdaje: porovnání s baselinePodíl pravidel · testy · pokrytíMěřeníMěření čte baseline uchovaný ve stavu běhu. Nejde o nový běh baseline.
5 kritérií přijetí
MěřeníÚdaje: hodnoceníHodnoticí karta · hodnoceníÚspěšný build, 100% úspěšnost testů, změna pokrytí −5 nebo lepší (jen když je baseline znám), nula smazaných testů, nula vyloučení v surefire. Hodnocení se udělí jen při splnění všech pěti kritérií.
Oprava podle příčiny
Doklady se shromažďují před opravou a deterministické opravy jdou první. Pokud nový build projde, model se přeskočí; pokud ne, model opraví kód s doklady a pokyny a výsledek se znovu ověří.
build · test · iterace +1
OvěřeníÚdaje: výsledek · iteracePokračovat · měřit · nejvýše 3Další krokO dalším kroku rozhoduje úspěch buildu, podíl úspěšných testů a počet iterací.
Pokračovat · měřit · nejvýše 3
Další krokSpuštění · rozhodnutí: selhání · opakováníDoklady příčiny · 3 zdroje · POMPrůzkum před opravouPokud build selhal nebo je podíl úspěšných testů pod 100 % a limit iterací (výchozí 3) nebyl dosažen, běh přejde k opravě.
Doklady příčiny · 3 zdroje · POM
Průzkum před opravouPozorování · zpráva: uložení před opravouCheckpoint před opravouZáznamy obnovyPřed opravou se uloží checkpoint. Funguje v režimu best-effort: neúspěšné uložení opravu nezastaví a uložení není dokladem úspěchu.
Doklady příčiny · 3 zdroje · POM
Průzkum před opravouÚdaje: doklady · seskupené chybyOprava známých vzorůDeterministická opravaShromáždí chybné soubory Java, úvodní řádky nejvýše tří zdrojů, nastavení anotací, POM a procesoru anotací a importy do hloubky 2. Je to omezený vzorek, nikoli porozumění celé kódové základně.
Kontrola nového buildu
Deterministická opravaSpuštění · rozhodnutí: prošlo · LLM přeskočenbuild · test · iterace +1OvěřeníPokud deterministická oprava známého vzoru (například nastavení Lombok) zajistí, že nový build projde, model se nevolá. Běh se přesto vrací k ověření, takže nejde o konečné přijetí.
Kontrola nového buildu
Deterministická opravaSelhání · limit: nový build selhalOprava s doklady · pokynyOprava modelemPokud nový build selže, shromážděné doklady a pokyny k opravě jdou k opravě modelem. Z kódu je patrné, že předávaný text chyby je původní chyba buildu, nikoli nová chyba z nového buildu, proto to nelze číst jako „předávají se jen zbývající chyby“. Nejde o vadu reprodukovanou během.
Dřívější oprava, stejná chyba
Záznamy obnovyÚdaje: dřívější opravaOprava s doklady · pokynyOprava modelemDřívější opravy zaznamenané pod stejnou signaturou chyby se vyhledají a připojí. Jde o záznam přidaný ke vstupu, nikoli o trénink modelu.
Oprava s doklady · pokyny
Oprava modelemSpuštění · rozhodnutí: znovu ověřitbuild · test · iterace +1OvěřeníModel opravuje přes strukturovanou cestu architect/editor, nebo, když tato cesta není dostupná či probíhá obnova, přes prompt s použitím nástrojů, a build a testy znovu ověří výsledek. Úprava modelem sama o sobě není úspěšným buildem.
Úspěch versus uvíznutí
Hodnocení vyžaduje splnění všech pěti kritérií; smazané nebo vyloučené testy a výstupy na limitu či uvíznutím se nepočítají jako úspěch.
Pokračovat · měřit · nejvýše 3
Další krokSpuštění · rozhodnutí: úspěch · limit · uvíznutíPodíl pravidel · testy · pokrytíMěřeníKdyž projdou build i testy, je dosažen limit iterací nebo je zjištěno uvíznutí (po jednom pokusu o obnovu, pokud ještě neproběhl), běh přejde k měření. Přechod k měření neznamená úspěch.
Baseline · neznámé hodnoty neměřeny
Stav běhuÚdaje: porovnání s baselinePodíl pravidel · testy · pokrytíMěřeníMěření čte baseline uchovaný ve stavu běhu. Nejde o nový běh baseline.
5 kritérií přijetí
MěřeníÚdaje: hodnoceníHodnoticí karta · hodnoceníÚspěšný build, 100% úspěšnost testů, změna pokrytí −5 nebo lepší (jen když je baseline znám), nula smazaných testů, nula vyloučení v surefire. Hodnocení se udělí jen při splnění všech pěti kritérií.
5 kritérií přijetí
MěřeníSelhání · limit: smazané · vyloučené · neúspěšnéZpráva o selhání · uvíznutíÚspěchy dosažené smazáním testů nebo vyloučením v surefire a neúspěšné buildy či testy zůstávají selháními. Kontroly smazání a vyloučení počítají nulu, když nelze číst Git nebo POM, takže nedokazují, že bude zachyceno každé porušení.
Pokračovat · měřit · nejvýše 3
Další krokPozorování · zpráva: výstup při limitu · uvíznutíZpráva o selhání · uvíznutíBěh, který skončí na limitu nebo uvízne, přesto projde měřením, ale nevykazuje se jako úspěch. Jde o označení způsobu vykazování, nikoli o zkratku kolem měření.
Každé spojení se stejnou váhou. Výběr toku zvýrazní jen jeho cestu s očíslovanými kroky.
- Plná čára · směr vstupu, výsledků a záznamů
- Přerušovaná čára · spuštění, rozhodnutí, požadavek
- Dlouhé tečky · pozorování a vykazování, odděleně od rozhodnutí
- Krátké čárky · selhání, zastavení, limit
- Silná černá čára · zvolený tok; čísla udávají pořadí
- Rámeček · hranice kódu nebo stavu, pojmenovaná v záhlaví
- Vnitřní štítek · komponenta této hranice
- Tečkovaný rámeček · mimo tuto hranici
- Oranžový obrys · místo, kde rozhoduje model
- Kroky pipeline · oprava
- Ověření · směrování · přijetí
- Stav · záznamy
- Průzkum před opravou
Nakresleno podle neveřejných záznamů implementace a vývoje. Názvy jsou obecné veřejné názvy; cesty kódu ani informace o zákazníkovi se nezobrazují.
- Vstup po neúspěšném novém buildu
- Oprava modelem dostává shromážděné doklady a pokyny k opravě, ale předávaný text chyby je původní chyba buildu, nikoli nová chyba z nového buildu. Zjištěno čtením kódu; během se to nereprodukovalo a zdrojový kód se neměnil.
- Meze kritérií
- Pokud je baseline pokrytí neznámý, toto kritérium se přeskočí. Kontrola surefire počítá vyloučení v současném POM, nikoli rozdíl oproti baseline. Kontroly smazání a vyloučení počítají nulu, když nelze číst Git nebo POM.
- Případ a jeho čísla
- Zhruba 40 chyb setterů vystopovaných k jediné příčině, nastavení Lombok a POM, je tehdy zaznamenaná diagnóza. Nejde o hodnotu propustnosti, přesnosti ani konečné dodávky.