Personajul REODE original, rafinat: un chip zâmbitor de axolotl crem cu roz, cu căști bleumarin și lentile cyan
Înapoi în sală

REODE

Code migration

Înainte de corectare, mai întâi cauza comună.

Un agent de migrare a codului Java/Spring.

2026.03 — 2026.04

Proiect de lucru · sistem de migrare și verificare

  • CLIImplementat · proiect de lucru

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

O buclă de migrare care ține dovezile reparării separat de acceptare.

Starea build-ului original este înregistrată și se aplică conversia bazată pe reguli, apoi se adună dovezi din surse și POM înainte de reparare. După editarea unui model, build-ul, testele și integritatea testelor sunt verificate din nou, iar rulările care se încheie la o limită sau prin blocaj sunt raportate separat de succes.

Combină conversia bazată pe reguli cu repararea asistată de model și verifică codul modificat prin build și teste. Un proiect de lucru.

Lucrul la REODE din depozit; colaborarea cu pinxlab: 16 martie 2026 – 26 mai 2026

Un instrument CLI folosit la lucru.

Harta buclei de reparare · după înregistrări private de implementare
Bucla de reparare a migrării REODEStarea build-ului original este păstrată ca referință, se aplică conversia bazată pe reguli, iar build-ul și testele verifică rezultatul. La eșec, înainte de orice corecție se adună dovezi din surse, adnotări și POM, iar tiparele cunoscute sunt corectate determinist și reconstruite. Dacă reconstrucția trece, nu se apelează niciun model; dacă eșuează, un model repară cu dovezile adunate și instrucțiunile de corectare, iar rezultatul este verificat din nou. Rulările care se încheie la limita de iterații sau prin blocaj trec la măsurare, dar nu sunt socotite reușite, iar scorecardul acordă o notă doar când trec toate cele cinci porți de acceptare.Sursă · POMIntrare privată de migrareScorecard · notăNu este o implementareRaport de eșec · blocajNu este socotit reușitVerificarea originaluluiStarea originalului · compilareStarea rulăriiReferință · necunoscutele nemăsurateÎnregistrări de recuperarePunct de control înainte de corectareCorecție anterioară, aceeași eroareConversiePlan → conversie bazată pe reguliExplorare înainte de corectareDovezi despre cauză · 3 surse · POMCorecție deterministăCorectarea tiparelor cunoscuteVerificarea reconstrucțieiReparare prin modelCorectare cu dovezi · instrucțiuniVerificarebuild · teste · iterație +1Pasul următorContinuare · măsurare · max. 3MăsurarePonderea regulilor · teste · acoperire5 porți de acceptareIntrare · referințăÎnregistrări de recuperareConversie · reparareVerificare · ieșire1sursă · POM2compilarea originalului3 conversie pe bază de reguli · Starea originalului · compilare → Plan → conversie bazată pe reguli34build · test5rezultat · iterații6trecere · limită · blocaj7comparație cu referința8notare1rezultat · iterații2 eșuat · reîncercare · Continuare · măsurare · max. 3 → Dovezi despre cauză · 3 surse · POM23salvare înainte de corectare4dovezi · erori grupate5trecut · LLM omis6reconstrucție eșuată7 corecție anterioară · Corecție anterioară, aceeași eroare → Corectare cu dovezi · instrucțiuni78verificare din nou1trecere · limită · blocaj2comparație cu referința3notare4șterse · excluse · eșuate5ieșire la limită · blocaj

Conversie pe bază de reguli

