Oriģinālais REODE tēls pilnveidotā veidā: smaidoša krēmkrāsas un rozā aksolotla seja ar tumši zilām austiņām un ciānkrāsas lēcām
Atpakaļ uz zāli

REODE

Code migration

Vispirms kopīgais cēlonis, tad labojums.

Java/Spring koda migrācijas aģents.

2026.03 — 2026.04

Darba projekts · migrācijas un verifikācijas sistēma

  • CLIImplementēts · darba projekts

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

Migrācijas cikls, kas labošanas pierādījumus tur atsevišķi no pieņemšanas.

Tiek reģistrēts sākotnējais būvēšanas stāvoklis un piemērota uz noteikumiem balstīta pārveidošana, pēc tam pirms labošanas tiek savākti pirmkoda un POM pierādījumi. Pēc modeļa labojuma būvēšana, testi un testu integritāte tiek pārbaudīti vēlreiz, un palaidieni, kas beidzas pie ierobežojuma vai iestrēgst, tiek ziņoti atsevišķi no panākumiem.

Tas apvieno uz noteikumiem balstītu pārveidošanu ar modeļa atbalstītu labošanu un pārbauda mainīto kodu ar būvēšanu un testiem. Darba projekts.

REODE darbs repozitorijā; pinxlab sadarbība 2026. gada 16. marts – 26. maijs

Darbā izmantots CLI rīks.

Labošanas cikla karte · pēc privātiem implementācijas ierakstiem
REODE migrācijas labošanas ciklsSākotnējais būvēšanas stāvoklis tiek saglabāts kā bāzlīnija, tiek piemērota uz noteikumiem balstīta pārveidošana, un būvēšana un testi verificē rezultātu. Kļūmes gadījumā pirms jebkāda labojuma tiek savākti pirmkoda, anotāciju un POM pierādījumi, un zināmi modeļi tiek deterministiski laboti un būvēti no jauna. Ja atkārtotā būvēšana izdodas, modelis netiek izsaukts; ja neizdodas, modelis labo ar savāktajiem pierādījumiem un labošanas norādījumiem, un rezultāts tiek verificēts vēlreiz. Palaidieni, kas beidzas pie iterāciju ierobežojuma vai iestrēgst, nonāk mērīšanā, bet netiek skaitīti kā panākums, un rezultātu karte piešķir atzīmi tikai tad, ja izturēti visi pieci pieņemšanas vārti.Pirmkods · POMPrivāta migrācijas ievadeRezultātu karte · atzīmeNav izvietošanaKļūmes · iestrēgšanas ziņojumsNetiek skaitīts kā panākumsSākotnējā pārbaudeSākotnējais stāvoklis · kompilēšanaPalaidiena stāvoklisBāzlīnija · nezināmie nav mērītiAtkopšanas ierakstiKontrolpunkts pirms labojumaAgrāks labojums, tā pati kļūdaPārveidošanaPlāns → uz noteikumiem balstīta pārveidošanaIzpēte pirms labošanasCēloņa pierādījumi · 3 avoti · POMDeterministisks labojumsZināmu modeļu labošanaAtkārtotās būvēšanas pārbaudeModeļa labošanaLabojums ar pierādījumiem · norādījumiemVerifikācijabūvēšana · testi · iterācija +1Nākamais solisTurpināt · mērīt · līdz 3MērījumsNoteikumu daļa · testi · pārklājums5 pieņemšanas vārtiIevade · bāzlīnijaAtkopšanas ierakstiPārveidošana · labošanaVerifikācija · iziešana1 pirmkods · POM · Pirmkods · POM → Sākotnējais stāvoklis · kompilēšana12sākotnējā kompilēšana3 noteikumu pārveidošana · Sākotnējais stāvoklis · kompilēšana → Plāns → uz noteikumiem balstīta pārveidošana34build · test5rezultāts · iterācijas6izturēts · ierobežojums · iestrēgšana7bāzlīnijas salīdzinājums8vērtēšana1rezultāts · iterācijas2 neizdevās · atkārtojums · Turpināt · mērīt · līdz 3 → Cēloņa pierādījumi · 3 avoti · POM23saglabāšana pirms labojuma4pierādījumi · grupētas kļūdas5izturēts · LLM izlaists6atkārtotā būvēšana neizdevās7 agrāks labojums · Agrāks labojums, tā pati kļūda → Labojums ar pierādījumiem · norādījumiem78verificēt vēlreiz1izturēts · ierobežojums · iestrēgšana2bāzlīnijas salīdzinājums3vērtēšana4dzēsts · izslēgts · neizdevies5iziešana pie ierobežojuma · iestrēgšanas

