Het oorspronkelijke REODE-personage, verfijnd: een lachend crème-roze axolotlgezicht met een marineblauwe headset en cyaan lenzen
Terug naar de zaal

REODE

Code migration

Vóór het herstellen eerst de gemeenschappelijke oorzaak.

Een agent voor de migratie van Java/Spring-code.

2026.03 — 2026.04

Werkproject · migratie- en verificatiesysteem

  • CLIGeïmplementeerd · werkproject

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

Een migratielus die het bewijs voor reparatie gescheiden houdt van acceptatie.

De oorspronkelijke buildtoestand wordt vastgelegd en regelgebaseerde conversie toegepast, daarna wordt vóór de reparatie bewijs uit bron en POM verzameld. Na een wijziging door een model worden build, test en testintegriteit opnieuw gecontroleerd, en runs die eindigen op een limiet of vastlopen, worden los van succes gerapporteerd.

Hij combineert regelgebaseerde conversie met modelondersteunde reparatie en controleert de gewijzigde code met build en test. Een werkproject.

REODE-werk in de repository; opdracht bij pinxlab van March 16, 2026 tot May 26, 2026

Een CLI-tool voor het werk.

Kaart van de reparatielus · op basis van niet-openbare implementatieverslagen
Reparatielus van de REODE-migratieDe oorspronkelijke buildtoestand wordt als baseline bewaard, regelgebaseerde conversie wordt toegepast en build en test verifiëren het resultaat. Bij een mislukking wordt vóór elke correctie bewijs uit bron, annotaties en POM verzameld, en bekende patronen worden deterministisch gecorrigeerd en opnieuw gebouwd. Slaagt de rebuild, dan wordt geen model aangeroepen; mislukt die, dan repareert een model met het verzamelde bewijs en de herstelinstructies, en wordt het resultaat opnieuw geverifieerd. Runs die eindigen op de iteratielimiet of vastlopen, gaan door naar de meting maar tellen niet als succes, en de scorecard geeft alleen een beoordeling als alle vijf acceptatiegates slagen.Bron · POMNiet-openbare migratie-inputScorecard · beoordelingGeen uitrolRapport mislukking · stilstandNiet als succes geteldControle van het origineelOorspronkelijke toestand · compilerenRuntoestandBaseline · onbekende waarden ongemetenHerstelvastleggingenCheckpoint vóór de correctieEerdere correctie, zelfde foutConversiePlan → regelgebaseerde conversieVerkennen vóór herstellenOorzaakbewijs · 3 bronnen · POMDeterministische correctieBekende patronen corrigerenRebuildcontroleModelreparatieCorrectie met bewijs · instructiesVerificatiebuild · test · iteratie +1Volgende stapDoorgaan · meten · max. 3MetingAandeel regels · tests · coverage5 acceptatiegatesInvoer · baselineHerstelvastleggingenConversie · reparatieVerificatie · uitgang1bron · POM2oorspronkelijke compilatie3 regelconversie · Oorspronkelijke toestand · compileren → Plan → regelgebaseerde conversie34build · test5resultaat · iteraties6geslaagd · limiet · stilstand7baselinevergelijking8 beoordeling · 5 acceptatiegates → Scorecard · beoordeling81resultaat · iteraties2 mislukt · opnieuw · Doorgaan · meten · max. 3 → Oorzaakbewijs · 3 bronnen · POM23opslaan vóór correctie4bewijs · gegroepeerde fouten5geslaagd · LLM overgeslagen6rebuild mislukt7 eerdere correctie · Eerdere correctie, zelfde fout → Correctie met bewijs · instructies78opnieuw verifiëren1geslaagd · limiet · stilstand2baselinevergelijking3 beoordeling · 5 acceptatiegates → Scorecard · beoordeling34verwijderd · uitgesloten · mislukt5limiet · uitgang bij stilstand

Regelconversie

