Оновлений оригінальний персонаж 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 March 16, 2026 – May 26, 2026

Інструмент CLI, що використовується на роботі.

Карта циклу виправлення · за закритими записами реалізації
Цикл виправлення міграції REODEОригінальний стан збірки зберігається як базова лінія, застосовується перетворення на основі правил, а збірка й тести перевіряють результат. У разі збою до будь-якого виправлення збираються докази з джерел, анотацій і POM, а відомі шаблони виправляються детерміновано й перезбираються. Якщо повторна збірка проходить, модель не викликається; якщо ні, модель виправляє із зібраними доказами й інструкціями з виправлення, і результат перевіряється знову. Запуски, що завершуються на ліміті ітерацій чи в застої, переходять до вимірювання, але не зараховуються як успіх, а картка оцінок ставить оцінку лише тоді, коли пройдено всі п’ять порогів приймання.Джерело · POMЗакриті вхідні дані міграціїКартка оцінок · оцінкаНе розгортанняЗвіт про збій · застійНе зараховується як успіхОригінальна перевіркаОригінальний стан · компіляціяСтан запускуБазова лінія · невідоме не виміряноЗаписи відновленняКонтрольна точка до виправленняРаніше виправлення, та сама помилкаПеретворенняПлан → перетворення на основі правилДослідити перед виправленнямДокази причини · 3 джерела · POMДетерміноване виправленняВиправлення відомих шаблонівПеревірка повторної збіркиВиправлення моделлюВиправлення з доказами · інструкціямиВерифікаціязбірка · тести · ітерація +1Наступний крокПродовжити · виміряти · макс. 3ВимірюванняЧастка правил · тести · покриття5 порогів прийманняВхід · базова лініяЗаписи відновленняПеретворення · виправленняВерифікація · вихід1 джерело · POM · Джерело · POM → Оригінальний стан · компіляція12оригінальна компіляція3 перетворення за правилами · Оригінальний стан · компіляція → План → перетворення на основі правил34build · test5результат · ітерації6успіх · ліміт · застій7порівняння з базовою лінією8 оцінювання · 5 порогів приймання → Картка оцінок · оцінка81результат · ітерації2 збій · повтор · Продовжити · виміряти · макс. 3 → Докази причини · 3 джерела · POM23збереження перед виправленням4докази · згруповані помилки5пройдено · LLM пропущено6повторна збірка не пройшла7 раніше виправлення · Раніше виправлення, та сама помилка → Виправлення з доказами · інструкціями78перевірити знову1успіх · ліміт · застій2порівняння з базовою лінією3 оцінювання · 5 порогів приймання → Картка оцінок · оцінка34видалено · виключено · збій5вихід на ліміті · у застої

Перетворення за правилами

Оригінальний стан зберігається як базова лінія; після перетворення за правилами збірка й тести перевіряють, і запуск переходить до вимірювання.

  1. Джерело · POMДані: джерело · POMОригінальний стан · компіляціяОригінальна перевірка

    Бере джерело Java/Spring і POM для міграції. Код і екрани клієнта не показано.

  2. Оригінальний стан · компіляціяОригінальна перевіркаДані: оригінальна компіляціяБазова лінія · невідоме не виміряноСтан запуску

    Перед перетворенням обирається середовище виконання й компілюється оригінал, тож збірка, що вже була зламана, зберігається в базовій лінії. Типові значення тестів і покриття в базовій лінії — не вимірювання.

  3. Оригінальний стан · компіляціяОригінальна перевіркаЗапуск · рішення: перетворення за правиламиПлан → перетворення на основі правилПеретворення

    Граф запуску йде так: оригінальна перевірка → план перетворення → перетворення на основі правил → верифікація. Спершу застосовуються перетворення, які можуть виконати правила.

  4. План → перетворення на основі правилПеретворенняЗапуск · рішення: build · testзбірка · тести · ітерація +1Верифікація

    Збірка й тести перевіряють перетворений код, а лічильник ітерацій збільшується на один. Результати повертаються до стану запуску.

  5. збірка · тести · ітерація +1ВерифікаціяДані: результат · ітераціїПродовжити · виміряти · макс. 3Наступний крок

    Успіх збірки, частка пройдених тестів і кількість ітерацій визначають наступний крок.

  6. Продовжити · виміряти · макс. 3Наступний крокЗапуск · рішення: успіх · ліміт · застійЧастка правил · тести · покриттяВимірювання

    Коли проходять і збірка, і тести, досягнуто ліміту ітерацій або виявлено застій (після однієї спроби відновлення, якщо її ще не було), запуск переходить до вимірювання. Перехід до вимірювання не означає успіху.

  7. Базова лінія · невідоме не виміряноСтан запускуДані: порівняння з базовою лінієюЧастка правил · тести · покриттяВимірювання

    Вимірювання читає базову лінію, збережену в стані запуску. Це не новий запуск базової лінії.

  8. 5 порогів прийманняВимірюванняДані: оцінюванняКартка оцінок · оцінка

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

Виправлення за причиною

