Den oprindelige REODE-figur, bearbejdet: et smilende creme- og lyserødt axolotl-ansigt med marineblåt headset og cyanfarvede linser
Tilbage til salen

REODE

Code migration

Før rettelsen: den fælles årsag først.

En agent til kodemigrering af Java/Spring.

2026.03 — 2026.04

Arbejdsprojekt · migrerings- og verifikationssystem

  • CLIImplementeret · arbejdsprojekt

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, der holder reparationsbelæg adskilt fra accept.

Den oprindelige build-tilstand registreres, og regelbaseret konvertering anvendes, hvorefter belæg fra kilde og POM indsamles før reparation. Efter en models ændring kontrolleres build, test og testintegritet igen, og kørsler, der ender ved en grænse eller går i stå, rapporteres adskilt fra succes.

Den kombinerer regelbaseret konvertering med modelassisteret reparation og kontrollerer den ændrede kode med build og test. Et arbejdsprojekt.

REODE-arbejde i repositoryet; opgave for pinxlab 16. marts 2026 til 26. maj 2026

Et CLI-værktøj, der bruges på arbejdet.

Kort over reparationsløkken · ud fra private implementeringslogs
REODE's reparationsløkke for migreringDen oprindelige build-tilstand bevares som baseline, regelbaseret konvertering anvendes, og build og test verificerer resultatet. Ved fejl indsamles belæg fra kilde, annotationer og POM før enhver rettelse, og kendte mønstre rettes deterministisk og bygges igen. Hvis det nye build består, kaldes ingen model; hvis det fejler, reparerer en model med det indsamlede belæg og rettelsesinstrukser, og resultatet verificeres igen. Kørsler, der ender ved iterationsgrænsen eller går i stå, går videre til måling, men tælles ikke som succes, og scorecardet giver kun karakter, når alle fem acceptgates er bestået.Kilde · POMPrivat migreringsinputScorecard · karakterIkke en udrulningRapport om fejl · stilstandTælles ikke som succesKontrol af originalOprindelig tilstand · compileKørselstilstandBaseline · ukendte værdier ikke måltGendannelseslogsCheckpoint før rettelseTidligere rettelse, samme fejlKonverteringPlan → regelbaseret konverteringUdforsk før rettelseBelæg for årsag · 3 kilder · POMDeterministisk rettelseRet kendte mønstreKontrol af nyt buildModelreparationRet med belæg · instrukserVerifikationbuild · test · iteration +1Næste trinFortsæt · mål · højst 3MålingRegelandel · tests · dækning5 acceptgatesInput · baselineGendannelseslogsKonvertering · reparationVerifikation · afslutning1kilde · POM2oprindelig compile3 regelkonvertering · Oprindelig tilstand · compile → Plan → regelbaseret konvertering34build · test5resultat · iterationer6bestået · grænse · stilstand7sammenligning med baseline8 karaktergivning · 5 acceptgates → Scorecard · karakter81resultat · iterationer2 fejlet · nyt forsøg · Fortsæt · mål · højst 3 → Belæg for årsag · 3 kilder · POM23gem før rettelse4belæg · grupperede fejl5bestået · LLM sprunget over6nyt build fejlede7 tidligere rettelse · Tidligere rettelse, samme fejl → Ret med belæg · instrukser78verificér igen1bestået · grænse · stilstand2sammenligning med baseline3 karaktergivning · 5 acceptgates → Scorecard · karakter34slettet · udelukket · fejlet5afslutning ved grænse · stilstand

Regelkonvertering