Noteikumu pārveidošana

Sākotnējais stāvoklis tiek saglabāts kā bāzlīnija; pēc noteikumu pārveidošanas būvēšana un testi verificē, un palaidiens turpinās līdz mērīšanai.

  1. Pirmkods · POMDati: pirmkods · POMSākotnējais stāvoklis · kompilēšanaSākotnējā pārbaude

    Pieņem migrējamo Java/Spring pirmkodu un POM. Klienta kods un ekrāni netiek rādīti.

  2. Sākotnējais stāvoklis · kompilēšanaSākotnējā pārbaudeDati: sākotnējā kompilēšanaBāzlīnija · nezināmie nav mērītiPalaidiena stāvoklis

    Pirms pārveidošanas tiek izvēlēta izpildvide un sākotnējais kods tiek kompilēts, tāpēc jau salauzta būvēšana paliek bāzlīnijā. Bāzlīnijas noklusējuma testu un pārklājuma vērtības nav mērījumi.

  3. Sākotnējais stāvoklis · kompilēšanaSākotnējā pārbaudeIzpilde · spriedums: noteikumu pārveidošanaPlāns → uz noteikumiem balstīta pārveidošanaPārveidošana

    Palaidiena grafs iet sākotnējā pārbaude → pārveidošanas plāns → uz noteikumiem balstīta pārveidošana → verifikācija. Pārveidojumi, ko var veikt ar noteikumiem, tiek piemēroti vispirms.

  4. Plāns → uz noteikumiem balstīta pārveidošanaPārveidošanaIzpilde · spriedums: build · testbūvēšana · testi · iterācija +1Verifikācija

    Būvēšana un testi verificē pārveidoto kodu, un iterāciju skaitītājs palielinās par vienu. Rezultāti atgriežas palaidiena stāvoklī.

  5. būvēšana · testi · iterācija +1VerifikācijaDati: rezultāts · iterācijasTurpināt · mērīt · līdz 3Nākamais solis

    Būvēšanas sekmes, testu izturēšanas rādītājs un iterāciju skaits nosaka nākamo soli.

  6. Turpināt · mērīt · līdz 3Nākamais solisIzpilde · spriedums: izturēts · ierobežojums · iestrēgšanaNoteikumu daļa · testi · pārklājumsMērījums

    Kad gan būvēšana, gan testi izdodas, sasniegts iterāciju ierobežojums vai konstatēta iestrēgšana (pēc viena atkopšanas mēģinājuma, ja tas vēl nav veikts), palaidiens pāriet uz mērīšanu. Pāreja uz mērīšanu nenozīmē panākumu.

  7. Bāzlīnija · nezināmie nav mērītiPalaidiena stāvoklisDati: bāzlīnijas salīdzinājumsNoteikumu daļa · testi · pārklājumsMērījums

    Mērīšana nolasa palaidiena stāvoklī saglabāto bāzlīniju. Tas nav jauns bāzlīnijas palaidiens.

  8. 5 pieņemšanas vārtiMērījumsDati: vērtēšanaRezultātu karte · atzīme

    Sekmīga būvēšana, 100% testu izturēšanas rādītājs, pārklājuma izmaiņa −5 vai labāka (tikai ja bāzlīnija zināma), nulle dzēstu testu, nulle surefire izslēgumu. Atzīme tiek piešķirta tikai tad, ja izturēti visi pieci.

Uz cēloni balstīta labošana

