
REODE
Code migration
Vóór het herstellen eerst de gemeenschappelijke oorzaak.
Een agent voor de migratie van Java/Spring-code.
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
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.
Regelconversie
De oorspronkelijke toestand wordt als baseline bewaard; na de regelconversie verifiëren build en test, en gaat de run door naar de meting.
Bron · POMGegevens: bron · POMOorspronkelijke toestand · compileren
Controle van het origineelNeemt de te migreren Java/Spring-bron en POM aan. Klantcode en -schermen worden niet getoond.
Oorspronkelijke toestand · compileren
Controle van het origineelGegevens: oorspronkelijke compilatieBaseline · onbekende waarden ongemetenRuntoestandVóó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.
Oorspronkelijke toestand · compileren
Controle van het origineelUitvoeren · oordeel: regelconversiePlan → regelgebaseerde conversieConversieDe rungraaf loopt van controle van het origineel → conversieplan → regelgebaseerde conversie → verificatie. Conversies die regels aankunnen, worden eerst toegepast.
Plan → regelgebaseerde conversie
ConversieUitvoeren · oordeel: build · testbuild · test · iteratie +1VerificatieBuild en test verifiëren de geconverteerde code en de iteratieteller gaat met één omhoog. De resultaten gaan terug naar de runtoestand.
build · test · iteratie +1
VerificatieGegevens: resultaat · iteratiesDoorgaan · meten · max. 3Volgende stapBuildsucces, slagingspercentage van de tests en het aantal iteraties bepalen de volgende stap.
Doorgaan · meten · max. 3
Volgende stapUitvoeren · oordeel: geslaagd · limiet · stilstandAandeel regels · tests · coverageMetingAls 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.
Baseline · onbekende waarden ongemeten
RuntoestandGegevens: baselinevergelijkingAandeel regels · tests · coverageMetingDe meting leest de baseline die in de runtoestand is bewaard. Het is geen nieuwe baselinerun.
5 acceptatiegates
MetingGegevens: beoordelingScorecard · beoordelingEen 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.
build · test · iteratie +1
VerificatieGegevens: resultaat · iteratiesDoorgaan · meten · max. 3Volgende stapBuildsucces, slagingspercentage van de tests en het aantal iteraties bepalen de volgende stap.
Doorgaan · meten · max. 3
Volgende stapUitvoeren · oordeel: mislukt · opnieuwOorzaakbewijs · 3 bronnen · POMVerkennen vóór herstellenAls 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.
Oorzaakbewijs · 3 bronnen · POM
Verkennen vóór herstellenObservatie · rapport: opslaan vóór correctieCheckpoint vóór de correctieHerstelvastleggingenVóó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.
Oorzaakbewijs · 3 bronnen · POM
Verkennen vóór herstellenGegevens: bewijs · gegroepeerde foutenBekende patronen corrigerenDeterministische correctieVerzamelt 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.
Rebuildcontrole
Deterministische correctieUitvoeren · oordeel: geslaagd · LLM overgeslagenbuild · test · iteratie +1VerificatieAls 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.
Rebuildcontrole
Deterministische correctieMislukking · limiet: rebuild misluktCorrectie met bewijs · instructiesModelreparatieMislukt 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.
Eerdere correctie, zelfde fout
HerstelvastleggingenGegevens: eerdere correctieCorrectie met bewijs · instructiesModelreparatieEerdere correcties die onder dezelfde foutsignatuur zijn vastgelegd, worden opgezocht en bijgevoegd. Een vastlegging die aan de input wordt toegevoegd, geen modeltraining.
Correctie met bewijs · instructies
ModelreparatieUitvoeren · oordeel: opnieuw verifiërenbuild · test · iteratie +1VerificatieHet 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.
Doorgaan · meten · max. 3
Volgende stapUitvoeren · oordeel: geslaagd · limiet · stilstandAandeel regels · tests · coverageMetingAls 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.
Baseline · onbekende waarden ongemeten
RuntoestandGegevens: baselinevergelijkingAandeel regels · tests · coverageMetingDe meting leest de baseline die in de runtoestand is bewaard. Het is geen nieuwe baselinerun.
5 acceptatiegates
MetingGegevens: beoordelingScorecard · beoordelingEen 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.
5 acceptatiegates
MetingMislukking · limiet: verwijderd · uitgesloten · misluktRapport mislukking · stilstandSlagingen 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.
Doorgaan · meten · max. 3
Volgende stapObservatie · rapport: limiet · uitgang bij stilstandRapport mislukking · stilstandEen 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.