
REODE
Code migration
Prima di correggere, trovare la causa comune.
Un agente di migrazione di codice Java/Spring.
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
Un ciclo di migrazione che tiene le prove della riparazione separate dall’accettazione.
Lo stato della build originale viene registrato e si applica la conversione basata su regole, poi prima della riparazione si raccolgono prove da sorgenti e POM. Dopo la modifica di un modello, build, test e integrità dei test vengono ricontrollati, e le esecuzioni che terminano a un limite o in stallo sono riportate separatamente dal successo.
Combina la conversione basata su regole con la riparazione assistita da un modello e verifica il codice modificato con build e test. Un progetto di lavoro.
Lavoro su REODE nel repository; incarico presso pinxlab dal March 16, 2026 al May 26, 2026
Uno strumento CLI usato per lavoro.
Conversione a regole
Lo stato originale viene conservato come baseline; dopo la conversione a regole, build e test verificano e l’esecuzione prosegue fino alla misurazione.
Sorgenti · POMDati: sorgenti · POMStato originale · compilazione
Verifica dell’originaleRiceve i sorgenti Java/Spring e il POM da migrare. Codice e schermate dei clienti non sono mostrati.
Stato originale · compilazione
Verifica dell’originaleDati: compilazione originaleBaseline · valori ignoti non misuratiStato dell’esecuzionePrima della conversione si sceglie il runtime e si compila l’originale, così una build già rotta resta nella baseline. I valori predefiniti di test e copertura nella baseline non sono misurazioni.
Stato originale · compilazione
Verifica dell’originaleEsecuzione · giudizio: conversione a regolePiano → conversione basata su regoleConversioneIl grafo dell’esecuzione procede verifica dell’originale → piano di conversione → conversione basata su regole → verifica. Le conversioni che le regole possono gestire vengono applicate per prime.
Piano → conversione basata su regole
ConversioneEsecuzione · giudizio: build · testbuild · test · iterazione +1VerificaBuild e test verificano il codice convertito e il conteggio delle iterazioni sale di uno. I risultati tornano nello stato dell’esecuzione.
build · test · iterazione +1
VerificaDati: risultato · iterazioniContinua · misura · max 3Passo successivoEsito della build, tasso di superamento dei test e numero di iterazioni decidono il passo successivo.
Continua · misura · max 3
Passo successivoEsecuzione · giudizio: superato · limite · stalloQuota di regole · test · coperturaMisurazioneQuando build e test passano entrambi, si raggiunge il limite di iterazioni o si rileva uno stallo (dopo un tentativo di ripristino, se non ancora fatto), l’esecuzione passa alla misurazione. Passare alla misurazione non significa successo.
Baseline · valori ignoti non misurati
Stato dell’esecuzioneDati: confronto con la baselineQuota di regole · test · coperturaMisurazioneLa misurazione legge la baseline conservata nello stato dell’esecuzione. Non è una nuova esecuzione della baseline.
5 gate di accettazione
MisurazioneDati: valutazioneScorecard · votoBuild riuscita, tasso di superamento dei test al 100%, variazione della copertura di −5 o migliore (solo se la baseline è nota), zero test eliminati, zero esclusioni surefire. Un voto viene assegnato solo se tutti e cinque passano.
Riparazione basata sulla causa
Prima di correggere si raccolgono prove e le correzioni deterministiche vengono prima. Se la rebuild passa, il modello viene saltato; altrimenti il modello ripara con prove e istruzioni e il risultato viene verificato di nuovo.
build · test · iterazione +1
VerificaDati: risultato · iterazioniContinua · misura · max 3Passo successivoEsito della build, tasso di superamento dei test e numero di iterazioni decidono il passo successivo.
Continua · misura · max 3
Passo successivoEsecuzione · giudizio: fallito · nuovo tentativoProve della causa · 3 sorgenti · POMEsplorare prima di correggereSe la build è fallita o il tasso di superamento dei test è sotto il 100%, e il limite di iterazioni (3 per impostazione predefinita) non è raggiunto, l’esecuzione passa alla riparazione.
Prove della causa · 3 sorgenti · POM
Esplorare prima di correggereOsservazione · resoconto: salvataggio prima della correzioneCheckpoint prima della correzioneRegistri di ripristinoPrima della correzione si salva un checkpoint. È best-effort: un salvataggio fallito non ferma la riparazione, e un salvataggio non è prova di successo.
Prove della causa · 3 sorgenti · POM
Esplorare prima di correggereDati: prove · errori raggruppatiCorrezione dei pattern notiCorrezione deterministicaRaccoglie i file Java in errore, le prime righe di un massimo di tre sorgenti, le impostazioni di annotazioni, POM e annotation processor, e gli import fino a profondità 2. Un campione delimitato, non una comprensione dell’intera codebase.
Verifica della rebuild
Correzione deterministicaEsecuzione · giudizio: superato · LLM saltatobuild · test · iterazione +1VerificaSe la correzione deterministica di un pattern noto (per esempio la configurazione di Lombok) fa passare la rebuild, non si chiama alcun modello. L’esecuzione torna comunque alla verifica, quindi non è l’accettazione finale.
Verifica della rebuild
Correzione deterministicaFallimento · limite: rebuild fallitaCorrezione con prove · istruzioniRiparazione del modelloSe la rebuild fallisce, le prove raccolte e le istruzioni di correzione passano alla riparazione del modello. La lettura del codice mostra che il testo d’errore trasmesso è l’errore di build originale, non quello nuovo della rebuild, quindi non va letto come «vengono passati solo gli errori rimanenti». Non è un difetto riprodotto in un’esecuzione.
Correzione precedente, stesso errore
Registri di ripristinoDati: correzione precedenteCorrezione con prove · istruzioniRiparazione del modelloLe correzioni precedenti registrate con la stessa firma d’errore vengono recuperate e allegate. Un registro aggiunto all’input, non un addestramento del modello.
Correzione con prove · istruzioni
Riparazione del modelloEsecuzione · giudizio: nuova verificabuild · test · iterazione +1VerificaIl modello corregge tramite un percorso strutturato architect/editor, o con un prompt di tool use quando quel percorso non è disponibile o è in ripristino, e build e test verificano di nuovo. La modifica di un modello non è di per sé una build superata.
Superamento contro stallo
Un voto richiede tutti e cinque i gate; test eliminati o esclusi e uscite per limite o stallo non contano come successo.
Continua · misura · max 3
Passo successivoEsecuzione · giudizio: superato · limite · stalloQuota di regole · test · coperturaMisurazioneQuando build e test passano entrambi, si raggiunge il limite di iterazioni o si rileva uno stallo (dopo un tentativo di ripristino, se non ancora fatto), l’esecuzione passa alla misurazione. Passare alla misurazione non significa successo.
Baseline · valori ignoti non misurati
Stato dell’esecuzioneDati: confronto con la baselineQuota di regole · test · coperturaMisurazioneLa misurazione legge la baseline conservata nello stato dell’esecuzione. Non è una nuova esecuzione della baseline.
5 gate di accettazione
MisurazioneDati: valutazioneScorecard · votoBuild riuscita, tasso di superamento dei test al 100%, variazione della copertura di −5 o migliore (solo se la baseline è nota), zero test eliminati, zero esclusioni surefire. Un voto viene assegnato solo se tutti e cinque passano.
5 gate di accettazione
MisurazioneFallimento · limite: eliminati · esclusi · fallitiRapporto di fallimento · stalloI superamenti ottenuti eliminando test o con esclusioni surefire, e le build o i test falliti, restano fallimenti. I controlli su eliminazioni ed esclusioni contano zero quando Git o il POM non possono essere letti, quindi non provano che ogni violazione venga intercettata.
Continua · misura · max 3
Passo successivoOsservazione · resoconto: limite · uscita per stalloRapporto di fallimento · stalloUn’esecuzione che termina al limite o in stallo passa comunque per la misurazione ma non viene riportata come successo. Questo distingue il modo di riportare; non è una scorciatoia che salta la misurazione.
Tutte le connessioni con lo stesso peso. Scegliendo un flusso se ne evidenzia solo il percorso, con passi numerati.
- Continua · direzione di input, risultati e registri
- Tratteggiata · esecuzione, giudizio, richiesta
- Punti lunghi · osservazione e resoconto, separati dal giudizio
- Tratteggio corto · fallimento, arresto, limite
- Linea nera spessa · il flusso scelto; i numeri danno l’ordine
- Riquadro · confine di codice o di stato, nominato nell’intestazione
- Chip interno · un componente di quel confine
- Riquadro punteggiato · fuori da quel confine
- Contorno arancione · dove decide un modello
- Passi della pipeline · riparazione
- Verifica · instradamento · accettazione
- Stato · registri
- Esplorare prima di correggere
Disegnato da registri privati di implementazione e sviluppo. I nomi sono denominazioni pubbliche generiche; percorsi del codice e informazioni dei clienti non sono mostrati.
- Input dopo una rebuild fallita
- La riparazione del modello riceve le prove raccolte e le istruzioni di correzione, ma il testo d’errore trasmesso è l’errore di build originale, non quello nuovo della rebuild. Accertato leggendo il codice; non riprodotto in un’esecuzione, e i sorgenti non sono stati modificati.
- Limiti dei gate
- Se la baseline della copertura è ignota, quel gate viene saltato. Il controllo surefire conta le esclusioni nel POM attuale, non la differenza rispetto alla baseline. I controlli su eliminazioni ed esclusioni contano zero quando Git o il POM non possono essere letti.
- Il caso e i suoi numeri
- Che circa 40 errori di setter risalissero a una sola causa, la configurazione di Lombok e del POM, è una diagnosi registrata all’epoca. Non è un dato di throughput, accuratezza o consegna finale.