Pierādījumi tiek savākti pirms labošanas, un deterministiski labojumi nāk vispirms. Ja atkārtotā būvēšana izdodas, modelis tiek izlaists; ja ne, modelis labo ar pierādījumiem un norādījumiem, un rezultāts tiek verificēts vēlreiz.

  1. būvēšana · testi · iterācija +1VerifikācijaDati: rezultāts · iterācijasTurpināt · mērīt · līdz 3Nākamais solis

    Būvēšanas sekmes, testu izturēšanas rādītājs un iterāciju skaits nosaka nākamo soli.

  2. Turpināt · mērīt · līdz 3Nākamais solisIzpilde · spriedums: neizdevās · atkārtojumsCēloņa pierādījumi · 3 avoti · POMIzpēte pirms labošanas

    Ja būvēšana neizdevās vai testu izturēšanas rādītājs ir zem 100% un iterāciju ierobežojums (pēc noklusējuma 3) nav sasniegts, palaidiens pāriet uz labošanu.

  3. Cēloņa pierādījumi · 3 avoti · POMIzpēte pirms labošanasNovērošana · ziņojums: saglabāšana pirms labojumaKontrolpunkts pirms labojumaAtkopšanas ieraksti

    Pirms labojuma tiek saglabāts kontrolpunkts. Tas ir best-effort: neizdevusies saglabāšana neaptur labošanu, un saglabāšana nav panākuma pierādījums.

  4. Cēloņa pierādījumi · 3 avoti · POMIzpēte pirms labošanasDati: pierādījumi · grupētas kļūdasZināmu modeļu labošanaDeterministisks labojums

    Savāc kļūdainos Java failus, ne vairāk kā trīs pirmkoda failu sākuma rindas, anotāciju, POM un anotāciju procesora iestatījumus un importus līdz 2. dziļumam. Ierobežota izlase, nevis visas koda bāzes izpratne.

  5. Atkārtotās būvēšanas pārbaudeDeterministisks labojumsIzpilde · spriedums: izturēts · LLM izlaistsbūvēšana · testi · iterācija +1Verifikācija

    Ja zināma modeļa (piemēram, Lombok iestatījumu) deterministisks labojums ļauj atkārtotajai būvēšanai izdoties, modelis netiek izsaukts. Palaidiens tik un tā atgriežas verifikācijā, tāpēc tā nav galīgā pieņemšana.

  6. Atkārtotās būvēšanas pārbaudeDeterministisks labojumsKļūme · ierobežojums: atkārtotā būvēšana neizdevāsLabojums ar pierādījumiem · norādījumiemModeļa labošana

    Ja atkārtotā būvēšana neizdodas, savāktie pierādījumi un labošanas norādījumi nonāk modeļa labošanā. Lasot kodu, redzams, ka līdzi nodotais kļūdas teksts ir sākotnējā būvēšanas kļūda, nevis atkārtotās būvēšanas jaunā kļūda, tāpēc to nedrīkst lasīt kā „tiek nodotas tikai atlikušās kļūdas“. Tas nav palaidienā atveidots defekts.

  7. Agrāks labojums, tā pati kļūdaAtkopšanas ierakstiDati: agrāks labojumsLabojums ar pierādījumiem · norādījumiemModeļa labošana

    Agrāki labojumi, kas reģistrēti ar to pašu kļūdas parakstu, tiek uzmeklēti un pievienoti. Ievadei pievienots ieraksts, nevis modeļa apmācība.

  8. Labojums ar pierādījumiem · norādījumiemModeļa labošanaIzpilde · spriedums: verificēt vēlreizbūvēšana · testi · iterācija +1Verifikācija

    Modelis labo caur strukturētu architect/editor ceļu vai ar rīku lietošanas uzvedni, ja šis ceļš nav pieejams vai notiek atkopšana, un būvēšana un testi verificē vēlreiz. Modeļa labojums pats par sevi nav izturēta būvēšana.

Izturēšana pret iestrēgšanu

