Оригиналният персонаж на REODE, доработен: усмихнато лице на аксолотъл в кремаво и розово, с тъмносини слушалки и циан лещи
Обратно в залата

REODE

Code migration

Преди поправката: първо общата причина.

Агент за миграция на Java/Spring код.

2026.03 — 2026.04

Работен проект · система за миграция и проверка

  • CLIРеализирано · работен проект

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

Цикъл на миграция, който държи доказателствата за поправката отделно от приемането.

Записва се състоянието на оригиналното изграждане и се прилага преобразуване по правила, след което преди поправката се събират доказателства от изходния код и POM. След редакция от модел изграждането, тестовете и целостта на тестовете се проверяват отново, а изпълненията, завършили при лимит или със застой, се отчитат отделно от успеха.

Съчетава преобразуване по правила с поправка с помощта на модел и проверява променения код с изграждане и тестове. Работен проект.

Работа по REODE в хранилището; ангажимент с pinxlab от 16 март 2026 г. до 26 май 2026 г.

CLI инструмент, използван в работата.

Карта на цикъла на поправка · по непубличните записи за реализацията
Цикъл на поправка при миграция в REODEСъстоянието на оригиналното изграждане се пази като базова линия, прилага се преобразуване по правила, а изграждането и тестовете проверяват резултата. При неуспех преди всяка поправка се събират доказателства от изходния код, анотациите и POM, а известните шаблони се поправят детерминистично и се изграждат отново. Ако повторното изграждане мине, модел не се извиква; ако се провали, модел поправя със събраните доказателства и инструкции, а резултатът се проверява отново. Изпълненията, завършили при лимита на итерациите или със застой, преминават към измерване, но не се броят за успех, а scorecard дава оценка само когато минат и петте порти за приемане.Изходен код · POMНепубличен вход за миграциятаScorecard · оценкаНе е внедряванеОтчет за неуспех · застойНе се брои за успехПроверка на оригиналаСъстояние на оригинала · компилиранеСъстояние на изпълнениетоБазова линия · неизвестните не са измерениЗаписи за възстановяванеКонтролна точка преди поправкатаПо-ранна поправка, същата грешкаПреобразуванеПлан → преобразуване по правилаПроучване преди поправкаДоказателства за причината · 3 източника · POMДетерминистична поправкаПоправка на известни шаблониПроверка на повторното изгражданеПоправка с моделПоправка с доказателства · инструкцииПроверкаизграждане · тестове · итерация +1Следваща стъпкаПродължаване · измерване · макс. 3ИзмерванеДял на правилата · тестове · покритие5 порти за приеманеВход · базова линияЗаписи за възстановяванеПреобразуване · поправкаПроверка · изход1 изходен код · POM · Изходен код · POM → Състояние на оригинала · компилиране12компилиране на оригинала3 преобразуване по правила · Състояние на оригинала · компилиране → План → преобразуване по правила34build · test5резултат · итерации6успех · лимит · застой7сравнение с базовата линия8оценяване1резултат · итерации2 неуспех · повторен опит · Продължаване · измерване · макс. 3 → Доказателства за причината · 3 източника · POM23запис преди поправката4доказателства · групирани грешки5успех · LLM пропуснат6повторното изграждане се провали7 по-ранна поправка · По-ранна поправка, същата грешка → Поправка с доказателства · инструкции78нова проверка1успех · лимит · застой2сравнение с базовата линия3оценяване4изтрити · изключени · неуспешни5изход при лимит · застой

Преобразуване по правила

