
REODE
Code migration
Vor dem Korrigieren die gemeinsame Ursache finden.
Ein Agent zur Migration von 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
Eine Migrationsschleife, die Reparaturbelege von der Abnahme trennt.
Der ursprüngliche Build-Zustand wird aufgezeichnet und die regelbasierte Konvertierung angewandt, dann werden vor der Reparatur Belege aus Quellcode und POM gesammelt. Nach der Änderung durch ein Modell werden Build, Test und Testintegrität erneut geprüft, und Läufe, die an einem Limit oder durch Stillstand enden, werden getrennt vom Erfolg gemeldet.
Er verbindet regelbasierte Konvertierung mit modellgestützter Reparatur und prüft den geänderten Code mit Build und Test. Ein Arbeitsprojekt.
REODE-Arbeit im Repository; Einsatz bei pinxlab von March 16, 2026 bis May 26, 2026
Ein CLI-Tool für die Arbeit.
Regelkonvertierung
Der ursprüngliche Zustand wird als Baseline festgehalten; nach der Regelkonvertierung verifizieren Build und Test, und der Lauf geht weiter zur Messung.
Quellcode · POMDaten: Quellcode · POMUrsprünglicher Zustand · Kompilieren
Prüfung des OriginalsÜbernimmt Java/Spring-Quellcode und POM zur Migration. Kundencode und -bildschirme werden nicht gezeigt.
Ursprünglicher Zustand · Kompilieren
Prüfung des OriginalsDaten: ursprüngliches KompilierenBaseline · Unbekanntes ungemessenLaufzustandVor der Konvertierung wird die Runtime gewählt und das Original kompiliert, sodass ein bereits defekter Build in der Baseline festgehalten wird. Standardwerte für Test und Coverage in der Baseline sind keine Messungen.
Ursprünglicher Zustand · Kompilieren
Prüfung des OriginalsAusführen · Urteil: RegelkonvertierungPlan → regelbasierte KonvertierungKonvertierungDer Laufgraph verläuft Prüfung des Originals → Konvertierungsplan → regelbasierte Konvertierung → Verifikation. Konvertierungen, die Regeln leisten können, werden zuerst angewandt.
Plan → regelbasierte Konvertierung
KonvertierungAusführen · Urteil: build · testBuild · Test · Iteration +1VerifikationBuild und Test verifizieren den konvertierten Code, und der Iterationszähler steigt um eins. Die Ergebnisse gehen zurück in den Laufzustand.
Build · Test · Iteration +1
VerifikationDaten: Ergebnis · IterationenWeiter · messen · max. 3Nächster SchrittBuild-Erfolg, Testbestehensquote und Iterationszahl bestimmen den nächsten Schritt.
Weiter · messen · max. 3
Nächster SchrittAusführen · Urteil: bestanden · Limit · StillstandRegelanteil · Tests · CoverageMessungBestehen Build und Test beide, ist das Iterationslimit erreicht oder wird ein Stillstand erkannt (nach einem Wiederherstellungsversuch, falls noch keiner erfolgte), geht der Lauf in die Messung. In die Messung zu gehen bedeutet keinen Erfolg.
Baseline · Unbekanntes ungemessen
LaufzustandDaten: Baseline-VergleichRegelanteil · Tests · CoverageMessungDie Messung liest die im Laufzustand festgehaltene Baseline. Es ist kein neuer Baseline-Lauf.
5 Abnahme-Gates
MessungDaten: BenotungScorecard · NoteErfolgreicher Build, eine Testbestehensquote von 100%, eine Coverage-Änderung von −5 oder besser (nur bei bekannter Baseline), null gelöschte Tests, null Surefire-Ausschlüsse. Eine Note wird nur vergeben, wenn alle fünf bestehen.
Ursachenbasierte Reparatur
Vor dem Korrigieren werden Belege gesammelt, und deterministische Korrekturen kommen zuerst. Besteht der Rebuild, wird das Modell übersprungen; andernfalls repariert das Modell mit Belegen und Anweisungen, und das Ergebnis wird erneut verifiziert.
Build · Test · Iteration +1
VerifikationDaten: Ergebnis · IterationenWeiter · messen · max. 3Nächster SchrittBuild-Erfolg, Testbestehensquote und Iterationszahl bestimmen den nächsten Schritt.
Weiter · messen · max. 3
Nächster SchrittAusführen · Urteil: gescheitert · WiederholungUrsachenbelege · 3 Quellen · POMErkunden vor dem KorrigierenIst der Build gescheitert oder liegt die Testbestehensquote unter 100% und ist das Iterationslimit (standardmäßig 3) nicht erreicht, geht der Lauf in die Reparatur.
Ursachenbelege · 3 Quellen · POM
Erkunden vor dem KorrigierenBeobachtung · Bericht: vor der Korrektur speichernCheckpoint vor der KorrekturWiederherstellungsaufzeichnungenVor der Korrektur wird ein Checkpoint gespeichert, best-effort: Ein fehlgeschlagenes Speichern stoppt die Reparatur nicht, und ein Speichern ist kein Beleg für Erfolg.
Ursachenbelege · 3 Quellen · POM
Erkunden vor dem KorrigierenDaten: Belege · gruppierte FehlerBekannte Muster korrigierenDeterministische KorrekturSammelt die fehlschlagenden Java-Dateien, die ersten Zeilen von bis zu drei Quellen, Einstellungen zu Annotationen, POM und Annotation-Processor sowie Imports bis Tiefe 2. Eine begrenzte Stichprobe, kein Verständnis der gesamten Codebasis.
Rebuild-Prüfung
Deterministische KorrekturAusführen · Urteil: bestanden · LLM entfälltBuild · Test · Iteration +1VerifikationLässt eine deterministische Korrektur eines bekannten Musters (etwa des Lombok-Setups) den Rebuild bestehen, wird kein Modell aufgerufen. Der Lauf kehrt dennoch zur Verifikation zurück, daher ist dies keine finale Abnahme.
Rebuild-Prüfung
Deterministische KorrekturFehlschlag · Limit: Rebuild gescheitertKorrektur mit Belegen · AnweisungenModellreparaturScheitert der Rebuild, gehen die gesammelten Belege und Korrekturanweisungen an die Modellreparatur. Der Code zeigt, dass der mitgegebene Fehlertext der ursprüngliche Build-Fehler ist, nicht der neue des Rebuilds; dies darf also nicht als „nur die verbleibenden Fehler werden weitergegeben“ gelesen werden. Kein in einem Lauf reproduzierter Defekt.
Frühere Korrektur, gleicher Fehler
WiederherstellungsaufzeichnungenDaten: frühere KorrekturKorrektur mit Belegen · AnweisungenModellreparaturFrühere Korrekturen, die unter derselben Fehlersignatur aufgezeichnet sind, werden nachgeschlagen und beigefügt. Eine der Eingabe hinzugefügte Aufzeichnung, kein Modelltraining.
Korrektur mit Belegen · Anweisungen
ModellreparaturAusführen · Urteil: erneut verifizierenBuild · Test · Iteration +1VerifikationDas Modell korrigiert über einen strukturierten Architect/Editor-Pfad oder, wenn dieser nicht verfügbar ist oder eine Wiederherstellung läuft, über einen Tool-Use-Prompt, und Build und Test verifizieren erneut. Die Änderung eines Modells ist für sich noch kein bestandener Build.
Bestehen versus Stillstand
Eine Note erfordert alle fünf Gates; gelöschte oder ausgeschlossene Tests sowie Ausstiege an Limit oder Stillstand zählen nicht als Erfolg.
Weiter · messen · max. 3
Nächster SchrittAusführen · Urteil: bestanden · Limit · StillstandRegelanteil · Tests · CoverageMessungBestehen Build und Test beide, ist das Iterationslimit erreicht oder wird ein Stillstand erkannt (nach einem Wiederherstellungsversuch, falls noch keiner erfolgte), geht der Lauf in die Messung. In die Messung zu gehen bedeutet keinen Erfolg.
Baseline · Unbekanntes ungemessen
LaufzustandDaten: Baseline-VergleichRegelanteil · Tests · CoverageMessungDie Messung liest die im Laufzustand festgehaltene Baseline. Es ist kein neuer Baseline-Lauf.
5 Abnahme-Gates
MessungDaten: BenotungScorecard · NoteErfolgreicher Build, eine Testbestehensquote von 100%, eine Coverage-Änderung von −5 oder besser (nur bei bekannter Baseline), null gelöschte Tests, null Surefire-Ausschlüsse. Eine Note wird nur vergeben, wenn alle fünf bestehen.
5 Abnahme-Gates
MessungFehlschlag · Limit: gelöscht · ausgeschlossen · gescheitertBericht zu Fehlschlag · StillstandBestehen durch gelöschte Tests oder Surefire-Ausschlüsse sowie gescheiterte Builds oder Tests bleiben Fehlschläge. Die Lösch- und Ausschlussprüfungen zählen null, wenn Git oder das POM nicht gelesen werden kann, sind also kein Beweis, dass jeder Verstoß erfasst wird.
Weiter · messen · max. 3
Nächster SchrittBeobachtung · Bericht: Limit · Ausstieg bei StillstandBericht zu Fehlschlag · StillstandEin Lauf, der am Limit oder durch Stillstand endet, durchläuft dennoch die Messung, wird aber nicht als Erfolg gemeldet. Das kennzeichnet die Art der Meldung; es ist keine Abkürzung an der Messung vorbei.
Alle Verbindungen in gleicher Stärke. Wird ein Ablauf gewählt, ist nur sein Pfad hervorgehoben, mit nummerierten Schritten.
- Durchgezogen · Richtung von Eingaben, Ergebnissen und Aufzeichnungen
- Gestrichelt · Ausführen, Urteil, Anfrage
- Lang gepunktet · Beobachtung und Berichte, getrennt vom Urteil
- Kurz gestrichelt · Fehlschlag, Stopp, Limit
- Dicke schwarze Linie · der gewählte Ablauf; Nummern geben die Reihenfolge an
- Kasten · Code- oder Zustandsgrenze, benannt in der Kopfzeile
- Innerer Chip · eine Komponente dieser Grenze
- Gepunkteter Kasten · außerhalb dieser Grenze
- Orange Umrandung · wo ein Modell entscheidet
- Pipeline-Schritte · Reparatur
- Verifikation · Routing · Abnahme
- Zustand · Aufzeichnungen
- Erkunden vor dem Korrigieren
Gezeichnet nach nicht öffentlichen Implementierungs- und Entwicklungsaufzeichnungen. Die Namen sind allgemeine öffentliche Bezeichnungen; Codepfade und Kundeninformationen werden nicht gezeigt.
- Eingabe nach gescheitertem Rebuild
- Die Modellreparatur erhält die gesammelten Belege und Korrekturanweisungen, doch der mitgegebene Fehlertext ist der ursprüngliche Build-Fehler, nicht der neue des Rebuilds. Durch Lesen des Codes festgestellt; nicht in einem Lauf reproduziert, und der Quellcode wurde nicht geändert.
- Grenzen der Gates
- Ist die Coverage-Baseline unbekannt, wird dieses Gate übersprungen. Die Surefire-Prüfung zählt die Ausschlüsse im aktuellen POM, nicht die Differenz zur Baseline. Die Lösch- und Ausschlussprüfungen zählen null, wenn Git oder das POM nicht gelesen werden kann.
- Der Fall und seine Zahlen
- Dass rund 40 Setter-Fehler auf eine Ursache, das Lombok- und POM-Setup, zurückgingen, ist eine damals aufgezeichnete Diagnose. Es ist keine Durchsatz-, Genauigkeits- oder finale Lieferzahl.