Il personaggio originale di REODE, rifinito: un volto di axolotl sorridente color crema e rosa con cuffie blu navy e lenti ciano
Torna alla sala

REODE

Code migration

Prima di correggere, trovare la causa comune.

Un agente di migrazione di codice Java/Spring.

2026.03 — 2026.04

Progetto di lavoro · sistema di migrazione e verifica

  • CLIImplementato · progetto di lavoro

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

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.

Mappa del ciclo di riparazione · da registri privati di implementazione
Ciclo di riparazione della migrazione REODELo stato della build originale viene conservato come baseline, si applica la conversione basata su regole, e build e test verificano il risultato. In caso di fallimento, prima di qualsiasi correzione si raccolgono prove da sorgenti, annotazioni e POM, e i pattern noti vengono corretti in modo deterministico e ricompilati. Se la rebuild passa, non si chiama alcun modello; se fallisce, un modello ripara con le prove raccolte e le istruzioni di correzione, e il risultato viene verificato di nuovo. Le esecuzioni che terminano al limite di iterazioni o in stallo passano alla misurazione ma non contano come successo, e la scorecard assegna un voto solo quando passano tutti e cinque i gate di accettazione.Sorgenti · POMInput di migrazione privatoScorecard · votoNon è un deploymentRapporto di fallimento · stalloNon contato come successoVerifica dell’originaleStato originale · compilazioneStato dell’esecuzioneBaseline · valori ignoti non misuratiRegistri di ripristinoCheckpoint prima della correzioneCorrezione precedente, stesso erroreConversionePiano → conversione basata su regoleEsplorare prima di correggereProve della causa · 3 sorgenti · POMCorrezione deterministicaCorrezione dei pattern notiVerifica della rebuildRiparazione del modelloCorrezione con prove · istruzioniVerificabuild · test · iterazione +1Passo successivoContinua · misura · max 3MisurazioneQuota di regole · test · copertura5 gate di accettazioneIngresso · baselineRegistri di ripristinoConversione · riparazioneVerifica · uscita1 sorgenti · POM · Sorgenti · POM → Stato originale · compilazione12compilazione originale3 conversione a regole · Stato originale · compilazione → Piano → conversione basata su regole34build · test5risultato · iterazioni6superato · limite · stallo7confronto con la baseline8 valutazione · 5 gate di accettazione → Scorecard · voto81risultato · iterazioni2 fallito · nuovo tentativo · Continua · misura · max 3 → Prove della causa · 3 sorgenti · POM23salvataggio prima della correzione4prove · errori raggruppati5superato · LLM saltato6rebuild fallita7 correzione precedente · Correzione precedente, stesso errore → Correzione con prove · istruzioni78nuova verifica1superato · limite · stallo2confronto con la baseline3 valutazione · 5 gate di accettazione → Scorecard · voto34eliminati · esclusi · falliti5limite · uscita per stallo

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.

  1. Sorgenti · POMDati: sorgenti · POMStato originale · compilazioneVerifica dell’originale

    Riceve i sorgenti Java/Spring e il POM da migrare. Codice e schermate dei clienti non sono mostrati.

  2. Stato originale · compilazioneVerifica dell’originaleDati: compilazione originaleBaseline · valori ignoti non misuratiStato dell’esecuzione

    Prima 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.

  3. Stato originale · compilazioneVerifica dell’originaleEsecuzione · giudizio: conversione a regolePiano → conversione basata su regoleConversione

    Il 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.

  4. Piano → conversione basata su regoleConversioneEsecuzione · giudizio: build · testbuild · test · iterazione +1Verifica

    Build e test verificano il codice convertito e il conteggio delle iterazioni sale di uno. I risultati tornano nello stato dell’esecuzione.

  5. build · test · iterazione +1VerificaDati: risultato · iterazioniContinua · misura · max 3Passo successivo

    Esito della build, tasso di superamento dei test e numero di iterazioni decidono il passo successivo.

  6. Continua · misura · max 3Passo successivoEsecuzione · giudizio: superato · limite · stalloQuota di regole · test · coperturaMisurazione

    Quando 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.

  7. Baseline · valori ignoti non misuratiStato dell’esecuzioneDati: confronto con la baselineQuota di regole · test · coperturaMisurazione

    La misurazione legge la baseline conservata nello stato dell’esecuzione. Non è una nuova esecuzione della baseline.

  8. 5 gate di accettazioneMisurazioneDati: valutazioneScorecard · voto

    Build 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.

  1. build · test · iterazione +1VerificaDati: risultato · iterazioniContinua · misura · max 3Passo successivo

    Esito della build, tasso di superamento dei test e numero di iterazioni decidono il passo successivo.

  2. Continua · misura · max 3Passo successivoEsecuzione · giudizio: fallito · nuovo tentativoProve della causa · 3 sorgenti · POMEsplorare prima di correggere

    Se 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.

  3. Prove della causa · 3 sorgenti · POMEsplorare prima di correggereOsservazione · resoconto: salvataggio prima della correzioneCheckpoint prima della correzioneRegistri di ripristino

    Prima della correzione si salva un checkpoint. È best-effort: un salvataggio fallito non ferma la riparazione, e un salvataggio non è prova di successo.

  4. Prove della causa · 3 sorgenti · POMEsplorare prima di correggereDati: prove · errori raggruppatiCorrezione dei pattern notiCorrezione deterministica

    Raccoglie 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.

  5. Verifica della rebuildCorrezione deterministicaEsecuzione · giudizio: superato · LLM saltatobuild · test · iterazione +1Verifica

    Se 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.

  6. Verifica della rebuildCorrezione deterministicaFallimento · limite: rebuild fallitaCorrezione con prove · istruzioniRiparazione del modello

    Se 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.

  7. Correzione precedente, stesso erroreRegistri di ripristinoDati: correzione precedenteCorrezione con prove · istruzioniRiparazione del modello

    Le correzioni precedenti registrate con la stessa firma d’errore vengono recuperate e allegate. Un registro aggiunto all’input, non un addestramento del modello.

  8. Correzione con prove · istruzioniRiparazione del modelloEsecuzione · giudizio: nuova verificabuild · test · iterazione +1Verifica

    Il 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.

  1. Continua · misura · max 3Passo successivoEsecuzione · giudizio: superato · limite · stalloQuota di regole · test · coperturaMisurazione

    Quando 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.

  2. Baseline · valori ignoti non misuratiStato dell’esecuzioneDati: confronto con la baselineQuota di regole · test · coperturaMisurazione

    La misurazione legge la baseline conservata nello stato dell’esecuzione. Non è una nuova esecuzione della baseline.

  3. 5 gate di accettazioneMisurazioneDati: valutazioneScorecard · voto

    Build 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.

  4. 5 gate di accettazioneMisurazioneFallimento · limite: eliminati · esclusi · fallitiRapporto di fallimento · stallo

    I 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.

  5. Continua · misura · max 3Passo successivoOsservazione · resoconto: limite · uscita per stalloRapporto di fallimento · stallo

    Un’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.