Starea originală este păstrată ca referință; după conversia pe bază de reguli, build-ul și testele verifică, iar rularea continuă până la măsurare.

  1. Sursă · POMDate: sursă · POMStarea originalului · compilareVerificarea originalului

    Preia sursa Java/Spring și POM-ul de migrat. Codul și ecranele clienților nu sunt afișate.

  2. Starea originalului · compilareVerificarea originaluluiDate: compilarea originaluluiReferință · necunoscutele nemăsurateStarea rulării

    Înainte de conversie, se alege runtime-ul și se compilează originalul, astfel încât un build deja stricat este păstrat în referință. Valorile implicite ale testelor și acoperirii din referință nu sunt măsurători.

  3. Starea originalului · compilareVerificarea originaluluiRulare · judecată: conversie pe bază de reguliPlan → conversie bazată pe reguliConversie

    Graful rulării merge: verificarea originalului → planul conversiei → conversie bazată pe reguli → verificare. Conversiile pe care le pot duce regulile sunt aplicate mai întâi.

  4. Plan → conversie bazată pe reguliConversieRulare · judecată: build · testbuild · teste · iterație +1Verificare

    Build-ul și testele verifică codul convertit, iar numărul de iterații crește cu unu. Rezultatele revin în starea rulării.

  5. build · teste · iterație +1VerificareDate: rezultat · iterațiiContinuare · măsurare · max. 3Pasul următor

    Succesul build-ului, rata de trecere a testelor și numărul de iterații decid pasul următor.

  6. Continuare · măsurare · max. 3Pasul următorRulare · judecată: trecere · limită · blocajPonderea regulilor · teste · acoperireMăsurare

    Când build-ul și testele trec, se atinge limita de iterații sau este detectat un blocaj (după o încercare de recuperare, dacă nu a fost făcută deja), rularea merge la măsurare. Trecerea la măsurare nu înseamnă succes.

  7. Referință · necunoscutele nemăsurateStarea rulăriiDate: comparație cu referințaPonderea regulilor · teste · acoperireMăsurare

    Măsurarea citește referința păstrată în starea rulării. Nu este o nouă rulare de referință.

  8. 5 porți de acceptareMăsurareDate: notareScorecard · notă

    Build reușit, o rată de trecere a testelor de 100%, o schimbare a acoperirii de −5 sau mai bună (doar când referința este cunoscută), zero teste șterse, zero excluderi surefire. O notă se acordă doar când toate cele cinci trec.

Reparare pe baza cauzei

Dovezile sunt adunate înainte de corectare, iar corecțiile deterministe vin mai întâi. Dacă reconstrucția trece, modelul este omis; dacă nu, modelul repară cu dovezi și instrucțiuni, iar rezultatul este verificat din nou.

  1. build · teste · iterație +1VerificareDate: rezultat · iterațiiContinuare · măsurare · max. 3Pasul următor

    Succesul build-ului, rata de trecere a testelor și numărul de iterații decid pasul următor.

  2. Continuare · măsurare · max. 3Pasul următorRulare · judecată: eșuat · reîncercareDovezi despre cauză · 3 surse · POMExplorare înainte de corectare

    Dacă build-ul a eșuat sau rata de trecere a testelor este sub 100% și limita de iterații (implicit 3) nu a fost atinsă, rularea merge la reparare.

  3. Dovezi despre cauză · 3 surse · POMExplorare înainte de corectareObservare · raport: salvare înainte de corectarePunct de control înainte de corectareÎnregistrări de recuperare

    Un punct de control este salvat înainte de corectare. Este fără garanție: o salvare eșuată nu oprește repararea, iar o salvare nu este o dovadă de succes.

  4. Dovezi despre cauză · 3 surse · POMExplorare înainte de corectareDate: dovezi · erori grupateCorectarea tiparelor cunoscuteCorecție deterministă

    Colectează fișierele Java cu erori, primele rânduri din cel mult trei surse, setările de adnotări, POM și procesor de adnotări și importurile până la adâncimea 2. Un eșantion limitat, nu o înțelegere a întregii baze de cod.

  5. Verificarea reconstrucțieiCorecție deterministăRulare · judecată: trecut · LLM omisbuild · teste · iterație +1Verificare

    Dacă o corecție deterministă a unui tipar cunoscut (de exemplu configurarea Lombok) face reconstrucția să treacă, nu se apelează niciun model. Rularea revine totuși la verificare, deci aceasta nu este acceptarea finală.

  6. Verificarea reconstrucțieiCorecție deterministăEșec · limită: reconstrucție eșuatăCorectare cu dovezi · instrucțiuniReparare prin model

    Dacă reconstrucția eșuează, dovezile adunate și instrucțiunile de corectare merg la repararea prin model. Din cod reiese că textul erorii transmis este eroarea build-ului original, nu noua eroare a reconstrucției, așa că nu trebuie citit ca „sunt transmise doar erorile rămase”. Nu este un defect reprodus într-o rulare.

  7. Corecție anterioară, aceeași eroareÎnregistrări de recuperareDate: corecție anterioarăCorectare cu dovezi · instrucțiuniReparare prin model

    Corecțiile anterioare înregistrate sub aceeași semnătură de eroare sunt căutate și atașate. O înregistrare adăugată la intrare, nu antrenarea modelului.

  8. Corectare cu dovezi · instrucțiuniReparare prin modelRulare · judecată: verificare din noubuild · teste · iterație +1Verificare

    Modelul corectează printr-o cale structurată architect/editor sau, când acea cale nu este disponibilă ori este în recuperare, printr-un prompt de utilizare a instrumentelor, iar build-ul și testele verifică din nou. Editarea unui model nu este în sine un build reușit.

