
REODE
Code migration
Înainte de corectare, mai întâi cauza comună.
Un agent de migrare a codului 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
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.
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.
Sursă · POMDate: sursă · POMStarea originalului · compilare
Verificarea originaluluiPreia sursa Java/Spring și POM-ul de migrat. Codul și ecranele clienților nu sunt afișate.
Starea originalului · compilare
Verificarea 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.
Starea originalului · compilare
Verificarea originaluluiRulare · judecată: conversie pe bază de reguliPlan → conversie bazată pe reguliConversieGraful rulării merge: verificarea originalului → planul conversiei → conversie bazată pe reguli → verificare. Conversiile pe care le pot duce regulile sunt aplicate mai întâi.
Plan → conversie bazată pe reguli
ConversieRulare · judecată: build · testbuild · teste · iterație +1VerificareBuild-ul și testele verifică codul convertit, iar numărul de iterații crește cu unu. Rezultatele revin în starea rulării.
build · teste · iterație +1
VerificareDate: rezultat · iterațiiContinuare · măsurare · max. 3Pasul următorSuccesul build-ului, rata de trecere a testelor și numărul de iterații decid pasul următor.
Continuare · măsurare · max. 3
Pasul următorRulare · judecată: trecere · limită · blocajPonderea regulilor · teste · acoperireMăsurareCâ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.
Referință · necunoscutele nemăsurate
Starea rulăriiDate: comparație cu referințaPonderea regulilor · teste · acoperireMăsurareMăsurarea citește referința păstrată în starea rulării. Nu este o nouă rulare de referință.
5 porți de acceptare
Mă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.
build · teste · iterație +1
VerificareDate: rezultat · iterațiiContinuare · măsurare · max. 3Pasul următorSuccesul build-ului, rata de trecere a testelor și numărul de iterații decid pasul următor.
Continuare · măsurare · max. 3
Pasul următorRulare · judecată: eșuat · reîncercareDovezi despre cauză · 3 surse · POMExplorare înainte de corectareDacă 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.
Dovezi despre cauză · 3 surse · POM
Explorare înainte de corectareObservare · raport: salvare înainte de corectarePunct de control înainte de corectareÎnregistrări de recuperareUn 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.
Dovezi despre cauză · 3 surse · POM
Explorare î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.
Verificarea reconstrucției
Corecție deterministăRulare · judecată: trecut · LLM omisbuild · teste · iterație +1VerificareDacă 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ă.
Verificarea reconstrucției
Corecție deterministăEșec · limită: reconstrucție eșuatăCorectare cu dovezi · instrucțiuniReparare prin modelDacă 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.
Corecție anterioară, aceeași eroare
Înregistrări de recuperareDate: corecție anterioarăCorectare cu dovezi · instrucțiuniReparare prin modelCorecț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.
Corectare cu dovezi · instrucțiuni
Reparare prin modelRulare · judecată: verificare din noubuild · teste · iterație +1VerificareModelul 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.
Continuare · măsurare · max. 3
Pasul următorRulare · judecată: trecere · limită · blocajPonderea regulilor · teste · acoperireMăsurareCâ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.
Referință · necunoscutele nemăsurate
Starea rulăriiDate: comparație cu referințaPonderea regulilor · teste · acoperireMăsurareMăsurarea citește referința păstrată în starea rulării. Nu este o nouă rulare de referință.
5 porți de acceptare
Mă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.
5 porți de acceptare
MăsurareEșec · limită: șterse · excluse · eșuateRaport de eșec · blocajTrecerile 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ă.
Continuare · măsurare · max. 3
Pasul următorObservare · raport: ieșire la limită · blocajRaport de eșec · blocajO 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ă.