Оригиналното състояние се пази като базова линия; след преобразуването по правила изграждането и тестовете проверяват, а изпълнението продължава към измерване.

  1. Изходен код · POMДанни: изходен код · POMСъстояние на оригинала · компилиранеПроверка на оригинала

    Приема изходния код на Java/Spring и POM за миграция. Клиентският код и екрани не се показват.

  2. Състояние на оригинала · компилиранеПроверка на оригиналаДанни: компилиране на оригиналаБазова линия · неизвестните не са измерениСъстояние на изпълнението

    Преди преобразуването се избира средата за изпълнение и оригиналът се компилира, така че вече повредено изграждане се запазва в базовата линия. Стойностите по подразбиране за тестове и покритие в базовата линия не са измервания.

  3. Състояние на оригинала · компилиранеПроверка на оригиналаИзпълнение · преценка: преобразуване по правилаПлан → преобразуване по правилаПреобразуване

    Графът на изпълнението върви: проверка на оригинала → план за преобразуване → преобразуване по правила → проверка. Първо се прилагат преобразуванията, които правилата могат да извършат.

  4. План → преобразуване по правилаПреобразуванеИзпълнение · преценка: build · testизграждане · тестове · итерация +1Проверка

    Изграждането и тестовете проверяват преобразувания код, а броят итерации се увеличава с едно. Резултатите се връщат в състоянието на изпълнението.

  5. изграждане · тестове · итерация +1ПроверкаДанни: резултат · итерацииПродължаване · измерване · макс. 3Следваща стъпка

    Успехът на изграждането, процентът успешни тестове и броят итерации решават следващата стъпка.

  6. Продължаване · измерване · макс. 3Следваща стъпкаИзпълнение · преценка: успех · лимит · застойДял на правилата · тестове · покритиеИзмерване

    Когато изграждането и тестовете минат, достигне се лимитът на итерациите или се открие застой (след един опит за възстановяване, ако още не е правен), изпълнението преминава към измерване. Преминаването към измерване не означава успех.

  7. Базова линия · неизвестните не са измерениСъстояние на изпълнениетоДанни: сравнение с базовата линияДял на правилата · тестове · покритиеИзмерване

    Измерването чете базовата линия, пазена в състоянието на изпълнението. Това не е ново изпълнение за базова линия.

  8. 5 порти за приеманеИзмерванеДанни: оценяванеScorecard · оценка

    Успешно изграждане, 100% успешни тестове, промяна на покритието −5 или по-добра (само при известна базова линия), нула изтрити тестове, нула изключения в surefire. Оценка се дава само когато минат и петте.

Поправка по причина

Доказателствата се събират преди поправката, а детерминистичните поправки идват първи. Ако повторното изграждане мине, моделът се пропуска; ако не, моделът поправя с доказателства и инструкции, а резултатът се проверява отново.

  1. изграждане · тестове · итерация +1ПроверкаДанни: резултат · итерацииПродължаване · измерване · макс. 3Следваща стъпка

    Успехът на изграждането, процентът успешни тестове и броят итерации решават следващата стъпка.

  2. Продължаване · измерване · макс. 3Следваща стъпкаИзпълнение · преценка: неуспех · повторен опитДоказателства за причината · 3 източника · POMПроучване преди поправка

    Ако изграждането се е провалило или процентът успешни тестове е под 100% и лимитът на итерациите (по подразбиране 3) не е достигнат, изпълнението преминава към поправка.

  3. Доказателства за причината · 3 източника · POMПроучване преди поправкаНаблюдение · отчет: запис преди поправкатаКонтролна точка преди поправкатаЗаписи за възстановяване

    Преди поправката се записва контролна точка. Това е без гаранция: неуспешен запис не спира поправката, а записът не е доказателство за успех.

  4. Доказателства за причината · 3 източника · POMПроучване преди поправкаДанни: доказателства · групирани грешкиПоправка на известни шаблониДетерминистична поправка

    Събира Java файловете с грешки, началните редове на до три източника, настройките на анотациите, POM и annotation processor, както и импортите до дълбочина 2. Ограничена извадка, а не разбиране на цялата кодова база.

  5. Проверка на повторното изгражданеДетерминистична поправкаИзпълнение · преценка: успех · LLM пропуснатизграждане · тестове · итерация +1Проверка

    Ако детерминистична поправка на известен шаблон (например настройката на Lombok) направи повторното изграждане успешно, модел не се извиква. Изпълнението все пак се връща към проверката, така че това не е окончателно приемане.

  6. Проверка на повторното изгражданеДетерминистична поправкаНеуспех · лимит: повторното изграждане се провалиПоправка с доказателства · инструкцииПоправка с модел

    Ако повторното изграждане се провали, събраните доказателства и инструкциите за поправка отиват към поправката с модел. От кода се вижда, че подаденият текст на грешката е оригиналната грешка при изграждане, а не новата грешка от повторното изграждане, затова не бива да се чете като „подават се само останалите грешки“. Това не е дефект, възпроизведен при изпълнение.

  7. По-ранна поправка, същата грешкаЗаписи за възстановяванеДанни: по-ранна поправкаПоправка с доказателства · инструкцииПоправка с модел

    По-ранните поправки, записани под същия подпис на грешката, се откриват и прикачват. Това е запис, добавен към входа, а не обучение на модела.

  8. Поправка с доказателства · инструкцииПоправка с моделИзпълнение · преценка: нова проверкаизграждане · тестове · итерация +1Проверка

    Моделът поправя по структуриран път architect/editor или, когато този път не е наличен или е във възстановяване, чрез промпт за използване на инструменти, а изграждането и тестовете проверяват отново. Редакцията на модела сама по себе си не е успешно изграждане.

