
REODE
Code migration
Vispirms kopīgais cēlonis, tad labojums.
Java/Spring koda migrācijas aģents.
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
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.
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.
Pirmkods · POMDati: pirmkods · POMSākotnējais stāvoklis · kompilēšana
Sākotnējā pārbaudePieņem migrējamo Java/Spring pirmkodu un POM. Klienta kods un ekrāni netiek rādīti.
Sākotnējais stāvoklis · kompilēšana
Sākotnējā pārbaudeDati: sākotnējā kompilēšanaBāzlīnija · nezināmie nav mērītiPalaidiena stāvoklisPirms 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.
Sākotnējais stāvoklis · kompilēšana
Sākotnējā pārbaudeIzpilde · spriedums: noteikumu pārveidošanaPlāns → uz noteikumiem balstīta pārveidošanaPārveidošanaPalaidiena 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.
Plāns → uz noteikumiem balstīta pārveidošana
PārveidošanaIzpilde · spriedums: build · testbūvēšana · testi · iterācija +1VerifikācijaBū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ī.
būvēšana · testi · iterācija +1
VerifikācijaDati: rezultāts · iterācijasTurpināt · mērīt · līdz 3Nākamais solisBūvēšanas sekmes, testu izturēšanas rādītājs un iterāciju skaits nosaka nākamo soli.
Turpināt · mērīt · līdz 3
Nākamais solisIzpilde · spriedums: izturēts · ierobežojums · iestrēgšanaNoteikumu daļa · testi · pārklājumsMērījumsKad 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.
Bāzlīnija · nezināmie nav mērīti
Palaidiena stāvoklisDati: bāzlīnijas salīdzinājumsNoteikumu daļa · testi · pārklājumsMērījumsMērīšana nolasa palaidiena stāvoklī saglabāto bāzlīniju. Tas nav jauns bāzlīnijas palaidiens.
5 pieņemšanas vārti
MērījumsDati: vērtēšanaRezultātu karte · atzīmeSekmī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.
būvēšana · testi · iterācija +1
VerifikācijaDati: rezultāts · iterācijasTurpināt · mērīt · līdz 3Nākamais solisBūvēšanas sekmes, testu izturēšanas rādītājs un iterāciju skaits nosaka nākamo soli.
Turpināt · mērīt · līdz 3
Nākamais solisIzpilde · spriedums: neizdevās · atkārtojumsCēloņa pierādījumi · 3 avoti · POMIzpēte pirms labošanasJa 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.
Cēloņa pierādījumi · 3 avoti · POM
Izpēte pirms labošanasNovērošana · ziņojums: saglabāšana pirms labojumaKontrolpunkts pirms labojumaAtkopšanas ierakstiPirms labojuma tiek saglabāts kontrolpunkts. Tas ir best-effort: neizdevusies saglabāšana neaptur labošanu, un saglabāšana nav panākuma pierādījums.
Cēloņa pierādījumi · 3 avoti · POM
Izpēte pirms labošanasDati: pierādījumi · grupētas kļūdasZināmu modeļu labošanaDeterministisks labojumsSavā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.
Atkārtotās būvēšanas pārbaude
Deterministisks labojumsIzpilde · spriedums: izturēts · LLM izlaistsbūvēšana · testi · iterācija +1VerifikācijaJa 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.
Atkārtotās būvēšanas pārbaude
Deterministisks labojumsKļūme · ierobežojums: atkārtotā būvēšana neizdevāsLabojums ar pierādījumiem · norādījumiemModeļa labošanaJa 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.
Agrāks labojums, tā pati kļūda
Atkopšanas ierakstiDati: agrāks labojumsLabojums ar pierādījumiem · norādījumiemModeļa labošanaAgrā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.
Labojums ar pierādījumiem · norādījumiem
Modeļa labošanaIzpilde · spriedums: verificēt vēlreizbūvēšana · testi · iterācija +1VerifikācijaModelis 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.
Turpināt · mērīt · līdz 3
Nākamais solisIzpilde · spriedums: izturēts · ierobežojums · iestrēgšanaNoteikumu daļa · testi · pārklājumsMērījumsKad 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.
Bāzlīnija · nezināmie nav mērīti
Palaidiena stāvoklisDati: bāzlīnijas salīdzinājumsNoteikumu daļa · testi · pārklājumsMērījumsMērīšana nolasa palaidiena stāvoklī saglabāto bāzlīniju. Tas nav jauns bāzlīnijas palaidiens.
5 pieņemšanas vārti
MērījumsDati: vērtēšanaRezultātu karte · atzīmeSekmī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.
5 pieņemšanas vārti
MērījumsKļūme · ierobežojums: dzēsts · izslēgts · neizdeviesKļūmes · iestrēgšanas ziņojumsIzturē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.
Turpināt · mērīt · līdz 3
Nākamais solisNovērošana · ziņojums: iziešana pie ierobežojuma · iestrēgšanasKļūmes · iestrēgšanas ziņojumsPalaidiens, 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.