De oorspronkelijke toestand wordt als baseline bewaard; na de regelconversie verifiëren build en test, en gaat de run door naar de meting.

  1. Bron · POMGegevens: bron · POMOorspronkelijke toestand · compilerenControle van het origineel

    Neemt de te migreren Java/Spring-bron en POM aan. Klantcode en -schermen worden niet getoond.

  2. Oorspronkelijke toestand · compilerenControle van het origineelGegevens: oorspronkelijke compilatieBaseline · onbekende waarden ongemetenRuntoestand

    Vóór de conversie wordt de runtime gekozen en het origineel gecompileerd, zodat een build die al kapot was in de baseline wordt bewaard. Standaardwaarden voor test en coverage in de baseline zijn geen metingen.

  3. Oorspronkelijke toestand · compilerenControle van het origineelUitvoeren · oordeel: regelconversiePlan → regelgebaseerde conversieConversie

    De rungraaf loopt van controle van het origineel → conversieplan → regelgebaseerde conversie → verificatie. Conversies die regels aankunnen, worden eerst toegepast.

  4. Plan → regelgebaseerde conversieConversieUitvoeren · oordeel: build · testbuild · test · iteratie +1Verificatie

    Build en test verifiëren de geconverteerde code en de iteratieteller gaat met één omhoog. De resultaten gaan terug naar de runtoestand.

  5. build · test · iteratie +1VerificatieGegevens: resultaat · iteratiesDoorgaan · meten · max. 3Volgende stap

    Buildsucces, slagingspercentage van de tests en het aantal iteraties bepalen de volgende stap.

  6. Doorgaan · meten · max. 3Volgende stapUitvoeren · oordeel: geslaagd · limiet · stilstandAandeel regels · tests · coverageMeting

    Als build en test allebei slagen, de iteratielimiet is bereikt of stilstand wordt gedetecteerd (na één herstelpoging als die nog niet is gedaan), gaat de run naar de meting. Naar de meting gaan betekent geen succes.

  7. Baseline · onbekende waarden ongemetenRuntoestandGegevens: baselinevergelijkingAandeel regels · tests · coverageMeting

    De meting leest de baseline die in de runtoestand is bewaard. Het is geen nieuwe baselinerun.

  8. 5 acceptatiegatesMetingGegevens: beoordelingScorecard · beoordeling

    Een geslaagde build, een slagingspercentage van 100% voor tests, een coveragewijziging van −5 of beter (alleen als de baseline bekend is), nul verwijderde tests, nul surefire-uitsluitingen. Een beoordeling wordt alleen gegeven als alle vijf slagen.

Oorzaakgerichte reparatie

Vóór het herstellen wordt bewijs verzameld en deterministische correcties komen eerst. Slaagt de rebuild, dan wordt het model overgeslagen; zo niet, dan repareert het model met bewijs en instructies en wordt het resultaat opnieuw geverifieerd.

  1. build · test · iteratie +1VerificatieGegevens: resultaat · iteratiesDoorgaan · meten · max. 3Volgende stap

    Buildsucces, slagingspercentage van de tests en het aantal iteraties bepalen de volgende stap.

  2. Doorgaan · meten · max. 3Volgende stapUitvoeren · oordeel: mislukt · opnieuwOorzaakbewijs · 3 bronnen · POMVerkennen vóór herstellen

    Als de build mislukte of het slagingspercentage van de tests onder 100% ligt en de iteratielimiet (standaard 3) niet is bereikt, gaat de run naar reparatie.

  3. Oorzaakbewijs · 3 bronnen · POMVerkennen vóór herstellenObservatie · rapport: opslaan vóór correctieCheckpoint vóór de correctieHerstelvastleggingen

    Vóór de correctie wordt een checkpoint opgeslagen. Dat is best-effort: een mislukte opslag stopt de reparatie niet, en een opslag is geen bewijs van succes.

  4. Oorzaakbewijs · 3 bronnen · POMVerkennen vóór herstellenGegevens: bewijs · gegroepeerde foutenBekende patronen corrigerenDeterministische correctie

    Verzamelt de falende Java-bestanden, de eerste regels van tot drie bronnen, instellingen voor annotaties, POM en annotation processor, en imports tot diepte 2. Een begrensde steekproef, geen begrip van de hele codebase.

  5. RebuildcontroleDeterministische correctieUitvoeren · oordeel: geslaagd · LLM overgeslagenbuild · test · iteratie +1Verificatie

    Als een deterministische correctie van een bekend patroon (bijvoorbeeld de Lombok-setup) de rebuild laat slagen, wordt geen model aangeroepen. De run keert toch terug naar verificatie, dus dit is geen definitieve acceptatie.

  6. RebuildcontroleDeterministische correctieMislukking · limiet: rebuild misluktCorrectie met bewijs · instructiesModelreparatie

    Mislukt de rebuild, dan gaan het verzamelde bewijs en de herstelinstructies naar de modelreparatie. Uit de code blijkt dat de meegegeven fouttekst de oorspronkelijke buildfout is, niet de nieuwe van de rebuild, dus dit mag niet gelezen worden als “alleen de resterende fouten worden doorgegeven”. Geen defect dat in een run is gereproduceerd.

  7. Eerdere correctie, zelfde foutHerstelvastleggingenGegevens: eerdere correctieCorrectie met bewijs · instructiesModelreparatie

    Eerdere correcties die onder dezelfde foutsignatuur zijn vastgelegd, worden opgezocht en bijgevoegd. Een vastlegging die aan de input wordt toegevoegd, geen modeltraining.

  8. Correctie met bewijs · instructiesModelreparatieUitvoeren · oordeel: opnieuw verifiërenbuild · test · iteratie +1Verificatie

    Het model corrigeert via een gestructureerd architect/editor-pad, of via een tool-use-prompt als dat pad niet beschikbaar is of in herstel, en build en test verifiëren opnieuw. Een wijziging door een model is op zich geen geslaagde build.