Успех срещу застой

За оценка са нужни и петте порти; изтрити или изключени тестове и изходи при лимит или застой не се броят за успех.

  1. Продължаване · измерване · макс. 3Следваща стъпкаИзпълнение · преценка: успех · лимит · застойДял на правилата · тестове · покритиеИзмерване

    Когато изграждането и тестовете минат, достигне се лимитът на итерациите или се открие застой (след един опит за възстановяване, ако още не е правен), изпълнението преминава към измерване. Преминаването към измерване не означава успех.

  2. Базова линия · неизвестните не са измерениСъстояние на изпълнениетоДанни: сравнение с базовата линияДял на правилата · тестове · покритиеИзмерване

    Измерването чете базовата линия, пазена в състоянието на изпълнението. Това не е ново изпълнение за базова линия.

  3. 5 порти за приеманеИзмерванеДанни: оценяванеScorecard · оценка

    Успешно изграждане, 100% успешни тестове, промяна на покритието −5 или по-добра (само при известна базова линия), нула изтрити тестове, нула изключения в surefire. Оценка се дава само когато минат и петте.

  4. 5 порти за приеманеИзмерванеНеуспех · лимит: изтрити · изключени · неуспешниОтчет за неуспех · застой

    Успехите, постигнати чрез изтриване на тестове или чрез изключения в surefire, както и неуспешните изграждания или тестове, остават неуспехи. Проверките за изтриване и изключване броят нула, когато Git или POM не могат да се прочетат, така че не доказват, че всяко нарушение се улавя.

  5. Продължаване · измерване · макс. 3Следваща стъпкаНаблюдение · отчет: изход при лимит · застойОтчет за неуспех · застой

    Изпълнение, завършило при лимит или със застой, все пак минава през измерване, но не се отчита като успех. Това обозначава начина на отчитане, а не пряк път покрай измерването.

Всички връзки с еднаква дебелина. Изберете поток, за да се откроят само неговият път и номерираните стъпки.

  • Плътна · посока на входа, резултатите и записите
  • Прекъсната · изпълнение, преценка, заявка
  • Дълга пунктирна · наблюдение и отчитане, отделно от преценката
  • Къса прекъсната · неуспех, спиране, лимит
  • Дебела черна линия · избраният поток; числата показват реда
  • Кутия · граница на код или състояние, с името в заглавието
  • Вътрешен етикет · компонент на тази граница
  • Пунктирна кутия · извън тази граница
  • Оранжев контур · където решава модел
  • Стъпки на конвейера · поправка
  • Проверка · маршрутизиране · приемане
  • Състояние · записи
  • Проучване преди поправка

Начертано по непубличните записи за реализацията и разработката. Имената са общи публични имена; пътища в кода и информация за клиенти не са показани.

Вход след неуспешно повторно изграждане
Поправката с модел получава събраните доказателства и инструкции, но подаденият текст на грешката е оригиналната грешка при изграждане, а не новата грешка от повторното изграждане. Установено чрез четене на кода; не е възпроизведено при изпълнение, а изходният код не е променян.
Ограничения на портите
Ако базовата линия на покритието е неизвестна, тази порта се пропуска. Проверката на surefire брои изключенията в текущия POM, а не разликата спрямо базовата линия. Проверките за изтриване и изключване броят нула, когато Git или POM не могат да се прочетат.
Случаят и неговите числа
Това, че около 40 грешки със setter са проследени до една причина, настройката на Lombok и POM, е диагноза, записана тогава. То не е стойност за пропускателна способност, точност или крайна доставка.