
REODE
Code migration
Before fixing, find the common cause.
A Java/Spring code-migration agent.
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
A migration loop that keeps repair evidence apart from acceptance.
The original build state is recorded and rule-based conversion applied, then source and POM evidence is gathered before repair. After a model’s edit, build, test and test integrity are checked again, and runs that end at a limit or stall are reported apart from success.
It combines rule-based conversion with model-assisted repair and checks the changed code with build and test. A work project.
REODE work in the repository; pinxlab engagement March 16, 2026 to May 26, 2026
A CLI tool used at work.
Rule conversion
The original state is kept as a baseline; after rule conversion, build and test verify, and the run goes on to measurement.
Source · POMData: source · POMOriginal state · compile
Original checkTakes the Java/Spring source and POM to migrate. Customer code and screens are not shown.
Original state · compile
Original checkData: original compileBaseline · unknowns unmeasuredRun stateBefore conversion, the runtime is selected and the original is compiled, so a build that was already broken is kept in the baseline. Default test and coverage values in the baseline are not measurements.
Original state · compile
Original checkRun · judgment: rule conversionPlan → rule-based conversionConversionThe run graph goes original check → conversion plan → rule-based conversion → verification. Conversions that rules can carry are applied first.
Plan → rule-based conversion
ConversionRun · judgment: build · testbuild · test · iteration +1VerificationBuild and test verify the converted code and the iteration count goes up by one. Results return to the run state.
build · test · iteration +1
VerificationData: result · iterationsContinue · measure · 3 maxNext stepBuild success, test pass rate and the iteration count decide the next step.
Continue · measure · 3 max
Next stepRun · judgment: pass · limit · stallRule share · tests · coverageMeasurementWhen build and test both pass, the iteration limit is reached, or a stall is detected (after one recovery attempt if not yet tried), the run goes to measurement. Going to measurement does not mean success.
Baseline · unknowns unmeasured
Run stateData: baseline comparisonRule share · tests · coverageMeasurementMeasurement reads the baseline kept in the run state. It is not a new baseline run.
5 acceptance gates
MeasurementData: gradingScorecard · gradeBuild success, a 100% test pass rate, a coverage change of −5 or better (only when the baseline is known), zero deleted tests, zero surefire exclusions. A grade is given only when all five pass.
Cause-based repair
Evidence is gathered before fixing and deterministic fixes come first. If the rebuild passes, the model is skipped; if not, the model repairs with evidence and instructions and the result is verified again.
build · test · iteration +1
VerificationData: result · iterationsContinue · measure · 3 maxNext stepBuild success, test pass rate and the iteration count decide the next step.
Continue · measure · 3 max
Next stepRun · judgment: failed · retryCause evidence · 3 sources · POMExplore before fixingIf the build failed or the test pass rate is below 100%, and the iteration limit (3 by default) is not reached, the run goes to repair.
Cause evidence · 3 sources · POM
Explore before fixingObservation · report: save before fixCheckpoint before fixRecovery recordsA checkpoint is saved before the fix. It is best-effort: a failed save does not stop the repair, and a save is no evidence of success.
Cause evidence · 3 sources · POM
Explore before fixingData: evidence · grouped errorsFix known patternsDeterministic fixCollects the failing Java files, the opening lines of up to three sources, annotation, POM and annotation-processor settings, and imports to depth 2. A bounded sample, not an understanding of the whole codebase.
Rebuild check
Deterministic fixRun · judgment: passed · LLM skippedbuild · test · iteration +1VerificationIf a deterministic fix of a known pattern (for example the Lombok setup) makes the rebuild pass, no model is called. The run still returns to verification, so this is not final acceptance.
Rebuild check
Deterministic fixFailure · limit: rebuild failedFix with evidence · instructionsModel repairIf the rebuild fails, the gathered evidence and fix instructions go to model repair. Reading the code shows that the error text passed along is the original build error, not the rebuild’s new one, so this must not be read as “only the remaining errors are passed on”. Not a defect reproduced in a run.
Earlier fix, same error
Recovery recordsData: earlier fixFix with evidence · instructionsModel repairEarlier fixes recorded under the same error signature are looked up and attached. A record added to the input, not model training.
Fix with evidence · instructions
Model repairRun · judgment: verify againbuild · test · iteration +1VerificationThe model fixes through a structured architect/editor path, or a tool-use prompt when that path is unavailable or in recovery, and build and test verify again. A model’s edit is not in itself a passing build.
Pass versus stall
A grade needs all five gates; deleted or excluded tests and limit or stall exits are not counted as success.
Continue · measure · 3 max
Next stepRun · judgment: pass · limit · stallRule share · tests · coverageMeasurementWhen build and test both pass, the iteration limit is reached, or a stall is detected (after one recovery attempt if not yet tried), the run goes to measurement. Going to measurement does not mean success.
Baseline · unknowns unmeasured
Run stateData: baseline comparisonRule share · tests · coverageMeasurementMeasurement reads the baseline kept in the run state. It is not a new baseline run.
5 acceptance gates
MeasurementData: gradingScorecard · gradeBuild success, a 100% test pass rate, a coverage change of −5 or better (only when the baseline is known), zero deleted tests, zero surefire exclusions. A grade is given only when all five pass.
5 acceptance gates
MeasurementFailure · limit: deleted · excluded · failedFailure · stall reportPasses obtained by deleting tests or by surefire exclusions, and failed builds or tests, remain failures. The deletion and exclusion checks count zero when Git or the POM cannot be read, so they are no proof that every violation is caught.
Continue · measure · 3 max
Next stepObservation · report: limit · stall exitFailure · stall reportA run that ends at the limit or stalls still goes through measurement but is not reported as success. This marks how it is reported; it is not a shortcut around measurement.
Every connection at the same weight. Pick a flow to highlight only its path, with numbered steps.
- Solid · direction of input, results and records
- Dashed · run, judgment, request
- Long dots · observation and reporting, apart from judgment
- Short dashes · failure, stop, limit
- Heavy black line · the selected flow; numbers give the order
- Box · code or state boundary, named in its header
- Inner chip · a component of that boundary
- Dotted box · outside that boundary
- Orange outline · where a model decides
- Pipeline steps · repair
- Verification · routing · acceptance
- State · records
- Explore before fixing
Drawn from private implementation and development records. Names are generic public names; no code paths or customer information are shown.
- Input after a failed rebuild
- Model repair receives the gathered evidence and fix instructions, but the error text passed along is the original build error, not the rebuild’s new one. Established by reading the code; not reproduced in a run, and the source was not changed.
- Limits of the gates
- If the coverage baseline is unknown, that gate is skipped. The surefire check counts the exclusions in the current POM, not the difference from the baseline. The deletion and exclusion checks count zero when Git or the POM cannot be read.
- The case and its numbers
- About 40 setter errors traced to one cause, the Lombok and POM setup, is a diagnosis recorded at the time. It is not a throughput, accuracy or final delivery figure.