Den oprindelige tilstand bevares som baseline; efter regelkonvertering verificerer build og test, og kørslen går videre til måling.

  1. Kilde · POMData: kilde · POMOprindelig tilstand · compileKontrol af original

    Tager den Java/Spring-kilde og POM, der skal migreres. Kundens kode og skærme vises ikke.

  2. Oprindelig tilstand · compileKontrol af originalData: oprindelig compileBaseline · ukendte værdier ikke måltKørselstilstand

    Før konverteringen vælges runtimen, og originalen kompileres, så et build, der allerede var i stykker, bevares i baseline. Standardværdier for test og dækning i baseline er ikke målinger.

  3. Oprindelig tilstand · compileKontrol af originalKørsel · vurdering: regelkonverteringPlan → regelbaseret konverteringKonvertering

    Kørselsgrafen går kontrol af original → konverteringsplan → regelbaseret konvertering → verifikation. Konverteringer, som regler kan bære, anvendes først.

  4. Plan → regelbaseret konverteringKonverteringKørsel · vurdering: build · testbuild · test · iteration +1Verifikation

    Build og test verificerer den konverterede kode, og iterationstallet stiger med én. Resultaterne vender tilbage til kørselstilstanden.

  5. build · test · iteration +1VerifikationData: resultat · iterationerFortsæt · mål · højst 3Næste trin

    Vellykket build, beståelsesrate for tests og iterationstallet afgør næste trin.

  6. Fortsæt · mål · højst 3Næste trinKørsel · vurdering: bestået · grænse · stilstandRegelandel · tests · dækningMåling

    Når både build og test består, iterationsgrænsen nås, eller der registreres stilstand (efter ét gendannelsesforsøg, hvis det ikke er prøvet endnu), går kørslen til måling. At gå til måling betyder ikke succes.

  7. Baseline · ukendte værdier ikke måltKørselstilstandData: sammenligning med baselineRegelandel · tests · dækningMåling

    Målingen læser den baseline, der er bevaret i kørselstilstanden. Det er ikke en ny baseline-kørsel.

  8. 5 acceptgatesMålingData: karaktergivningScorecard · karakter

    Vellykket build, en beståelsesrate for tests på 100%, en ændring i dækning på −5 eller bedre (kun når baseline er kendt), nul slettede tests, nul surefire-udelukkelser. En karakter gives kun, når alle fem består.

Årsagsbaseret reparation

Belæg indsamles før rettelse, og deterministiske rettelser kommer først. Hvis det nye build består, springes modellen over; ellers reparerer modellen med belæg og instrukser, og resultatet verificeres igen.

  1. build · test · iteration +1VerifikationData: resultat · iterationerFortsæt · mål · højst 3Næste trin

    Vellykket build, beståelsesrate for tests og iterationstallet afgør næste trin.

  2. Fortsæt · mål · højst 3Næste trinKørsel · vurdering: fejlet · nyt forsøgBelæg for årsag · 3 kilder · POMUdforsk før rettelse

    Hvis build fejlede, eller beståelsesraten for tests er under 100%, og iterationsgrænsen (som standard 3) ikke er nået, går kørslen til reparation.

  3. Belæg for årsag · 3 kilder · POMUdforsk før rettelseObservation · rapport: gem før rettelseCheckpoint før rettelseGendannelseslogs

    Et checkpoint gemmes før rettelsen. Det er best-effort: en mislykket lagring stopper ikke reparationen, og en lagring er ikke belæg for succes.

  4. Belæg for årsag · 3 kilder · POMUdforsk før rettelseData: belæg · grupperede fejlRet kendte mønstreDeterministisk rettelse

    Indsamler de fejlende Java-filer, de første linjer af op til tre kilder, indstillinger for annotationer, POM og annotation processor samt imports til dybde 2. En afgrænset prøve, ikke en forståelse af hele kodebasen.

  5. Kontrol af nyt buildDeterministisk rettelseKørsel · vurdering: bestået · LLM sprunget overbuild · test · iteration +1Verifikation

    Hvis en deterministisk rettelse af et kendt mønster (for eksempel Lombok-opsætningen) får det nye build til at bestå, kaldes ingen model. Kørslen vender stadig tilbage til verifikation, så dette er ikke endelig accept.

  6. Kontrol af nyt buildDeterministisk rettelseFejl · grænse: nyt build fejledeRet med belæg · instrukserModelreparation

    Hvis det nye build fejler, går det indsamlede belæg og rettelsesinstrukserne til modelreparation. Læsning af koden viser, at den fejltekst, der sendes med, er den oprindelige build-fejl, ikke det nye builds fejl, så det må ikke læses som »kun de resterende fejl sendes videre«. Ikke en defekt, der er reproduceret i en kørsel.

  7. Tidligere rettelse, samme fejlGendannelseslogsData: tidligere rettelseRet med belæg · instrukserModelreparation

    Tidligere rettelser registreret under samme fejlsignatur slås op og vedhæftes. En log, der føjes til inputtet, ikke modeltræning.

  8. Ret med belæg · instrukserModelreparationKørsel · vurdering: verificér igenbuild · test · iteration +1Verifikation

    Modellen retter via en struktureret architect/editor-sti, eller via en tool-use-prompt, når den sti ikke er tilgængelig eller er under gendannelse, og build og test verificerer igen. En models ændring er ikke i sig selv et bestået build.

