
REODE
Code migration
Преди поправката: първо общата причина.
Агент за миграция на 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
Цикъл на миграция, който държи доказателствата за поправката отделно от приемането.
Записва се състоянието на оригиналното изграждане и се прилага преобразуване по правила, след което преди поправката се събират доказателства от изходния код и POM. След редакция от модел изграждането, тестовете и целостта на тестовете се проверяват отново, а изпълненията, завършили при лимит или със застой, се отчитат отделно от успеха.
Съчетава преобразуване по правила с поправка с помощта на модел и проверява променения код с изграждане и тестове. Работен проект.
Работа по REODE в хранилището; ангажимент с pinxlab от 16 март 2026 г. до 26 май 2026 г.
CLI инструмент, използван в работата.
Преобразуване по правила
Оригиналното състояние се пази като базова линия; след преобразуването по правила изграждането и тестовете проверяват, а изпълнението продължава към измерване.
Изходен код · POMДанни: изходен код · POMСъстояние на оригинала · компилиране
Проверка на оригиналаПриема изходния код на Java/Spring и POM за миграция. Клиентският код и екрани не се показват.
Състояние на оригинала · компилиране
Проверка на оригиналаДанни: компилиране на оригиналаБазова линия · неизвестните не са измерениСъстояние на изпълнениетоПреди преобразуването се избира средата за изпълнение и оригиналът се компилира, така че вече повредено изграждане се запазва в базовата линия. Стойностите по подразбиране за тестове и покритие в базовата линия не са измервания.
Състояние на оригинала · компилиране
Проверка на оригиналаИзпълнение · преценка: преобразуване по правилаПлан → преобразуване по правилаПреобразуванеГрафът на изпълнението върви: проверка на оригинала → план за преобразуване → преобразуване по правила → проверка. Първо се прилагат преобразуванията, които правилата могат да извършат.
План → преобразуване по правила
ПреобразуванеИзпълнение · преценка: build · testизграждане · тестове · итерация +1ПроверкаИзграждането и тестовете проверяват преобразувания код, а броят итерации се увеличава с едно. Резултатите се връщат в състоянието на изпълнението.
изграждане · тестове · итерация +1
ПроверкаДанни: резултат · итерацииПродължаване · измерване · макс. 3Следваща стъпкаУспехът на изграждането, процентът успешни тестове и броят итерации решават следващата стъпка.
Продължаване · измерване · макс. 3
Следваща стъпкаИзпълнение · преценка: успех · лимит · застойДял на правилата · тестове · покритиеИзмерванеКогато изграждането и тестовете минат, достигне се лимитът на итерациите или се открие застой (след един опит за възстановяване, ако още не е правен), изпълнението преминава към измерване. Преминаването към измерване не означава успех.
Базова линия · неизвестните не са измерени
Състояние на изпълнениетоДанни: сравнение с базовата линияДял на правилата · тестове · покритиеИзмерванеИзмерването чете базовата линия, пазена в състоянието на изпълнението. Това не е ново изпълнение за базова линия.
5 порти за приемане
ИзмерванеДанни: оценяванеScorecard · оценкаУспешно изграждане, 100% успешни тестове, промяна на покритието −5 или по-добра (само при известна базова линия), нула изтрити тестове, нула изключения в surefire. Оценка се дава само когато минат и петте.
Поправка по причина
Доказателствата се събират преди поправката, а детерминистичните поправки идват първи. Ако повторното изграждане мине, моделът се пропуска; ако не, моделът поправя с доказателства и инструкции, а резултатът се проверява отново.
изграждане · тестове · итерация +1
ПроверкаДанни: резултат · итерацииПродължаване · измерване · макс. 3Следваща стъпкаУспехът на изграждането, процентът успешни тестове и броят итерации решават следващата стъпка.
Продължаване · измерване · макс. 3
Следваща стъпкаИзпълнение · преценка: неуспех · повторен опитДоказателства за причината · 3 източника · POMПроучване преди поправкаАко изграждането се е провалило или процентът успешни тестове е под 100% и лимитът на итерациите (по подразбиране 3) не е достигнат, изпълнението преминава към поправка.
Доказателства за причината · 3 източника · POM
Проучване преди поправкаНаблюдение · отчет: запис преди поправкатаКонтролна точка преди поправкатаЗаписи за възстановяванеПреди поправката се записва контролна точка. Това е без гаранция: неуспешен запис не спира поправката, а записът не е доказателство за успех.
Доказателства за причината · 3 източника · POM
Проучване преди поправкаДанни: доказателства · групирани грешкиПоправка на известни шаблониДетерминистична поправкаСъбира Java файловете с грешки, началните редове на до три източника, настройките на анотациите, POM и annotation processor, както и импортите до дълбочина 2. Ограничена извадка, а не разбиране на цялата кодова база.
Проверка на повторното изграждане
Детерминистична поправкаИзпълнение · преценка: успех · LLM пропуснатизграждане · тестове · итерация +1ПроверкаАко детерминистична поправка на известен шаблон (например настройката на Lombok) направи повторното изграждане успешно, модел не се извиква. Изпълнението все пак се връща към проверката, така че това не е окончателно приемане.
Проверка на повторното изграждане
Детерминистична поправкаНеуспех · лимит: повторното изграждане се провалиПоправка с доказателства · инструкцииПоправка с моделАко повторното изграждане се провали, събраните доказателства и инструкциите за поправка отиват към поправката с модел. От кода се вижда, че подаденият текст на грешката е оригиналната грешка при изграждане, а не новата грешка от повторното изграждане, затова не бива да се чете като „подават се само останалите грешки“. Това не е дефект, възпроизведен при изпълнение.
По-ранна поправка, същата грешка
Записи за възстановяванеДанни: по-ранна поправкаПоправка с доказателства · инструкцииПоправка с моделПо-ранните поправки, записани под същия подпис на грешката, се откриват и прикачват. Това е запис, добавен към входа, а не обучение на модела.
Поправка с доказателства · инструкции
Поправка с моделИзпълнение · преценка: нова проверкаизграждане · тестове · итерация +1ПроверкаМоделът поправя по структуриран път architect/editor или, когато този път не е наличен или е във възстановяване, чрез промпт за използване на инструменти, а изграждането и тестовете проверяват отново. Редакцията на модела сама по себе си не е успешно изграждане.
Успех срещу застой
За оценка са нужни и петте порти; изтрити или изключени тестове и изходи при лимит или застой не се броят за успех.
Продължаване · измерване · макс. 3
Следваща стъпкаИзпълнение · преценка: успех · лимит · застойДял на правилата · тестове · покритиеИзмерванеКогато изграждането и тестовете минат, достигне се лимитът на итерациите или се открие застой (след един опит за възстановяване, ако още не е правен), изпълнението преминава към измерване. Преминаването към измерване не означава успех.
Базова линия · неизвестните не са измерени
Състояние на изпълнениетоДанни: сравнение с базовата линияДял на правилата · тестове · покритиеИзмерванеИзмерването чете базовата линия, пазена в състоянието на изпълнението. Това не е ново изпълнение за базова линия.
5 порти за приемане
ИзмерванеДанни: оценяванеScorecard · оценкаУспешно изграждане, 100% успешни тестове, промяна на покритието −5 или по-добра (само при известна базова линия), нула изтрити тестове, нула изключения в surefire. Оценка се дава само когато минат и петте.
5 порти за приемане
ИзмерванеНеуспех · лимит: изтрити · изключени · неуспешниОтчет за неуспех · застойУспехите, постигнати чрез изтриване на тестове или чрез изключения в surefire, както и неуспешните изграждания или тестове, остават неуспехи. Проверките за изтриване и изключване броят нула, когато Git или POM не могат да се прочетат, така че не доказват, че всяко нарушение се улавя.
Продължаване · измерване · макс. 3
Следваща стъпкаНаблюдение · отчет: изход при лимит · застойОтчет за неуспех · застойИзпълнение, завършило при лимит или със застой, все пак минава през измерване, но не се отчита като успех. Това обозначава начина на отчитане, а не пряк път покрай измерването.
Всички връзки с еднаква дебелина. Изберете поток, за да се откроят само неговият път и номерираните стъпки.
- Плътна · посока на входа, резултатите и записите
- Прекъсната · изпълнение, преценка, заявка
- Дълга пунктирна · наблюдение и отчитане, отделно от преценката
- Къса прекъсната · неуспех, спиране, лимит
- Дебела черна линия · избраният поток; числата показват реда
- Кутия · граница на код или състояние, с името в заглавието
- Вътрешен етикет · компонент на тази граница
- Пунктирна кутия · извън тази граница
- Оранжев контур · където решава модел
- Стъпки на конвейера · поправка
- Проверка · маршрутизиране · приемане
- Състояние · записи
- Проучване преди поправка
Начертано по непубличните записи за реализацията и разработката. Имената са общи публични имена; пътища в кода и информация за клиенти не са показани.
- Вход след неуспешно повторно изграждане
- Поправката с модел получава събраните доказателства и инструкции, но подаденият текст на грешката е оригиналната грешка при изграждане, а не новата грешка от повторното изграждане. Установено чрез четене на кода; не е възпроизведено при изпълнение, а изходният код не е променян.
- Ограничения на портите
- Ако базовата линия на покритието е неизвестна, тази порта се пропуска. Проверката на surefire брои изключенията в текущия POM, а не разликата спрямо базовата линия. Проверките за изтриване и изключване броят нула, когато Git или POM не могат да се прочетат.
- Случаят и неговите числа
- Това, че около 40 грешки със setter са проследени до една причина, настройката на Lombok и POM, е диагноза, записана тогава. То не е стойност за пропускателна способност, точност или крайна доставка.