Den opprinnelige REODE-figuren, bearbeidet: et smilende krem- og rosafarget axolotlansikt med marineblått headset og cyanfargede linser
Tilbake til salen

REODE

Code migration

Før rettingen: den felles årsaken først.

En agent for kodemigrering av Java/Spring.

2026.03 — 2026.04

Arbeidsprosjekt · migrerings- og verifiseringssystem

  • CLIImplementert · arbeidsprosjekt

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

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.

Kart over reparasjonsløkken · ut fra private implementeringslogger
REODEs reparasjonsløkke for migreringDen opprinnelige byggtilstanden beholdes som baseline, regelbasert konvertering brukes, og build og test verifiserer resultatet. Ved feil samles belegg fra kilde, annotasjoner og POM inn før enhver retting, og kjente mønstre rettes deterministisk og bygges på nytt. Hvis det nye bygget består, kalles ingen modell; hvis det feiler, reparerer en modell med det innsamlede belegget og rettingsinstrukser, og resultatet verifiseres på nytt. Kjøringer som ender ved iterasjonsgrensen eller stopper opp, går videre til måling, men telles ikke som suksess, og scorecarden gir bare karakter når alle fem akseptportene er bestått.Kilde · POMPrivat migreringsinputScorecard · karakterIkke en utrullingRapport om feil · stillstandTelles ikke som suksessKontroll av originalOpprinnelig tilstand · compileKjøretilstandBaseline · ukjente verdier ikke måltGjenopprettingsloggerCheckpoint før rettingTidligere retting, samme feilKonverteringPlan → regelbasert konverteringUtforsk før rettingBelegg for årsak · 3 kilder · POMDeterministisk rettingRett kjente mønstreKontroll av nytt byggModellreparasjonRett med belegg · instrukserVerifiseringbuild · test · iterasjon +1Neste stegFortsett · mål · maks 3MålingRegelandel · tester · dekning5 akseptporterInput · baselineGjenopprettingsloggerKonvertering · reparasjonVerifisering · avslutning1kilde · POM2opprinnelig compile3 regelkonvertering · Opprinnelig tilstand · compile → Plan → regelbasert konvertering34build · test5resultat · iterasjoner6bestått · grense · stillstand7sammenligning med baseline8 karaktersetting · 5 akseptporter → Scorecard · karakter81resultat · iterasjoner2 feilet · nytt forsøk · Fortsett · mål · maks 3 → Belegg for årsak · 3 kilder · POM23lagre før retting4belegg · grupperte feil5bestått · LLM hoppet over6nytt bygg feilet7 tidligere retting · Tidligere retting, samme feil → Rett med belegg · instrukser78verifiser på nytt1bestått · grense · stillstand2sammenligning med baseline3 karaktersetting · 5 akseptporter → Scorecard · karakter34slettet · unntatt · feilet5avslutning ved grense · stillstand

Regelkonvertering

Den opprinnelige tilstanden beholdes som baseline; etter regelkonvertering verifiserer build og test, og kjøringen går videre til måling.

  1. Kilde · POMData: kilde · POMOpprinnelig tilstand · compileKontroll av original

    Tar Java/Spring-kilden og POM-en som skal migreres. Kundens kode og skjermer vises ikke.

  2. Opprinnelig tilstand · compileKontroll av originalData: opprinnelig compileBaseline · ukjente verdier ikke måltKjøretilstand

    Fø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.

  3. Opprinnelig tilstand · compileKontroll av originalKjøring · vurdering: regelkonverteringPlan → regelbasert konverteringKonvertering

    Kjøregrafen går kontroll av original → konverteringsplan → regelbasert konvertering → verifisering. Konverteringer som regler kan bære, brukes først.

  4. Plan → regelbasert konverteringKonverteringKjøring · vurdering: build · testbuild · test · iterasjon +1Verifisering

    Build og test verifiserer den konverterte koden, og iterasjonstallet øker med én. Resultatene går tilbake til kjøretilstanden.

  5. build · test · iterasjon +1VerifiseringData: resultat · iterasjonerFortsett · mål · maks 3Neste steg

    Vellykket bygg, beståttandel for tester og iterasjonstallet avgjør neste steg.

  6. Fortsett · mål · maks 3Neste stegKjøring · vurdering: bestått · grense · stillstandRegelandel · tester · dekningMåling

    Nå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.

  7. Baseline · ukjente verdier ikke måltKjøretilstandData: sammenligning med baselineRegelandel · tester · dekningMåling

    Målingen leser baselinen som er beholdt i kjøretilstanden. Det er ikke en ny baseline-kjøring.

  8. 5 akseptporterMålingData: karaktersettingScorecard · karakter

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

  1. build · test · iterasjon +1VerifiseringData: resultat · iterasjonerFortsett · mål · maks 3Neste steg

    Vellykket bygg, beståttandel for tester og iterasjonstallet avgjør neste steg.

  2. Fortsett · mål · maks 3Neste stegKjøring · vurdering: feilet · nytt forsøkBelegg for årsak · 3 kilder · POMUtforsk før retting

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

  3. Belegg for årsak · 3 kilder · POMUtforsk før rettingObservasjon · rapport: lagre før rettingCheckpoint før rettingGjenopprettingslogger

    Et checkpoint lagres før rettingen. Det er best-effort: en mislykket lagring stopper ikke reparasjonen, og en lagring er ikke belegg for suksess.

  4. Belegg for årsak · 3 kilder · POMUtforsk før rettingData: belegg · grupperte feilRett kjente mønstreDeterministisk retting

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

  5. Kontroll av nytt byggDeterministisk rettingKjøring · vurdering: bestått · LLM hoppet overbuild · test · iterasjon +1Verifisering

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

  6. Kontroll av nytt byggDeterministisk rettingFeil · grense: nytt bygg feiletRett med belegg · instrukserModellreparasjon

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

  7. Tidligere retting, samme feilGjenopprettingsloggerData: tidligere rettingRett med belegg · instrukserModellreparasjon

    Tidligere rettinger registrert under samme feilsignatur slås opp og legges ved. En logg som legges til inputen, ikke modelltrening.

  8. Rett med belegg · instrukserModellreparasjonKjøring · vurdering: verifiser på nyttbuild · test · iterasjon +1Verifisering

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

  1. Fortsett · mål · maks 3Neste stegKjøring · vurdering: bestått · grense · stillstandRegelandel · tester · dekningMåling

    Nå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.

  2. Baseline · ukjente verdier ikke måltKjøretilstandData: sammenligning med baselineRegelandel · tester · dekningMåling

    Målingen leser baselinen som er beholdt i kjøretilstanden. Det er ikke en ny baseline-kjøring.

  3. 5 akseptporterMålingData: karaktersettingScorecard · karakter

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

  4. 5 akseptporterMålingFeil · grense: slettet · unntatt · feiletRapport om feil · stillstand

    Bestå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.

  5. Fortsett · mål · maks 3Neste stegObservasjon · rapport: avslutning ved grense · stillstandRapport om feil · stillstand

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