
REODE
Code migration
Przed poprawką znaleźć wspólną przyczynę.
Agent migracji kodu 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
Pętla migracji, która oddziela dowody naprawy od akceptacji.
Zapisywany jest stan oryginalnego builda i stosowana konwersja oparta na regułach, a przed naprawą zbierane są dowody ze źródeł i POM. Po edycji przez model build, testy i integralność testów są sprawdzane ponownie, a przebiegi kończące się na limicie lub utknięciem są raportowane oddzielnie od sukcesu.
Łączy konwersję opartą na regułach z naprawą wspomaganą przez model i sprawdza zmieniony kod przez build i testy. Projekt zawodowy.
Praca nad REODE w repozytorium; współpraca z pinxlab od March 16, 2026 do May 26, 2026
Narzędzie CLI używane w pracy.
Konwersja regułowa
Stan oryginału zostaje zachowany jako baseline; po konwersji regułowej build i testy weryfikują wynik, a przebieg przechodzi do pomiaru.
Źródła · POMDane: źródła · POMStan oryginału · kompilacja
Kontrola oryginałuPrzyjmuje źródła Java/Spring i POM do migracji. Kod i ekrany klienta nie są pokazywane.
Stan oryginału · kompilacja
Kontrola oryginałuDane: kompilacja oryginałuBaseline · nieznane wartości niezmierzoneStan przebieguPrzed konwersją wybierane jest środowisko wykonawcze i kompilowany oryginał, więc build, który już był zepsuty, zostaje zachowany w baseline. Domyślne wartości testów i pokrycia w baseline nie są pomiarami.
Stan oryginału · kompilacja
Kontrola oryginałuUruchomienie · rozstrzygnięcie: konwersja regułowaPlan → konwersja oparta na regułachKonwersjaGraf przebiegu idzie: kontrola oryginału → plan konwersji → konwersja oparta na regułach → weryfikacja. Najpierw stosowane są konwersje, które da się przeprowadzić regułami.
Plan → konwersja oparta na regułach
KonwersjaUruchomienie · rozstrzygnięcie: build · testbuild · test · iteracja +1WeryfikacjaBuild i testy weryfikują przekonwertowany kod, a licznik iteracji rośnie o jeden. Wyniki wracają do stanu przebiegu.
build · test · iteracja +1
WeryfikacjaDane: wynik · iteracjeKontynuacja · pomiar · najwyżej 3Następny krokO następnym kroku decydują powodzenie builda, odsetek zaliczonych testów i liczba iteracji.
Kontynuacja · pomiar · najwyżej 3
Następny krokUruchomienie · rozstrzygnięcie: zaliczenie · limit · utknięcieUdział reguł · testy · pokryciePomiarGdy build i testy przejdą, osiągnięty zostanie limit iteracji albo wykryte zostanie utknięcie (po jednej próbie przywrócenia, jeśli jeszcze jej nie było), przebieg przechodzi do pomiaru. Przejście do pomiaru nie oznacza sukcesu.
Baseline · nieznane wartości niezmierzone
Stan przebieguDane: porównanie z baselineUdział reguł · testy · pokryciePomiarPomiar odczytuje baseline zachowany w stanie przebiegu. To nie jest nowy przebieg baseline.
5 kryteriów akceptacji
PomiarDane: ocenaKarta wyników · ocenaUdany build, 100% zaliczonych testów, zmiana pokrycia −5 lub lepsza (tylko gdy baseline jest znany), zero usuniętych testów, zero wykluczeń surefire. Ocena jest wystawiana tylko po spełnieniu wszystkich pięciu kryteriów.
Naprawa oparta na przyczynie
Dowody są zbierane przed poprawką, a deterministyczne poprawki idą najpierw. Jeśli ponowny build przejdzie, model jest pomijany; jeśli nie, model naprawia z dowodami i instrukcjami, a wynik jest weryfikowany ponownie.
build · test · iteracja +1
WeryfikacjaDane: wynik · iteracjeKontynuacja · pomiar · najwyżej 3Następny krokO następnym kroku decydują powodzenie builda, odsetek zaliczonych testów i liczba iteracji.
Kontynuacja · pomiar · najwyżej 3
Następny krokUruchomienie · rozstrzygnięcie: porażka · ponowienieDowody przyczyny · 3 źródła · POMEksploracja przed poprawkąJeśli build się nie powiódł lub odsetek zaliczonych testów jest niższy niż 100%, a limit iteracji (domyślnie 3) nie został osiągnięty, przebieg przechodzi do naprawy.
Dowody przyczyny · 3 źródła · POM
Eksploracja przed poprawkąObserwacja · raport: zapis przed poprawkąCheckpoint przed poprawkąZapisy przywracaniaPrzed poprawką zapisywany jest checkpoint. Działa w trybie best-effort: nieudany zapis nie zatrzymuje naprawy, a zapis nie jest dowodem sukcesu.
Dowody przyczyny · 3 źródła · POM
Eksploracja przed poprawkąDane: dowody · pogrupowane błędyPoprawa znanych wzorcówPoprawka deterministycznaZbiera błędne pliki Java, początkowe wiersze najwyżej trzech źródeł, ustawienia adnotacji, POM i procesora adnotacji oraz importy do głębokości 2. To ograniczona próbka, a nie zrozumienie całej bazy kodu.
Kontrola ponownego builda
Poprawka deterministycznaUruchomienie · rozstrzygnięcie: zaliczone · LLM pominiętybuild · test · iteracja +1WeryfikacjaJeśli deterministyczna poprawka znanego wzorca (na przykład konfiguracji Lombok) sprawi, że ponowny build przejdzie, model nie jest wywoływany. Przebieg i tak wraca do weryfikacji, więc nie jest to końcowa akceptacja.
Kontrola ponownego builda
Poprawka deterministycznaAwaria · limit: ponowny build nieudanyPoprawka z dowodami · instrukcjamiNaprawa przez modelJeśli ponowny build zawiedzie, zebrane dowody i instrukcje poprawek trafiają do naprawy przez model. Z lektury kodu wynika, że przekazywany tekst błędu to oryginalny błąd builda, a nie nowy z ponownego builda, więc nie należy tego czytać jako „przekazywane są tylko pozostałe błędy”. To nie defekt odtworzony w przebiegu.
Wcześniejsza poprawka, ten sam błąd
Zapisy przywracaniaDane: wcześniejsza poprawkaPoprawka z dowodami · instrukcjamiNaprawa przez modelWcześniejsze poprawki zapisane pod tą samą sygnaturą błędu są wyszukiwane i dołączane. To zapis dodawany do wejścia, a nie trening modelu.
Poprawka z dowodami · instrukcjami
Naprawa przez modelUruchomienie · rozstrzygnięcie: ponowna weryfikacjabuild · test · iteracja +1WeryfikacjaModel poprawia kod przez ustrukturyzowaną ścieżkę architect/editor albo, gdy ta ścieżka jest niedostępna lub trwa przywracanie, przez prompt z użyciem narzędzi, a build i testy weryfikują ponownie. Edycja modelu nie jest sama w sobie udanym buildem.
Zaliczenie a utknięcie
Ocena wymaga spełnienia wszystkich pięciu kryteriów; usunięte lub wykluczone testy oraz wyjścia na limicie lub przez utknięcie nie są liczone jako sukces.
Kontynuacja · pomiar · najwyżej 3
Następny krokUruchomienie · rozstrzygnięcie: zaliczenie · limit · utknięcieUdział reguł · testy · pokryciePomiarGdy build i testy przejdą, osiągnięty zostanie limit iteracji albo wykryte zostanie utknięcie (po jednej próbie przywrócenia, jeśli jeszcze jej nie było), przebieg przechodzi do pomiaru. Przejście do pomiaru nie oznacza sukcesu.
Baseline · nieznane wartości niezmierzone
Stan przebieguDane: porównanie z baselineUdział reguł · testy · pokryciePomiarPomiar odczytuje baseline zachowany w stanie przebiegu. To nie jest nowy przebieg baseline.
5 kryteriów akceptacji
PomiarDane: ocenaKarta wyników · ocenaUdany build, 100% zaliczonych testów, zmiana pokrycia −5 lub lepsza (tylko gdy baseline jest znany), zero usuniętych testów, zero wykluczeń surefire. Ocena jest wystawiana tylko po spełnieniu wszystkich pięciu kryteriów.
5 kryteriów akceptacji
PomiarAwaria · limit: usunięte · wykluczone · nieudaneRaport awarii · utknięciaZaliczenia uzyskane przez usunięcie testów lub wykluczenia surefire oraz nieudane buildy czy testy pozostają porażkami. Kontrole usunięć i wykluczeń liczą zero, gdy nie da się odczytać Git lub POM, więc nie dowodzą, że każde naruszenie zostanie wychwycone.
Kontynuacja · pomiar · najwyżej 3
Następny krokObserwacja · raport: wyjście na limicie · utknięciuRaport awarii · utknięciaPrzebieg, który kończy się na limicie lub utyka, nadal przechodzi przez pomiar, ale nie jest raportowany jako sukces. To oznaczenie sposobu raportowania, a nie skrót omijający pomiar.
Każde połączenie z tą samą wagą. Wybór przepływu wyróżnia tylko jego ścieżkę z ponumerowanymi krokami.
- Linia ciągła · kierunek wejścia, wyników i zapisów
- Linia przerywana · uruchomienie, rozstrzygnięcie, żądanie
- Długie kropki · obserwacja i raportowanie, oddzielnie od rozstrzygnięcia
- Krótkie kreski · awaria, zatrzymanie, limit
- Gruba czarna linia · wybrany przepływ; liczby podają kolejność
- Ramka · granica kodu lub stanu, nazwana w nagłówku
- Wewnętrzny element · komponent tej granicy
- Kropkowana ramka · poza tą granicą
- Pomarańczowy obrys · miejsce, w którym decyduje model
- Kroki potoku · naprawa
- Weryfikacja · kierowanie · akceptacja
- Stan · zapisy
- Eksploracja przed poprawką
Narysowano na podstawie niepublicznych zapisów implementacji i rozwoju. Nazwy są ogólnymi nazwami publicznymi; ścieżek kodu ani informacji o kliencie nie pokazano.
- Wejście po nieudanym ponownym buildzie
- Naprawa przez model otrzymuje zebrane dowody i instrukcje poprawek, ale przekazywany tekst błędu to oryginalny błąd builda, a nie nowy z ponownego builda. Ustalone przez lekturę kodu; nie odtworzono tego w przebiegu, a kodu źródłowego nie zmieniono.
- Granice kryteriów
- Jeśli baseline pokrycia jest nieznany, to kryterium jest pomijane. Kontrola surefire liczy wykluczenia w obecnym POM, a nie różnicę względem baseline. Kontrole usunięć i wykluczeń liczą zero, gdy nie da się odczytać Git lub POM.
- Przypadek i jego liczby
- Około 40 błędów setterów sprowadzonych do jednej przyczyny, konfiguracji Lombok i POM, to diagnoza zapisana w tamtym czasie. Nie jest to wartość przepustowości, trafności ani końcowej dostawy.