Bestået kontra stilstand

En karakter kræver alle fem gates; slettede eller udelukkede tests og afslutninger ved grænse eller stilstand tælles ikke som succes.

  1. Fortsæt · mål · højst 3Næste trinKørsel · vurdering: bestået · grænse · stilstandRegelandel · tests · dækningMåling

    Når både build og test består, iterationsgrænsen nås, eller der registreres stilstand (efter ét gendannelsesforsøg, hvis det ikke er prøvet endnu), går kørslen til måling. At gå til måling betyder ikke succes.

  2. Baseline · ukendte værdier ikke måltKørselstilstandData: sammenligning med baselineRegelandel · tests · dækningMåling

    Målingen læser den baseline, der er bevaret i kørselstilstanden. Det er ikke en ny baseline-kørsel.

  3. 5 acceptgatesMålingData: karaktergivningScorecard · karakter

    Vellykket build, en beståelsesrate for tests på 100%, en ændring i dækning på −5 eller bedre (kun når baseline er kendt), nul slettede tests, nul surefire-udelukkelser. En karakter gives kun, når alle fem består.

  4. 5 acceptgatesMålingFejl · grænse: slettet · udelukket · fejletRapport om fejl · stilstand

    Bestået opnået ved at slette tests eller ved surefire-udelukkelser samt fejlede builds eller tests forbliver fejl. Kontrollerne for sletning og udelukkelse tæller nul, når Git eller POM ikke kan læses, så de er ikke bevis for, at enhver overtrædelse fanges.

  5. Fortsæt · mål · højst 3Næste trinObservation · rapport: afslutning ved grænse · stilstandRapport om fejl · stilstand

    En kørsel, der ender ved grænsen eller går i stå, går stadig gennem måling, men rapporteres ikke som succes. Det markerer, hvordan den rapporteres; det er ikke en genvej uden om måling.

Alle forbindelser med samme tykkelse. Vælg et flow for kun at fremhæve dets vej med nummererede trin.

  • Fuldt optrukket · retning for input, resultater og logs
  • Stiplet · kørsel, vurdering, anmodning
  • Lange prikker · observation og rapportering, adskilt fra vurdering
  • Korte streger · fejl, stop, grænse
  • Kraftig sort linje · det valgte flow; tal angiver rækkefølgen
  • Boks · kode- eller tilstandsgrænse, navngivet i overskriften
  • Indre chip · en komponent inden for grænsen
  • Prikket boks · uden for grænsen
  • Orange kontur · hvor en model træffer beslutninger
  • Pipelinetrin · reparation
  • Verifikation · routing · accept
  • Tilstand · logs
  • Udforsk før rettelse

Tegnet ud fra private implementerings- og udviklingslogs. Navnene er generiske offentlige navne; der vises ingen kodestier eller kundeoplysninger.

Input efter et fejlet nyt build
Modelreparationen modtager det indsamlede belæg og rettelsesinstrukserne, men den fejltekst, der sendes med, er den oprindelige build-fejl, ikke det nye builds fejl. Fastslået ved læsning af koden; ikke reproduceret i en kørsel, og kilden blev ikke ændret.
Gatenes begrænsninger
Hvis baseline for dækning er ukendt, springes den gate over. Surefire-kontrollen tæller udelukkelserne i den aktuelle POM, ikke forskellen fra baseline. Kontrollerne for sletning og udelukkelse tæller nul, når Git eller POM ikke kan læses.
Casen og dens tal
At omkring 40 setter-fejl blev sporet til én årsag, opsætningen af Lombok og POM, er en diagnose registreret dengang. Det er ikke et tal for gennemløb, nøjagtighed eller endelig levering.