Patobulintas originalus REODE personažas: besišypsantis kreminės ir rožinės spalvos aksolotlio veidas su tamsiai mėlynomis ausinėmis ir žydrais lęšiais
Atgal į salę

REODE

Code migration

Prieš taisant – rasti bendrą priežastį.

Java/Spring kodo migracijos agentas.

2026.03 — 2026.04

Darbo projektas · migracijos ir verifikacijos sistema

  • CLIĮgyvendinta · darbo projektas

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

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.

Taisymo ciklo žemėlapis · pagal privačius įgyvendinimo įrašus
REODE migracijos taisymo ciklasOriginali build būsena išsaugoma kaip bazinė linija, pritaikomas taisyklėmis pagrįstas konvertavimas, o build ir testai patikrina rezultatą. Nepavykus, prieš bet kokį taisymą surenkami šaltinio, anotacijų ir POM įrodymai, o žinomi šablonai deterministiškai pataisomi ir perkuriami. Jei pakartotinis build praeina, modelis nekviečiamas; jei ne, modelis taiso su surinktais įrodymais ir taisymo nurodymais, o rezultatas patikrinamas iš naujo. Paleidimai, pasibaigę iteracijų limitu ar užstrigimu, pereina į matavimą, bet nelaikomi sėkme, o rezultatų kortelė suteikia įvertinimą tik praėjus visiems penkiems priėmimo slenksčiams.Šaltinis · POMPrivati migracijos įvestisRezultatų kortelė · įvertinimasNe diegimasNesėkmės · užstrigimo ataskaitaNelaikoma sėkmeOriginali patikraOriginali būsena · kompiliavimasPaleidimo būsenaBazinė linija · nežinomi neišmatuotiAtkūrimo įrašaiKontrolinis taškas prieš taisymąAnkstesnė pataisa, ta pati klaidaKonvertavimasPlanas → taisyklėmis pagrįstas konvertavimasIštirti prieš taisantPriežasties įrodymai · 3 šaltiniai · POMDeterministinė pataisaTaisyti žinomus šablonusPakartotinio build patikraModelio taisymasTaisymas su įrodymais · nurodymaisVerifikacijabuild · testai · iteracija +1Kitas žingsnisTęsti · matuoti · daugiausia 3MatavimasTaisyklių dalis · testai · aprėptis5 priėmimo slenksčiaiĮvestis · bazinė linijaAtkūrimo įrašaiKonvertavimas · taisymasVerifikacija · išėjimas1 šaltinis · POM · Šaltinis · POM → Originali būsena · kompiliavimas12originalus kompiliavimas3 konvertavimas taisyklėmis · Originali būsena · kompiliavimas → Planas → taisyklėmis pagrįstas konvertavimas34build · test5rezultatas · iteracijos6sėkmė · limitas · užstrigimas7palyginimas su bazine linija8 įvertinimas · 5 priėmimo slenksčiai → Rezultatų kortelė · įvertinimas81rezultatas · iteracijos2 nesėkmė · pakartojimas · Tęsti · matuoti · daugiausia 3 → Priežasties įrodymai · 3 šaltiniai · POM23išsaugoti prieš taisymą4įrodymai · sugrupuotos klaidos5praėjo · LLM praleistas6pakartotinis build nepavyko7 ankstesnė pataisa · Ankstesnė pataisa, ta pati klaida → Taisymas su įrodymais · nurodymais78patikrinti iš naujo1sėkmė · limitas · užstrigimas2palyginimas su bazine linija3 įvertinimas · 5 priėmimo slenksčiai → Rezultatų kortelė · įvertinimas34ištrinta · neįtraukta · nepavyko5išėjimas pasiekus limitą · užstrigus

Konvertavimas taisyklėmis