Atzīmei vajadzīgi visi pieci vārti; dzēsti vai izslēgti testi un iziešana pie ierobežojuma vai iestrēgšanas netiek skaitīti kā panākums.

  1. Turpināt · mērīt · līdz 3Nākamais solisIzpilde · spriedums: izturēts · ierobežojums · iestrēgšanaNoteikumu daļa · testi · pārklājumsMērījums

    Kad gan būvēšana, gan testi izdodas, sasniegts iterāciju ierobežojums vai konstatēta iestrēgšana (pēc viena atkopšanas mēģinājuma, ja tas vēl nav veikts), palaidiens pāriet uz mērīšanu. Pāreja uz mērīšanu nenozīmē panākumu.

  2. Bāzlīnija · nezināmie nav mērītiPalaidiena stāvoklisDati: bāzlīnijas salīdzinājumsNoteikumu daļa · testi · pārklājumsMērījums

    Mērīšana nolasa palaidiena stāvoklī saglabāto bāzlīniju. Tas nav jauns bāzlīnijas palaidiens.

  3. 5 pieņemšanas vārtiMērījumsDati: vērtēšanaRezultātu karte · atzīme

    Sekmīga būvēšana, 100% testu izturēšanas rādītājs, pārklājuma izmaiņa −5 vai labāka (tikai ja bāzlīnija zināma), nulle dzēstu testu, nulle surefire izslēgumu. Atzīme tiek piešķirta tikai tad, ja izturēti visi pieci.

  4. 5 pieņemšanas vārtiMērījumsKļūme · ierobežojums: dzēsts · izslēgts · neizdeviesKļūmes · iestrēgšanas ziņojums

    Izturējumi, kas panākti, dzēšot testus vai ar surefire izslēgumiem, kā arī neizdevušās būvēšanas vai testi paliek kļūmes. Dzēšanas un izslēgumu pārbaudes skaita nulli, ja Git vai POM nevar nolasīt, tāpēc tās nepierāda, ka tiek notverts katrs pārkāpums.

  5. Turpināt · mērīt · līdz 3Nākamais solisNovērošana · ziņojums: iziešana pie ierobežojuma · iestrēgšanasKļūmes · iestrēgšanas ziņojums

    Palaidiens, kas beidzas pie ierobežojuma vai iestrēgst, tik un tā iziet mērīšanu, bet netiek ziņots kā panākums. Tas norāda ziņošanas veidu; tas nav īsceļš garām mērīšanai.

Visi savienojumi ar vienādu svaru. Izvēlieties plūsmu, lai izceltu tikai tās ceļu ar numurētiem soļiem.

  • Nepārtraukta · ievades, rezultātu un ierakstu virziens
  • Raustīta · izpilde, spriedums, pieprasījums
  • Gari punkti · novērošana un ziņošana, nošķirti no sprieduma
  • Īsas svītras · kļūme, apstāšanās, ierobežojums
  • Bieza melna līnija · izvēlētā plūsma; skaitļi norāda secību
  • Rāmis · koda vai stāvokļa robeža, nosaukums galvenē
  • Iekšējā plāksnīte · šīs robežas komponents
  • Punktēts rāmis · ārpus šīs robežas
  • Oranža kontūra · vieta, kur lemj modelis
  • Konveijera soļi · labošana
  • Verifikācija · maršrutēšana · pieņemšana
  • Stāvoklis · ieraksti
  • Izpēte pirms labošanas

Zīmēts pēc privātiem implementācijas un izstrādes ierakstiem. Nosaukumi ir vispārīgi publiski nosaukumi; koda ceļi un klientu informācija netiek rādīti.

Ievade pēc neizdevušās atkārtotās būvēšanas
Modeļa labošana saņem savāktos pierādījumus un labošanas norādījumus, taču līdzi nodotais kļūdas teksts ir sākotnējā būvēšanas kļūda, nevis atkārtotās būvēšanas jaunā kļūda. Noteikts, lasot kodu; nav atveidots palaidienā, un pirmkods netika mainīts.
Vārtu ierobežojumi
Ja pārklājuma bāzlīnija nav zināma, šie vārti tiek izlaisti. Surefire pārbaude skaita pašreizējā POM izslēgumus, nevis atšķirību no bāzlīnijas. Dzēšanas un izslēgumu pārbaudes skaita nulli, ja Git vai POM nevar nolasīt.
Gadījums un tā skaitļi
Apmēram 40 setter kļūdu izsekošana līdz vienam cēlonim — Lombok un POM iestatījumiem — ir toreiz reģistrēta diagnoze. Tas nav caurlaidspējas, precizitātes vai galīgās piegādes rādītājs.