Slagen versus stilstand

Een beoordeling vereist alle vijf gates; verwijderde of uitgesloten tests en uitgangen op limiet of stilstand tellen niet als succes.

  1. Doorgaan · meten · max. 3Volgende stapUitvoeren · oordeel: geslaagd · limiet · stilstandAandeel regels · tests · coverageMeting

    Als build en test allebei slagen, de iteratielimiet is bereikt of stilstand wordt gedetecteerd (na één herstelpoging als die nog niet is gedaan), gaat de run naar de meting. Naar de meting gaan betekent geen succes.

  2. Baseline · onbekende waarden ongemetenRuntoestandGegevens: baselinevergelijkingAandeel regels · tests · coverageMeting

    De meting leest de baseline die in de runtoestand is bewaard. Het is geen nieuwe baselinerun.

  3. 5 acceptatiegatesMetingGegevens: beoordelingScorecard · beoordeling

    Een geslaagde build, een slagingspercentage van 100% voor tests, een coveragewijziging van −5 of beter (alleen als de baseline bekend is), nul verwijderde tests, nul surefire-uitsluitingen. Een beoordeling wordt alleen gegeven als alle vijf slagen.

  4. 5 acceptatiegatesMetingMislukking · limiet: verwijderd · uitgesloten · misluktRapport mislukking · stilstand

    Slagingen verkregen door tests te verwijderen of via surefire-uitsluitingen, en mislukte builds of tests, blijven mislukkingen. De controles op verwijdering en uitsluiting tellen nul als Git of de POM niet gelezen kan worden, dus ze bewijzen niet dat elke overtreding wordt opgemerkt.

  5. Doorgaan · meten · max. 3Volgende stapObservatie · rapport: limiet · uitgang bij stilstandRapport mislukking · stilstand

    Een run die op de limiet eindigt of vastloopt, gaat toch door de meting maar wordt niet als succes gerapporteerd. Dit markeert hoe er wordt gerapporteerd; het is geen sluiproute langs de meting.

Alle verbindingen even zwaar. Kies een stroom om alleen het pad daarvan te markeren, met genummerde stappen.

  • Doorgetrokken · richting van input, resultaten en vastleggingen
  • Gestreept · uitvoeren, oordeel, verzoek
  • Lange punten · observatie en rapportage, los van het oordeel
  • Kort gestreept · mislukking, stop, limiet
  • Dikke zwarte lijn · de gekozen stroom; nummers geven de volgorde
  • Vak · code- of toestandsgrens, benoemd in de kop
  • Binnenchip · een component binnen die grens
  • Gestippeld vak · buiten die grens
  • Oranje omlijning · waar een model beslist
  • Pipelinestappen · reparatie
  • Verificatie · routering · acceptatie
  • Toestand · vastleggingen
  • Verkennen vóór herstellen

Getekend op basis van niet-openbare implementatie- en ontwikkelverslagen. De namen zijn algemene openbare namen; codepaden en klantinformatie worden niet getoond.

Input na een mislukte rebuild
De modelreparatie krijgt het verzamelde bewijs en de herstelinstructies, maar de meegegeven fouttekst is de oorspronkelijke buildfout, niet de nieuwe van de rebuild. Vastgesteld door de code te lezen; niet in een run gereproduceerd, en de bron is niet gewijzigd.
Beperkingen van de gates
Als de coveragebaseline onbekend is, wordt die gate overgeslagen. De surefire-controle telt de uitsluitingen in de huidige POM, niet het verschil met de baseline. De controles op verwijdering en uitsluiting tellen nul als Git of de POM niet gelezen kan worden.
De casus en de cijfers
Dat zo’n 40 setter-fouten herleid werden tot één oorzaak, de Lombok- en POM-setup, is een diagnose die destijds is vastgelegd. Het is geen cijfer voor doorvoer, nauwkeurigheid of definitieve oplevering.