Originali būsena išsaugoma kaip bazinė linija; po konvertavimo taisyklėmis build ir testai patikrina, ir paleidimas pereina į matavimą.

  1. Šaltinis · POMDuomenys: šaltinis · POMOriginali būsena · kompiliavimasOriginali patikra

    Paima migruotiną Java/Spring šaltinį ir POM. Kliento kodas ir ekranai nerodomi.

  2. Originali būsena · kompiliavimasOriginali patikraDuomenys: originalus kompiliavimasBazinė linija · nežinomi neišmatuotiPaleidimo būsena

    Prieš 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.

  3. Originali būsena · kompiliavimasOriginali patikraPaleidimas · sprendimas: konvertavimas taisyklėmisPlanas → taisyklėmis pagrįstas konvertavimasKonvertavimas

    Paleidimo grafas eina: originali patikra → konvertavimo planas → taisyklėmis pagrįstas konvertavimas → verifikacija. Pirma taikomi konvertavimai, kuriuos gali atlikti taisyklės.

  4. Planas → taisyklėmis pagrįstas konvertavimasKonvertavimasPaleidimas · sprendimas: build · testbuild · testai · iteracija +1Verifikacija

    Build ir testai patikrina konvertuotą kodą, o iteracijų skaičius padidėja vienetu. Rezultatai grįžta į paleidimo būseną.

  5. build · testai · iteracija +1VerifikacijaDuomenys: rezultatas · iteracijosTęsti · matuoti · daugiausia 3Kitas žingsnis

    Build sėkmė, testų įveikimo dalis ir iteracijų skaičius lemia kitą žingsnį.

  6. Tęsti · matuoti · daugiausia 3Kitas žingsnisPaleidimas · sprendimas: sėkmė · limitas · užstrigimasTaisyklių dalis · testai · aprėptisMatavimas

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

  7. Bazinė linija · nežinomi neišmatuotiPaleidimo būsenaDuomenys: palyginimas su bazine linijaTaisyklių dalis · testai · aprėptisMatavimas

    Matavimas skaito paleidimo būsenoje išsaugotą bazinę liniją. Tai nėra naujas bazinės linijos paleidimas.

  8. 5 priėmimo slenksčiaiMatavimasDuomenys: įvertinimasRezultatų kortelė · įvertinimas

    Sė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.

  1. build · testai · iteracija +1VerifikacijaDuomenys: rezultatas · iteracijosTęsti · matuoti · daugiausia 3Kitas žingsnis

    Build sėkmė, testų įveikimo dalis ir iteracijų skaičius lemia kitą žingsnį.

  2. Tęsti · matuoti · daugiausia 3Kitas žingsnisPaleidimas · sprendimas: nesėkmė · pakartojimasPriežasties įrodymai · 3 šaltiniai · POMIštirti prieš taisant

    Jei build nepavyko arba testų įveikimo dalis mažesnė nei 100 % ir iteracijų limitas (numatytasis – 3) nepasiektas, paleidimas pereina į taisymą.

  3. Priežasties įrodymai · 3 šaltiniai · POMIštirti prieš taisantStebėjimas · ataskaita: išsaugoti prieš taisymąKontrolinis taškas prieš taisymąAtkūrimo įrašai

    Prieš taisymą išsaugomas kontrolinis taškas. Tai best-effort: nepavykęs išsaugojimas taisymo nesustabdo, o išsaugojimas nėra sėkmės įrodymas.

  4. Priežasties įrodymai · 3 šaltiniai · POMIštirti prieš taisantDuomenys: įrodymai · sugrupuotos klaidosTaisyti žinomus šablonusDeterministinė pataisa

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

  5. Pakartotinio build patikraDeterministinė pataisaPaleidimas · sprendimas: praėjo · LLM praleistasbuild · testai · iteracija +1Verifikacija

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

  6. Pakartotinio build patikraDeterministinė pataisaNesėkmė · limitas: pakartotinis build nepavykoTaisymas su įrodymais · nurodymaisModelio taisymas

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

  7. Ankstesnė pataisa, ta pati klaidaAtkūrimo įrašaiDuomenys: ankstesnė pataisaTaisymas su įrodymais · nurodymaisModelio taisymas

    Ankstesnė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.

  8. Taisymas su įrodymais · nurodymaisModelio taisymasPaleidimas · sprendimas: patikrinti iš naujobuild · testai · iteracija +1Verifikacija

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

  1. Tęsti · matuoti · daugiausia 3Kitas žingsnisPaleidimas · sprendimas: sėkmė · limitas · užstrigimasTaisyklių dalis · testai · aprėptisMatavimas

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

  2. Bazinė linija · nežinomi neišmatuotiPaleidimo būsenaDuomenys: palyginimas su bazine linijaTaisyklių dalis · testai · aprėptisMatavimas

    Matavimas skaito paleidimo būsenoje išsaugotą bazinę liniją. Tai nėra naujas bazinės linijos paleidimas.

  3. 5 priėmimo slenksčiaiMatavimasDuomenys: įvertinimasRezultatų kortelė · įvertinimas

    Sė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.

  4. 5 priėmimo slenksčiaiMatavimasNesė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.

  5. Tęsti · matuoti · daugiausia 3Kitas žingsnisStebėjimas · ataskaita: išėjimas pasiekus limitą · užstrigusNesėkmės · užstrigimo ataskaita

    Paleidimas, 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.