
REODE
Code migration
Før rettingen: den felles årsaken først.
En agent for kodemigrering av Java/Spring.
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
En migreringsløkke som holder reparasjonsbelegg atskilt fra aksept.
Den opprinnelige byggtilstanden registreres og regelbasert konvertering brukes, og deretter samles belegg fra kilde og POM inn før reparasjon. Etter en modells endring kontrolleres build, test og testintegritet på nytt, og kjøringer som ender ved en grense eller stopper opp, rapporteres atskilt fra suksess.
Den kombinerer regelbasert konvertering med modellassistert reparasjon og kontrollerer den endrede koden med build og test. Et arbeidsprosjekt.
REODE-arbeid i repositoryet; oppdrag for pinxlab 16. mars 2026 til 26. mai 2026
Et CLI-verktøy som brukes i arbeidet.
Regelkonvertering
Den opprinnelige tilstanden beholdes som baseline; etter regelkonvertering verifiserer build og test, og kjøringen går videre til måling.
Kilde · POMData: kilde · POMOpprinnelig tilstand · compile
Kontroll av originalTar Java/Spring-kilden og POM-en som skal migreres. Kundens kode og skjermer vises ikke.
Opprinnelig tilstand · compile
Kontroll av originalData: opprinnelig compileBaseline · ukjente verdier ikke måltKjøretilstandFør konverteringen velges runtimen og originalen kompileres, slik at et bygg som allerede var ødelagt, beholdes i baselinen. Standardverdier for test og dekning i baselinen er ikke målinger.
Opprinnelig tilstand · compile
Kontroll av originalKjøring · vurdering: regelkonverteringPlan → regelbasert konverteringKonverteringKjøregrafen går kontroll av original → konverteringsplan → regelbasert konvertering → verifisering. Konverteringer som regler kan bære, brukes først.
Plan → regelbasert konvertering
KonverteringKjøring · vurdering: build · testbuild · test · iterasjon +1VerifiseringBuild og test verifiserer den konverterte koden, og iterasjonstallet øker med én. Resultatene går tilbake til kjøretilstanden.
build · test · iterasjon +1
VerifiseringData: resultat · iterasjonerFortsett · mål · maks 3Neste stegVellykket bygg, beståttandel for tester og iterasjonstallet avgjør neste steg.
Fortsett · mål · maks 3
Neste stegKjøring · vurdering: bestått · grense · stillstandRegelandel · tester · dekningMålingNår både build og test består, iterasjonsgrensen nås eller det oppdages stillstand (etter ett gjenopprettingsforsøk hvis det ikke er prøvd ennå), går kjøringen til måling. Å gå til måling betyr ikke suksess.
Baseline · ukjente verdier ikke målt
KjøretilstandData: sammenligning med baselineRegelandel · tester · dekningMålingMålingen leser baselinen som er beholdt i kjøretilstanden. Det er ikke en ny baseline-kjøring.
5 akseptporter
MålingData: karaktersettingScorecard · karakterVellykket bygg, en beståttandel for tester på 100%, en endring i dekning på −5 eller bedre (bare når baselinen er kjent), null slettede tester, null surefire-unntak. En karakter gis bare når alle fem består.
Årsaksbasert reparasjon
Belegg samles inn før retting, og deterministiske rettinger kommer først. Hvis det nye bygget består, hoppes modellen over; ellers reparerer modellen med belegg og instrukser, og resultatet verifiseres på nytt.
build · test · iterasjon +1
VerifiseringData: resultat · iterasjonerFortsett · mål · maks 3Neste stegVellykket bygg, beståttandel for tester og iterasjonstallet avgjør neste steg.
Fortsett · mål · maks 3
Neste stegKjøring · vurdering: feilet · nytt forsøkBelegg for årsak · 3 kilder · POMUtforsk før rettingHvis bygget feilet eller beståttandelen for tester er under 100%, og iterasjonsgrensen (3 som standard) ikke er nådd, går kjøringen til reparasjon.
Belegg for årsak · 3 kilder · POM
Utforsk før rettingObservasjon · rapport: lagre før rettingCheckpoint før rettingGjenopprettingsloggerEt checkpoint lagres før rettingen. Det er best-effort: en mislykket lagring stopper ikke reparasjonen, og en lagring er ikke belegg for suksess.
Belegg for årsak · 3 kilder · POM
Utforsk før rettingData: belegg · grupperte feilRett kjente mønstreDeterministisk rettingSamler inn de feilende Java-filene, de første linjene i opptil tre kilder, innstillinger for annotasjoner, POM og annotation processor samt imports til dybde 2. En avgrenset prøve, ikke en forståelse av hele kodebasen.
Kontroll av nytt bygg
Deterministisk rettingKjøring · vurdering: bestått · LLM hoppet overbuild · test · iterasjon +1VerifiseringHvis en deterministisk retting av et kjent mønster (for eksempel Lombok-oppsettet) får det nye bygget til å bestå, kalles ingen modell. Kjøringen går likevel tilbake til verifisering, så dette er ikke endelig aksept.
Kontroll av nytt bygg
Deterministisk rettingFeil · grense: nytt bygg feiletRett med belegg · instrukserModellreparasjonHvis det nye bygget feiler, går det innsamlede belegget og rettingsinstruksene til modellreparasjon. Lesing av koden viser at feilteksten som sendes med, er den opprinnelige build-feilen, ikke feilen fra det nye bygget, så dette må ikke leses som «bare de gjenværende feilene sendes videre». Ikke en defekt som er reprodusert i en kjøring.
Tidligere retting, samme feil
GjenopprettingsloggerData: tidligere rettingRett med belegg · instrukserModellreparasjonTidligere rettinger registrert under samme feilsignatur slås opp og legges ved. En logg som legges til inputen, ikke modelltrening.
Rett med belegg · instrukser
ModellreparasjonKjøring · vurdering: verifiser på nyttbuild · test · iterasjon +1VerifiseringModellen retter via en strukturert architect/editor-sti, eller via en tool-use-prompt når den stien ikke er tilgjengelig eller er under gjenoppretting, og build og test verifiserer på nytt. En modells endring er ikke i seg selv et bestått bygg.
Bestått kontra stillstand
En karakter krever alle fem porter; slettede eller unntatte tester og avslutninger ved grense eller stillstand telles ikke som suksess.
Fortsett · mål · maks 3
Neste stegKjøring · vurdering: bestått · grense · stillstandRegelandel · tester · dekningMålingNår både build og test består, iterasjonsgrensen nås eller det oppdages stillstand (etter ett gjenopprettingsforsøk hvis det ikke er prøvd ennå), går kjøringen til måling. Å gå til måling betyr ikke suksess.
Baseline · ukjente verdier ikke målt
KjøretilstandData: sammenligning med baselineRegelandel · tester · dekningMålingMålingen leser baselinen som er beholdt i kjøretilstanden. Det er ikke en ny baseline-kjøring.
5 akseptporter
MålingData: karaktersettingScorecard · karakterVellykket bygg, en beståttandel for tester på 100%, en endring i dekning på −5 eller bedre (bare når baselinen er kjent), null slettede tester, null surefire-unntak. En karakter gis bare når alle fem består.
5 akseptporter
MålingFeil · grense: slettet · unntatt · feiletRapport om feil · stillstandBestått oppnådd ved å slette tester eller ved surefire-unntak, og mislykkede bygg eller tester, forblir feil. Kontrollene for sletting og unntak teller null når Git eller POM ikke kan leses, så de er ikke bevis for at alle brudd fanges opp.
Fortsett · mål · maks 3
Neste stegObservasjon · rapport: avslutning ved grense · stillstandRapport om feil · stillstandEn kjøring som ender ved grensen eller stopper opp, går likevel gjennom måling, men rapporteres ikke som suksess. Det markerer hvordan den rapporteres; det er ikke en snarvei forbi målingen.
Alle forbindelser med samme tykkelse. Velg en flyt for å fremheve bare dens vei, med nummererte steg.
- Heltrukket · retning for input, resultater og logger
- Stiplet · kjøring, vurdering, forespørsel
- Lange prikker · observasjon og rapportering, atskilt fra vurdering
- Korte streker · feil, stopp, grense
- Kraftig svart linje · den valgte flyten; tallene angir rekkefølgen
- Boks · kode- eller tilstandsgrense, navngitt i overskriften
- Indre chip · en komponent innenfor grensen
- Prikket boks · utenfor grensen
- Oransje kontur · der en modell tar beslutninger
- Pipelinesteg · reparasjon
- Verifisering · ruting · aksept
- Tilstand · logger
- Utforsk før retting
Tegnet ut fra private implementerings- og utviklingslogger. Navnene er generiske offentlige navn; ingen kodestier eller kundeopplysninger vises.
- Input etter et mislykket nytt bygg
- Modellreparasjonen mottar det innsamlede belegget og rettingsinstruksene, men feilteksten som sendes med, er den opprinnelige build-feilen, ikke feilen fra det nye bygget. Fastslått ved lesing av koden; ikke reprodusert i en kjøring, og kildekoden ble ikke endret.
- Portenes begrensninger
- Hvis baselinen for dekning er ukjent, hoppes den porten over. Surefire-kontrollen teller unntakene i den gjeldende POM-en, ikke forskjellen fra baselinen. Kontrollene for sletting og unntak teller null når Git eller POM ikke kan leses.
- Caset og tallene
- At rundt 40 setter-feil ble sporet til én årsak, oppsettet av Lombok og POM, er en diagnose registrert den gangen. Det er ikke et tall for gjennomstrømning, nøyaktighet eller endelig levering.