Докази збирають до виправлення, а детерміновані виправлення йдуть першими. Якщо повторна збірка проходить, модель пропускається; якщо ні, модель виправляє з доказами й інструкціями, і результат перевіряється знову.

  1. збірка · тести · ітерація +1ВерифікаціяДані: результат · ітераціїПродовжити · виміряти · макс. 3Наступний крок

    Успіх збірки, частка пройдених тестів і кількість ітерацій визначають наступний крок.

  2. Продовжити · виміряти · макс. 3Наступний крокЗапуск · рішення: збій · повторДокази причини · 3 джерела · POMДослідити перед виправленням

    Якщо збірка не пройшла або частка пройдених тестів нижча за 100% і ліміт ітерацій (типово 3) не досягнуто, запуск переходить до виправлення.

  3. Докази причини · 3 джерела · POMДослідити перед виправленнямСпостереження · звіт: збереження перед виправленнямКонтрольна точка до виправленняЗаписи відновлення

    Перед виправленням зберігається контрольна точка. Це best-effort: невдале збереження не зупиняє виправлення, а збереження не є доказом успіху.

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

    Збирає файли Java з помилками, початкові рядки щонайбільше трьох джерел, налаштування анотацій, POM і annotation processor, а також імпорти до глибини 2. Обмежена вибірка, а не розуміння всієї кодової бази.

  5. Перевірка повторної збіркиДетерміноване виправленняЗапуск · рішення: пройдено · LLM пропущенозбірка · тести · ітерація +1Верифікація

    Якщо детерміноване виправлення відомого шаблону (наприклад, налаштування Lombok) дає змогу повторній збірці пройти, модель не викликається. Запуск однаково повертається до верифікації, тож це не остаточне приймання.

  6. Перевірка повторної збіркиДетерміноване виправленняЗбій · ліміт: повторна збірка не пройшлаВиправлення з доказами · інструкціямиВиправлення моделлю

    Якщо повторна збірка не проходить, зібрані докази й інструкції з виправлення передаються на виправлення моделлю. З коду видно, що разом із ними передається текст початкової помилки збірки, а не нової помилки повторної збірки, тож це не слід читати як «передаються лише залишкові помилки». Це не дефект, відтворений у запуску.

  7. Раніше виправлення, та сама помилкаЗаписи відновленняДані: раніше виправленняВиправлення з доказами · інструкціямиВиправлення моделлю

    Раніші виправлення, записані з тією самою сигнатурою помилки, знаходять і додають. Це запис, доданий до вхідних даних, а не навчання моделі.

  8. Виправлення з доказами · інструкціямиВиправлення моделлюЗапуск · рішення: перевірити зновузбірка · тести · ітерація +1Верифікація

    Модель виправляє через структурований шлях architect/editor або через промпт із використанням інструментів, коли цей шлях недоступний чи йде відновлення, а збірка й тести перевіряють знову. Правка моделі сама по собі не є успішною збіркою.

Успіх проти застою

Для оцінки потрібні всі п’ять порогів; видалені чи виключені тести та виходи на ліміті чи в застої не зараховуються як успіх.

  1. Продовжити · виміряти · макс. 3Наступний крокЗапуск · рішення: успіх · ліміт · застійЧастка правил · тести · покриттяВимірювання

    Коли проходять і збірка, і тести, досягнуто ліміту ітерацій або виявлено застій (після однієї спроби відновлення, якщо її ще не було), запуск переходить до вимірювання. Перехід до вимірювання не означає успіху.

  2. Базова лінія · невідоме не виміряноСтан запускуДані: порівняння з базовою лінієюЧастка правил · тести · покриттяВимірювання

    Вимірювання читає базову лінію, збережену в стані запуску. Це не новий запуск базової лінії.

  3. 5 порогів прийманняВимірюванняДані: оцінюванняКартка оцінок · оцінка

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

  4. 5 порогів прийманняВимірюванняЗбій · ліміт: видалено · виключено · збійЗвіт про збій · застій

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

  5. Продовжити · виміряти · макс. 3Наступний крокСпостереження · звіт: вихід на ліміті · у застоїЗвіт про збій · застій

    Запуск, що завершується на ліміті чи в застої, однаково проходить вимірювання, але не звітується як успіх. Це позначає спосіб звітування, а не обхід вимірювання.

Усі зв’язки однакової товщини. Оберіть потік, щоб підсвітити лише його шлях із пронумерованими кроками.

  • Суцільна · напрямок входів, результатів і записів
  • Штрихова · запуск, рішення, запит
  • Довга пунктирна · спостереження й звітування, окремо від рішення
  • Коротка штрихова · збій, зупинка, ліміт
  • Товста чорна лінія · обраний потік; номери показують порядок
  • Рамка · межа коду чи стану, названа в заголовку
  • Внутрішня плашка · компонент цієї межі
  • Пунктирна рамка · поза цією межею
  • Помаранчевий контур · де вирішує модель
  • Кроки конвеєра · виправлення
  • Верифікація · маршрутизація · приймання
  • Стан · записи
  • Дослідити перед виправленням

Накреслено за закритими записами реалізації й розробки. Назви — загальні публічні; шляхи коду й інформація про клієнтів не показані.

Вхідні дані після невдалої повторної збірки
Виправлення моделлю отримує зібрані докази й інструкції з виправлення, але передається текст початкової помилки збірки, а не нової помилки повторної збірки. Встановлено читанням коду; у запуску не відтворено, і джерело не змінювали.
Межі порогів
Якщо базова лінія покриття невідома, цей поріг пропускається. Перевірка surefire рахує виключення в поточному POM, а не різницю з базовою лінією. Перевірки видалення й виключень рахують нуль, коли Git чи POM неможливо прочитати.
Випадок і його числа
Близько 40 помилок setter, простежених до однієї причини — налаштування Lombok і POM, — це тодішній записаний діагноз. Це не показник пропускної здатності, точності чи остаточної поставки.