
REODE
Code migration
Prieš taisant – rasti bendrą priežastį.
Java/Spring kodo migracijos agentas.
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
Migracijos ciklas, kuriame taisymo įrodymai laikomi atskirai nuo priėmimo.
Užfiksuojama originali build būsena ir pritaikomas taisyklėmis pagrįstas konvertavimas, tada prieš taisant surenkami šaltinio ir POM įrodymai. Po modelio pataisos vėl tikrinami build, testai ir testų vientisumas, o paleidimai, pasibaigę limitu ar užstrigimu, ataskaitoje atskiriami nuo sėkmės.
Jis derina taisyklėmis pagrįstą konvertavimą su modelio padedamu taisymu ir pakeistą kodą tikrina build ir testais. Darbo projektas.
REODE darbas saugykloje; bendradarbiavimas su pinxlab March 16, 2026 – May 26, 2026
Darbe naudojamas CLI įrankis.
Konvertavimas taisyklėmis
Originali būsena išsaugoma kaip bazinė linija; po konvertavimo taisyklėmis build ir testai patikrina, ir paleidimas pereina į matavimą.
Šaltinis · POMDuomenys: šaltinis · POMOriginali būsena · kompiliavimas
Originali patikraPaima migruotiną Java/Spring šaltinį ir POM. Kliento kodas ir ekranai nerodomi.
Originali būsena · kompiliavimas
Originali patikraDuomenys: originalus kompiliavimasBazinė linija · nežinomi neišmatuotiPaleidimo būsenaPrieš konvertavimą pasirenkama vykdymo aplinka ir sukompiliuojamas originalas, todėl jau sugadintas build išsaugomas bazinėje linijoje. Numatytosios testų ir aprėpties reikšmės bazinėje linijoje nėra matavimai.
Originali būsena · kompiliavimas
Originali patikraPaleidimas · sprendimas: konvertavimas taisyklėmisPlanas → taisyklėmis pagrįstas konvertavimasKonvertavimasPaleidimo grafas eina: originali patikra → konvertavimo planas → taisyklėmis pagrįstas konvertavimas → verifikacija. Pirma taikomi konvertavimai, kuriuos gali atlikti taisyklės.
Planas → taisyklėmis pagrįstas konvertavimas
KonvertavimasPaleidimas · sprendimas: build · testbuild · testai · iteracija +1VerifikacijaBuild ir testai patikrina konvertuotą kodą, o iteracijų skaičius padidėja vienetu. Rezultatai grįžta į paleidimo būseną.
build · testai · iteracija +1
VerifikacijaDuomenys: rezultatas · iteracijosTęsti · matuoti · daugiausia 3Kitas žingsnisBuild sėkmė, testų įveikimo dalis ir iteracijų skaičius lemia kitą žingsnį.
Tęsti · matuoti · daugiausia 3
Kitas žingsnisPaleidimas · sprendimas: sėkmė · limitas · užstrigimasTaisyklių dalis · testai · aprėptisMatavimasKai praeina ir build, ir testai, pasiekiamas iteracijų limitas arba aptinkamas užstrigimas (po vieno atkūrimo bandymo, jei jo dar nebuvo), paleidimas pereina į matavimą. Perėjimas į matavimą nereiškia sėkmės.
Bazinė linija · nežinomi neišmatuoti
Paleidimo būsenaDuomenys: palyginimas su bazine linijaTaisyklių dalis · testai · aprėptisMatavimasMatavimas skaito paleidimo būsenoje išsaugotą bazinę liniją. Tai nėra naujas bazinės linijos paleidimas.
5 priėmimo slenksčiai
MatavimasDuomenys: įvertinimasRezultatų kortelė · įvertinimasSėkmingas build, 100 % testų įveikimas, aprėpties pokytis −5 ar geresnis (tik kai bazinė linija žinoma), nulis ištrintų testų, nulis surefire išimčių. Įvertinimas suteikiamas tik praėjus visiems penkiems.
Taisymas pagal priežastį
Įrodymai renkami prieš taisant, o deterministiniai taisymai eina pirmi. Jei pakartotinis build praeina, modelis praleidžiamas; jei ne, modelis taiso su įrodymais ir nurodymais, o rezultatas patikrinamas iš naujo.
build · testai · iteracija +1
VerifikacijaDuomenys: rezultatas · iteracijosTęsti · matuoti · daugiausia 3Kitas žingsnisBuild sėkmė, testų įveikimo dalis ir iteracijų skaičius lemia kitą žingsnį.
Tęsti · matuoti · daugiausia 3
Kitas žingsnisPaleidimas · sprendimas: nesėkmė · pakartojimasPriežasties įrodymai · 3 šaltiniai · POMIštirti prieš taisantJei build nepavyko arba testų įveikimo dalis mažesnė nei 100 % ir iteracijų limitas (numatytasis – 3) nepasiektas, paleidimas pereina į taisymą.
Priežasties įrodymai · 3 šaltiniai · POM
Ištirti prieš taisantStebėjimas · ataskaita: išsaugoti prieš taisymąKontrolinis taškas prieš taisymąAtkūrimo įrašaiPrieš taisymą išsaugomas kontrolinis taškas. Tai best-effort: nepavykęs išsaugojimas taisymo nesustabdo, o išsaugojimas nėra sėkmės įrodymas.
Priežasties įrodymai · 3 šaltiniai · POM
Ištirti prieš taisantDuomenys: įrodymai · sugrupuotos klaidosTaisyti žinomus šablonusDeterministinė pataisaSurenka Java failus su klaidomis, ne daugiau kaip trijų šaltinių pradines eilutes, anotacijų, POM ir annotation processor nustatymus bei importus iki 2 gylio. Ribota imtis, o ne visos kodo bazės supratimas.
Pakartotinio build patikra
Deterministinė pataisaPaleidimas · sprendimas: praėjo · LLM praleistasbuild · testai · iteracija +1VerifikacijaJei deterministinė žinomo šablono pataisa (pavyzdžiui, Lombok sąrankos) leidžia pakartotiniam build praeiti, modelis nekviečiamas. Paleidimas vis tiek grįžta į verifikaciją, todėl tai nėra galutinis priėmimas.
Pakartotinio build patikra
Deterministinė pataisaNesėkmė · limitas: pakartotinis build nepavykoTaisymas su įrodymais · nurodymaisModelio taisymasJei pakartotinis build nepavyksta, surinkti įrodymai ir taisymo nurodymai perduodami modelio taisymui. Iš kodo matyti, kad kartu perduodamas pradinės build klaidos tekstas, o ne nauja pakartotinio build klaida, todėl to negalima skaityti kaip „perduodamos tik likusios klaidos“. Tai ne paleidime atkartotas defektas.
Ankstesnė pataisa, ta pati klaida
Atkūrimo įrašaiDuomenys: ankstesnė pataisaTaisymas su įrodymais · nurodymaisModelio taisymasAnkstesnės pataisos, įrašytos su tuo pačiu klaidos parašu, surandamos ir pridedamos. Tai prie įvesties pridėtas įrašas, o ne modelio mokymas.
Taisymas su įrodymais · nurodymais
Modelio taisymasPaleidimas · sprendimas: patikrinti iš naujobuild · testai · iteracija +1VerifikacijaModelis taiso per struktūruotą architect/editor kelią arba, kai tas kelias neprieinamas ar vyksta atkūrimas, per įrankių naudojimo raginimą, o build ir testai tikrina iš naujo. Modelio pataisa savaime nėra praėjęs build.
Sėkmė ir užstrigimas
Įvertinimui reikia visų penkių slenksčių; ištrinti ar neįtraukti testai ir išėjimai pasiekus limitą ar užstrigus nelaikomi sėkme.
Tęsti · matuoti · daugiausia 3
Kitas žingsnisPaleidimas · sprendimas: sėkmė · limitas · užstrigimasTaisyklių dalis · testai · aprėptisMatavimasKai praeina ir build, ir testai, pasiekiamas iteracijų limitas arba aptinkamas užstrigimas (po vieno atkūrimo bandymo, jei jo dar nebuvo), paleidimas pereina į matavimą. Perėjimas į matavimą nereiškia sėkmės.
Bazinė linija · nežinomi neišmatuoti
Paleidimo būsenaDuomenys: palyginimas su bazine linijaTaisyklių dalis · testai · aprėptisMatavimasMatavimas skaito paleidimo būsenoje išsaugotą bazinę liniją. Tai nėra naujas bazinės linijos paleidimas.
5 priėmimo slenksčiai
MatavimasDuomenys: įvertinimasRezultatų kortelė · įvertinimasSėkmingas build, 100 % testų įveikimas, aprėpties pokytis −5 ar geresnis (tik kai bazinė linija žinoma), nulis ištrintų testų, nulis surefire išimčių. Įvertinimas suteikiamas tik praėjus visiems penkiems.
5 priėmimo slenksčiai
MatavimasNesėkmė · limitas: ištrinta · neįtraukta · nepavykoNesėkmės · užstrigimo ataskaitaĮveikimai, gauti ištrynus testus ar surefire išimtimis, taip pat nepavykę build ar testai lieka nesėkmėmis. Ištrynimo ir išimčių patikros skaičiuoja nulį, kai Git ar POM negalima perskaityti, todėl jos neįrodo, kad sugaunamas kiekvienas pažeidimas.
Tęsti · matuoti · daugiausia 3
Kitas žingsnisStebėjimas · ataskaita: išėjimas pasiekus limitą · užstrigusNesėkmės · užstrigimo ataskaitaPaleidimas, pasibaigęs limitu ar užstrigimu, vis tiek pereina matavimą, bet ataskaitoje nepateikiamas kaip sėkmė. Tai žymi ataskaitos būdą, o ne matavimo apėjimą.
Visi ryšiai vienodo storio. Pasirinkite srautą, kad būtų paryškintas tik jo kelias su sunumeruotais žingsniais.
- Ištisinė · įvesties, rezultatų ir įrašų kryptis
- Brūkšninė · paleidimas, sprendimas, užklausa
- Ilga taškinė · stebėjimas ir ataskaitos, atskirai nuo sprendimo
- Trumpa brūkšninė · nesėkmė, sustabdymas, limitas
- Stora juoda linija · pasirinktas srautas; skaičiai rodo tvarką
- Rėmelis · kodo ar būsenos riba, pavadinta antraštėje
- Vidinė plokštelė · tos ribos komponentas
- Taškinis rėmelis · už tos ribos
- Oranžinis kontūras · kur sprendžia modelis
- Konvejerio žingsniai · taisymas
- Verifikacija · nukreipimas · priėmimas
- Būsena · įrašai
- Ištirti prieš taisant
Nubraižyta pagal privačius įgyvendinimo ir kūrimo įrašus. Pavadinimai yra bendri vieši pavadinimai; kodo keliai ir klientų informacija nerodomi.
- Įvestis po nepavykusio pakartotinio build
- Modelio taisymas gauna surinktus įrodymus ir taisymo nurodymus, bet perduodamas pradinės build klaidos tekstas, o ne nauja pakartotinio build klaida. Nustatyta skaitant kodą; paleidime neatkartota, o šaltinis nekeistas.
- Slenksčių ribos
- Jei aprėpties bazinė linija nežinoma, tas slenkstis praleidžiamas. Surefire patikra skaičiuoja išimtis dabartiniame POM, o ne skirtumą nuo bazinės linijos. Ištrynimo ir išimčių patikros skaičiuoja nulį, kai Git ar POM negalima perskaityti.
- Atvejis ir jo skaičiai
- Apie 40 setter klaidų, atsektų iki vienos priežasties – Lombok ir POM sąrankos, – yra tuo metu užfiksuota diagnozė. Tai ne pralaidumo, tikslumo ar galutinio pristatymo rodiklis.