
REODE
Code migration
Ensin yhteinen syy, sitten korjaus.
Java/Spring-koodin migraatioagentti.
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
Migraatiosilmukka, joka pitää korjauksen näytön erillään hyväksynnästä.
Alkuperäinen koontitila kirjataan ja sääntöpohjainen muunnos sovelletaan, minkä jälkeen lähdekoodi- ja POM-näyttö kerätään ennen korjausta. Mallin muokkauksen jälkeen koonti, testit ja testien eheys tarkistetaan uudelleen, ja rajaan tai jumiutumiseen päättyneet ajot raportoidaan erillään onnistumisista.
Se yhdistää sääntöpohjaisen muunnoksen mallin avustamaan korjaukseen ja tarkistaa muutetun koodin koonnilla ja testeillä. Työprojekti.
REODE-työ repositoriossa; pinxlab-toimeksianto 16.3.2026–26.5.2026
Työssä käytetty CLI-työkalu.
Sääntömuunnos
Alkuperäinen tila säilytetään lähtötasona; sääntömuunnoksen jälkeen koonti ja testit todentavat, ja ajo etenee mittaukseen.
Lähdekoodi · POMData: lähdekoodi · POMAlkuperäinen tila · käännös
Alkuperäisen tarkistusOttaa siirrettävän Java/Spring-lähdekoodin ja POMin. Asiakkaan koodia ja näkymiä ei näytetä.
Alkuperäinen tila · käännös
Alkuperäisen tarkistusData: alkuperäinen käännösLähtötaso · tuntemattomat mittaamattaAjon tilaEnnen muunnosta valitaan ajoympäristö ja alkuperäinen käännetään, joten jo valmiiksi rikkinäinen koonti säilyy lähtötasossa. Lähtötason oletusarvoiset testi- ja kattavuusarvot eivät ole mittauksia.
Alkuperäinen tila · käännös
Alkuperäisen tarkistusSuoritus · arvio: sääntömuunnosSuunnitelma → sääntöpohjainen muunnosMuunnosAjograafi kulkee alkuperäisen tarkistus → muunnossuunnitelma → sääntöpohjainen muunnos → todentaminen. Sääntöjen hoidettavissa olevat muunnokset sovelletaan ensin.
Suunnitelma → sääntöpohjainen muunnos
MuunnosSuoritus · arvio: build · testkoonti · testit · iteraatio +1TodentaminenKoonti ja testit todentavat muunnetun koodin, ja iteraatiolaskuri kasvaa yhdellä. Tulokset palaavat ajon tilaan.
koonti · testit · iteraatio +1
TodentaminenData: tulos · iteraatiotJatko · mittaus · enintään 3Seuraava vaiheKoonnin onnistuminen, testien läpäisyaste ja iteraatioiden määrä päättävät seuraavan vaiheen.
Jatko · mittaus · enintään 3
Seuraava vaiheSuoritus · arvio: läpi · raja · jumiutuminenSääntöjen osuus · testit · kattavuusMittausKun sekä koonti että testit menevät läpi, iteraatioraja saavutetaan tai jumiutuminen havaitaan (yhden palautusyrityksen jälkeen, jos sitä ei ole vielä tehty), ajo siirtyy mittaukseen. Mittaukseen siirtyminen ei tarkoita onnistumista.
Lähtötaso · tuntemattomat mittaamatta
Ajon tilaData: lähtötasovertailuSääntöjen osuus · testit · kattavuusMittausMittaus lukee ajon tilaan säilytetyn lähtötason. Se ei ole uusi lähtötasoajo.
5 hyväksymisporttia
MittausData: arvosteluTuloskortti · arvosanaOnnistunut koonti, 100 %:n testien läpäisyaste, kattavuuden muutos −5 tai parempi (vain kun lähtötaso tunnetaan), nolla poistettua testiä, nolla surefire-poissulkua. Arvosana annetaan vain, kun kaikki viisi läpäistään.
Syypohjainen korjaus
Näyttö kerätään ennen korjausta ja deterministiset korjaukset tulevat ensin. Jos uudelleenkoonti menee läpi, malli ohitetaan; jos ei, malli korjaa näytön ja ohjeiden avulla ja tulos todennetaan uudelleen.
koonti · testit · iteraatio +1
TodentaminenData: tulos · iteraatiotJatko · mittaus · enintään 3Seuraava vaiheKoonnin onnistuminen, testien läpäisyaste ja iteraatioiden määrä päättävät seuraavan vaiheen.
Jatko · mittaus · enintään 3
Seuraava vaiheSuoritus · arvio: epäonnistui · uusintaSyyn näyttö · 3 lähdettä · POMTutki ennen korjaustaJos koonti epäonnistui tai testien läpäisyaste on alle 100 % eikä iteraatioraja (oletuksena 3) ole täynnä, ajo siirtyy korjaukseen.
Syyn näyttö · 3 lähdettä · POM
Tutki ennen korjaustaHavainnointi · raportti: tallennus ennen korjaustaTarkistuspiste ennen korjaustaPalautuskirjauksetEnnen korjausta tallennetaan tarkistuspiste. Se on best-effort: epäonnistunut tallennus ei pysäytä korjausta, eikä tallennus ole näyttöä onnistumisesta.
Syyn näyttö · 3 lähdettä · POM
Tutki ennen korjaustaData: näyttö · ryhmitellyt virheetTunnettujen kaavojen korjausDeterministinen korjausKerää epäonnistuvat Java-tiedostot, enintään kolmen lähdetiedoston alkurivit, annotaatio-, POM- ja annotaatioprosessoriasetukset sekä importit syvyyteen 2 asti. Rajattu otos, ei koko koodikannan ymmärtämistä.
Uudelleenkoonnin tarkistus
Deterministinen korjausSuoritus · arvio: läpi · LLM ohitettukoonti · testit · iteraatio +1TodentaminenJos tunnetun kaavan (esimerkiksi Lombok-asetusten) deterministinen korjaus saa uudelleenkoonnin läpi, mallia ei kutsuta. Ajo palaa silti todentamiseen, joten tämä ei ole lopullinen hyväksyntä.
Uudelleenkoonnin tarkistus
Deterministinen korjausEpäonnistuminen · raja: uudelleenkoonti epäonnistuiKorjaus näytön · ohjeiden avullaMallikorjausJos uudelleenkoonti epäonnistuu, kerätty näyttö ja korjausohjeet menevät mallikorjaukselle. Koodia lukemalla näkyy, että mukana välitetty virheteksti on alkuperäinen koontivirhe, ei uudelleenkoonnin uusi virhe, joten tätä ei saa lukea muodossa ”vain jäljellä olevat virheet välitetään”. Kyse ei ole ajossa toistetusta viasta.
Aiempi korjaus, sama virhe
PalautuskirjauksetData: aiempi korjausKorjaus näytön · ohjeiden avullaMallikorjausSamalla virheallekirjoituksella kirjatut aiemmat korjaukset haetaan ja liitetään. Syötteeseen lisätty kirjaus, ei mallin koulutusta.
Korjaus näytön · ohjeiden avulla
MallikorjausSuoritus · arvio: uusi todentaminenkoonti · testit · iteraatio +1TodentaminenMalli korjaa jäsennellyn architect/editor-polun kautta tai työkalujen käytön kehotteella, kun tuo polku ei ole käytettävissä tai on palautumassa, ja koonti ja testit todentavat uudelleen. Mallin muokkaus ei itsessään ole läpäisevä koonti.
Läpäisy vai jumiutuminen
Arvosana vaatii kaikki viisi porttia; poistetut tai poissuljetut testit sekä raja- tai jumiutumispoistumiset eivät ole onnistumisia.
Jatko · mittaus · enintään 3
Seuraava vaiheSuoritus · arvio: läpi · raja · jumiutuminenSääntöjen osuus · testit · kattavuusMittausKun sekä koonti että testit menevät läpi, iteraatioraja saavutetaan tai jumiutuminen havaitaan (yhden palautusyrityksen jälkeen, jos sitä ei ole vielä tehty), ajo siirtyy mittaukseen. Mittaukseen siirtyminen ei tarkoita onnistumista.
Lähtötaso · tuntemattomat mittaamatta
Ajon tilaData: lähtötasovertailuSääntöjen osuus · testit · kattavuusMittausMittaus lukee ajon tilaan säilytetyn lähtötason. Se ei ole uusi lähtötasoajo.
5 hyväksymisporttia
MittausData: arvosteluTuloskortti · arvosanaOnnistunut koonti, 100 %:n testien läpäisyaste, kattavuuden muutos −5 tai parempi (vain kun lähtötaso tunnetaan), nolla poistettua testiä, nolla surefire-poissulkua. Arvosana annetaan vain, kun kaikki viisi läpäistään.
5 hyväksymisporttia
MittausEpäonnistuminen · raja: poistettu · poissuljettu · epäonnistunutEpäonnistumis- · jumiutumisraporttiTestejä poistamalla tai surefire-poissuluilla saadut läpäisyt sekä epäonnistuneet koonnit tai testit pysyvät epäonnistumisina. Poisto- ja poissulkutarkistukset laskevat nollan, kun Gitiä tai POMia ei voi lukea, joten ne eivät todista, että jokainen rikkomus havaitaan.
Jatko · mittaus · enintään 3
Seuraava vaiheHavainnointi · raportti: poistuminen rajaan · jumiutumiseenEpäonnistumis- · jumiutumisraporttiRajaan päättyvä tai jumiutuva ajo käy silti läpi mittauksen, mutta sitä ei raportoida onnistumisena. Tämä merkitsee raportointitavan; se ei ole oikotie mittauksen ohi.
Kaikki yhteydet samalla painolla. Valitse virta, niin vain sen polku korostuu numeroiduin vaihein.
- Yhtenäinen · syötteiden, tulosten ja kirjausten suunta
- Katkoviiva · suoritus, arvio, pyyntö
- Pitkät pisteet · havainnointi ja raportointi, erillään arviosta
- Lyhyet katkot · epäonnistuminen, pysähdys, raja
- Paksu musta viiva · valittu virta; numerot kertovat järjestyksen
- Laatikko · koodin tai tilan raja, nimi otsakkeessa
- Sisälaatta · rajan komponentti
- Pisteviivalaatikko · rajan ulkopuolella
- Oranssi ääriviiva · kohta, jossa malli päättää
- Putken vaiheet · korjaus
- Todentaminen · reititys · hyväksyntä
- Tila · kirjaukset
- Tutki ennen korjausta
Piirretty yksityisistä toteutus- ja kehityskirjauksista. Nimet ovat yleisiä julkisia nimiä; koodipolkuja tai asiakastietoja ei näytetä.
- Syöte epäonnistuneen uudelleenkoonnin jälkeen
- Mallikorjaus saa kerätyn näytön ja korjausohjeet, mutta mukana välitetty virheteksti on alkuperäinen koontivirhe, ei uudelleenkoonnin uusi virhe. Todettu koodia lukemalla; ei toistettu ajossa, eikä lähdekoodia muutettu.
- Porttien rajat
- Jos kattavuuden lähtötasoa ei tunneta, tuo portti ohitetaan. Surefire-tarkistus laskee nykyisen POMin poissulut, ei eroa lähtötasoon. Poisto- ja poissulkutarkistukset laskevat nollan, kun Gitiä tai POMia ei voi lukea.
- Tapaus ja sen luvut
- Noin 40 setter-virheen jäljittäminen yhteen syyhyn, Lombok- ja POM-asetuksiin, on silloin kirjattu diagnoosi. Se ei ole läpimeno-, tarkkuus- tai lopullinen toimitusluku.