Upravená původní postava REODE: usměvavý krémově růžový obličej axolotla s tmavomodrým headsetem a azurovými čočkami
Zpět do sálu

REODE

Code migration

Před opravou najít společnou příčinu.

Agent pro migraci kódu Java/Spring.

2026.03 — 2026.04

Pracovní projekt · systém migrace a ověřování

  • CLIImplementováno · pracovní projekt

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

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.

Mapa smyčky oprav · z neveřejných záznamů implementace
Smyčka oprav migrace REODEStav původního buildu se uchová jako baseline, uplatní se převod založený na pravidlech a build a testy výsledek ověří. Při selhání se před jakoukoli opravou shromáždí doklady ze zdrojů, anotací a POM a známé vzory se deterministicky opraví a znovu sestaví. Pokud nový build projde, model se nevolá; pokud selže, model opraví kód se shromážděnými doklady a pokyny k opravě a výsledek se znovu ověří. Běhy, které skončí na limitu iterací nebo uvíznou, pokračují k měření, ale nepočítají se jako úspěch, a hodnoticí karta udělí hodnocení jen při splnění všech pěti kritérií přijetí.Zdroje · POMNeveřejný vstup migraceHodnoticí karta · hodnoceníNejde o nasazeníZpráva o selhání · uvíznutíNepočítá se jako úspěchKontrola origináluStav originálu · kompilaceStav běhuBaseline · neznámé hodnoty neměřenyZáznamy obnovyCheckpoint před opravouDřívější oprava, stejná chybaPřevodPlán → převod založený na pravidlechPrůzkum před opravouDoklady příčiny · 3 zdroje · POMDeterministická opravaOprava známých vzorůKontrola nového builduOprava modelemOprava s doklady · pokynyOvěřeníbuild · test · iterace +1Další krokPokračovat · měřit · nejvýše 3MěřeníPodíl pravidel · testy · pokrytí5 kritérií přijetíVstup · baselineZáznamy obnovyPřevod · opravaOvěření · výstup1zdroje · POM2kompilace originálu3 převod podle pravidel · Stav originálu · kompilace → Plán → převod založený na pravidlech34build · test5výsledek · iterace6úspěch · limit · uvíznutí7porovnání s baseline8hodnocení1výsledek · iterace2 selhání · opakování · Pokračovat · měřit · nejvýše 3 → Doklady příčiny · 3 zdroje · POM23uložení před opravou4doklady · seskupené chyby5prošlo · LLM přeskočen6nový build selhal7 dřívější oprava · Dřívější oprava, stejná chyba → Oprava s doklady · pokyny78znovu ověřit1úspěch · limit · uvíznutí2porovnání s baseline3hodnocení4smazané · vyloučené · neúspěšné5výstup při limitu · uvíznutí

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

  1. Zdroje · POMÚdaje: zdroje · POMStav originálu · kompilaceKontrola originálu

    Přijímá zdroje Java/Spring a POM k migraci. Kód a obrazovky zákazníka se nezobrazují.

  2. Stav originálu · kompilaceKontrola origináluÚdaje: kompilace origináluBaseline · neznámé hodnoty neměřenyStav běhu

    Př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.

  3. Stav originálu · kompilaceKontrola origináluSpuštění · rozhodnutí: převod podle pravidelPlán → převod založený na pravidlechPřevod

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

  4. Plán → převod založený na pravidlechPř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.

  5. build · test · iterace +1OvěřeníÚdaje: výsledek · iteracePokračovat · měřit · nejvýše 3Další krok

    O dalším kroku rozhoduje úspěch buildu, podíl úspěšných testů a počet iterací.

  6. Pokračovat · měřit · nejvýše 3Další 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.

  7. Baseline · neznámé hodnoty neměřenyStav 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.

  8. 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ěří.

  1. build · test · iterace +1OvěřeníÚdaje: výsledek · iteracePokračovat · měřit · nejvýše 3Další krok

    O dalším kroku rozhoduje úspěch buildu, podíl úspěšných testů a počet iterací.

  2. Pokračovat · měřit · nejvýše 3Další krokSpuštění · rozhodnutí: selhání · opakováníDoklady příčiny · 3 zdroje · POMPrůzkum před opravou

    Pokud 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ě.

  3. Doklady příčiny · 3 zdroje · POMPrůzkum před opravouPozorování · zpráva: uložení před opravouCheckpoint před opravouZáznamy obnovy

    Př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.

  4. Doklady příčiny · 3 zdroje · POMPrůzkum před opravouÚdaje: doklady · seskupené chybyOprava známých vzorůDeterministická oprava

    Shromáž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ě.

  5. Kontrola nového builduDeterministická 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í.

  6. Kontrola nového builduDeterministická opravaSelhání · limit: nový build selhalOprava s doklady · pokynyOprava modelem

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

  7. Dřívější oprava, stejná chybaZáznamy obnovyÚdaje: dřívější opravaOprava s doklady · pokynyOprava modelem

    Dří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.

  8. Oprava s doklady · pokynyOprava 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.

  1. Pokračovat · měřit · nejvýše 3Další 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.

  2. Baseline · neznámé hodnoty neměřenyStav 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.

  3. 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í.

  4. 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í.

  5. Pokračovat · měřit · nejvýše 3Další 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.