Trecere versus blocaj

O notă necesită toate cele cinci porți; testele șterse sau excluse și ieșirile la limită sau prin blocaj nu sunt socotite succes.

  1. Continuare · măsurare · max. 3Pasul următorRulare · judecată: trecere · limită · blocajPonderea regulilor · teste · acoperireMăsurare

    Când build-ul și testele trec, se atinge limita de iterații sau este detectat un blocaj (după o încercare de recuperare, dacă nu a fost făcută deja), rularea merge la măsurare. Trecerea la măsurare nu înseamnă succes.

  2. Referință · necunoscutele nemăsurateStarea rulăriiDate: comparație cu referințaPonderea regulilor · teste · acoperireMăsurare

    Măsurarea citește referința păstrată în starea rulării. Nu este o nouă rulare de referință.

  3. 5 porți de acceptareMăsurareDate: notareScorecard · notă

    Build reușit, o rată de trecere a testelor de 100%, o schimbare a acoperirii de −5 sau mai bună (doar când referința este cunoscută), zero teste șterse, zero excluderi surefire. O notă se acordă doar când toate cele cinci trec.

  4. 5 porți de acceptareMăsurareEșec · limită: șterse · excluse · eșuateRaport de eșec · blocaj

    Trecerile obținute prin ștergerea testelor sau prin excluderi surefire, precum și build-urile sau testele eșuate, rămân eșecuri. Verificările de ștergere și excludere numără zero când Git sau POM-ul nu pot fi citite, deci nu sunt o dovadă că orice încălcare este prinsă.

  5. Continuare · măsurare · max. 3Pasul următorObservare · raport: ieșire la limită · blocajRaport de eșec · blocaj

    O rulare care se încheie la limită sau prin blocaj trece totuși prin măsurare, dar nu este raportată ca succes. Aceasta marchează modul de raportare; nu este o scurtătură care ocolește măsurarea.

Fiecare conexiune cu aceeași grosime. Alegeți un flux pentru a evidenția doar traseul lui, cu pași numerotați.

  • Continuă · direcția intrărilor, rezultatelor și înregistrărilor
  • Întreruptă · rulare, judecată, cerere
  • Puncte lungi · observare și raportare, separate de judecată
  • Liniuțe scurte · eșec, oprire, limită
  • Linie neagră groasă · fluxul selectat; numerele dau ordinea
  • Casetă · graniță de cod sau de stare, cu numele în antet
  • Etichetă interioară · o componentă a acelei granițe
  • Casetă punctată · în afara acelei granițe
  • Contur portocaliu · locul în care decide un model
  • Pașii pipeline-ului · reparare
  • Verificare · rutare · acceptare
  • Stare · înregistrări
  • Explorare înainte de corectare

Desenat după înregistrări private de implementare și dezvoltare. Numele sunt nume publice generice; nu sunt afișate căi de cod sau informații despre clienți.

Intrarea după o reconstrucție eșuată
Repararea prin model primește dovezile adunate și instrucțiunile de corectare, dar textul erorii transmis este eroarea build-ului original, nu noua eroare a reconstrucției. Stabilit prin citirea codului; nu a fost reprodus într-o rulare, iar sursa nu a fost modificată.
Limitele porților
Dacă referința acoperirii nu este cunoscută, acea poartă este omisă. Verificarea surefire numără excluderile din POM-ul curent, nu diferența față de referință. Verificările de ștergere și excludere numără zero când Git sau POM-ul nu pot fi citite.
Cazul și cifrele lui
Faptul că aproximativ 40 de erori de setter au fost urmărite până la o singură cauză, configurarea Lombok și POM, este un diagnostic înregistrat atunci. Nu este o cifră de debit, de acuratețe sau de livrare finală.