Modernizziamo il legacy enterprise con AI agent governati. Parità verificabile.
Un agente AI lasciato solo produce codice che compila ma diverge in silenzio. CATALYST aggiunge gate deterministici, evidenze pronte all'audit, knowledge capture che resta al cliente.
Modernizzazione assicurata del legacy: migriamo i sistemi di banche e assicurazioni verso stack moderni con una pipeline AI-native governata — skill, hook, sub-agent e plugin di Claude Code.
Banking, insurance e PA italiana sotto DORA · EU AI Act · NIS2 · L. 132/2025.
100+ applicazioni nel perimetro del programma, 15+ già modernizzate e consegnate (300.000+ righe legacy), su un primario gruppo bancario-assicurativo italiano — VB.NET / .NET Framework → .NET 10 / C# 14.
Parity assurance: audit semantico avversariale legacy↔migrato, contratto di copertura a 3 stati e gate deterministici, con evidenze pronte per il regolatorio EU. Niente cutover senza sign-off di parità.
Nel 2026 la traduzione atomicadel codice si sta commoditizzando — ma modernizzare un parco di sistemi mission-critical interdipendenti, senza test e a parità di comportamento, resta tutt'altro che banale. Un agente lasciato in autonomia produce codice che supera i test sintattici e diverge silenziosamente dalla produzione. CATALYST esegue la modernizzazione con l'assurance dentro: governa e verifica i frontier model, non li sostituisce.
DORA, AI Act, NIS2, BCBS 239, FRIA, Banca d'Italia Circ. 285, AGID e Legge 132/2025 trattati come input di disegno. Evidenze pronte all'audit per ciascun dominio.
Replay del traffico di produzione, side-by-side execution, diff con threshold dichiarati ex ante e sign-off del business owner. Niente cutover senza sign-off di parità.
Lavoro probabilistico → agente LLM. Lavoro deterministico (schema, build, grep, AST) → script no-LLM. I gate tra le fasi sono machine-checkable, non checklist soggettive.
Programma reale: 100+ applicazioni nel perimetro, 15+ già modernizzate e consegnate, 300.000+ righe di codice legacy, su un primario gruppo bancario-assicurativo italiano. Target .NET 10, C# 14. Non è un PowerPoint.
Trent'anni di debito stratificato — mainframe COBOL/PL-I, desktop VB6/.NET Framework, front-end moderni con business logic embedded nel core. Velocità di change in calo, concentrazione del rischio su pochi SME prossimi al pensionamento, pressione regolatoria crescente. Sistemi che nel 2020 erano “vecchi ma funzionanti” oggi sono passività regolamentari documentate.
Programmi di modernizzazione strutturati che falliscono o sforano significativamente (McKinsey 2025; Standish CHAOS Beyond Infinity).
DORA, EU AI Act, NIS2, Banca d'Italia Circ. 285, AGID — in enforcement tra 2025 e 2027. Sanzioni fino al 3% del turnover globale (AI Act, sistemi high-risk), oltre alle penali DORA per i fornitori ICT critici.
Penetrazione AI: 70% assicurazioni, 59% banche italiane. Solo il 16% ha introdotto assetti di governance dell'IA dedicati (Banca d'Italia + OCSE, apr. 2026).
Derivati dall'esecuzione su programmi reali, dalla letteratura indipendente e dall'esegesi delle norme europee e italiane. Raggruppati in tre famiglie: il lavoro operativo, il filtro tecnico, i vincoli che diventano disegno.
Come si svolge il lavoro
Trasformazioni reversibili. Pattern strangler fig. Il legacy resta in piedi come fallback fino al sign-off di equivalenza.
Il comportamento del codice legacy è l'oracolo: ogni elemento è coperto dal contratto a 3 stati e dall'audit semantico, senza richiedere una test suite preesistente. La generazione automatica di test è sul roadmap.
Knowledge curator agent come watchdog continuo: ogni applicazione migliora le successive. Asset di metodo trasferibile al cliente.
Il filtro con cui valutare ogni decisione
Review singola / dual control / four-eyes — spettro graduato per livello di rischio AI Act. Codificato in hook bloccanti.
Lavoro probabilistico → agente LLM. Lavoro deterministico (schema, build, grep, AST) → script no-LLM. I gate sono machine-checkable.
Ogni artefatto tracciato a prompt, modello, agente, revisore, hash del contesto. Requisito DORA Art. 9 e AI Act Art. 12.
Vincoli esterni che diventano input di disegno
Niente cutover senza sign-off di parità: replay del traffico di produzione, side-by-side execution, diff con threshold dichiarati ex ante.
Naming, pattern, checklist e workflow del cliente sono input di configurazione, non vincoli a posteriori. Project context come contratto epistemico.
DORA, AI Act, NIS2, GDPR sono input di disegno. Ogni dominio produce evidenze pronte all'audit nei formati richiesti.
Cinque domini operativi convergono nelle tre fasi di pipeline. Ogni dominio ha un obiettivo, capability, output strutturato e un gate di uscita. Oggi il framework è in produzione su .NET; l'architettura è stack-agnostic e nuovi stack (PHP, COBOL, PL/I, J2EE, SAP ABAP) si aggiungono come domain adapter, senza fork del core.
Mappatura completa del sistema legacy, dipendenze, business logic embedded e rischi di migrazione. Reverse engineering accelerato con tagging epistemico esplicito.
Specifica per la migrazione, record-keeping per AI Act Art. 12, asset di conoscenza per il team del cliente. Documentazione bilateralmente collegata al simbolo di codice.
Trasformazione nel target stack preservando esattamente la logica di business attiva. Parità funzionale non negoziabile. Ottimizzazioni segnalate come raccomandazioni post-migrazione.
Il dominio dove il framework prende la posizione più forte. L'equivalenza non è raccomandazione — è gate non negoziabile. Senza sign-off di parità, niente cutover in produzione.
Sicurezza del codice modernizzato e conformità normativa, con una superficie agentica ridotta per design: controlli deterministici, tool in sola lettura, verifier read-only, distribuzione chiusa.
| Tecnologia sorgente | Target primario | Target alternativo | |
|---|---|---|---|
| VB.NET / .NET Framework (3.5–4.x) | .NET 10 / C# 14 / WPF | Blazor / .NET MAUI | |
| COBOL / CICS / IMS | Java / Spring Boot | Kotlin / .NET | |
| PL/I | Java / Spring Boot | C# / .NET | |
| J2EE / Struts / EJB | Spring Boot 3 | Quarkus / Micronaut | |
| SAP ABAP (custom) | Java / Spring | Clean-core / BTP | |
| PHP legacy (5.x / 7.x) | PHP 8.x + Symfony 7+ | Laravel 11+ |
Primario gruppo bancario-assicurativo IT — programma in produzione
300.000+ righe di codice legacy migrate
Il calendario è dilatato dai cicli di validazione esterni
Moduli Annex III AI Act high-risk
Stesso linguaggio, stack aggiornato (es. C# legacy → C# 14). Distanza minima, rischio di divergenza contenuto.
Stesso paradigma, linguaggio diverso (es. VB.NET → C# 14). Mappatura idiomatica, non traduzione letterale.
Framework o modello applicativo diverso (es. WinForms → WPF / Blazor).
Salto architetturale (es. COBOL → Java / microservizi). Distanza massima, assurance più stringente.
Un caso reale (anonimizzato) di trasformazione: un job di quietanzamento massivo scritto in VB.NET BackgroundWorker con connection string hardcoded e UI freeze su 250k+ polizze, modernizzato in un service C# 14 / .NET 10 con DbContextFactory, async pipeline, cancellation token e logging strutturato. La stored procedure non viene modificata — è vincolo del cliente.
BackgroundWorker → async/await + CancellationToken
Secret hardcoded → IOptions + secret store
EF6 EDMX → EF Core 10 code-first via factory
Solo perf (sync→async); output identico
La modernizzazione AI-driven fallisce silenziosamente quando il sistema modernizzato compila e supera i test sintattici ma diverge dal comportamento di produzione sugli edge case accumulati in decenni. CATALYST rende la parità un gate obbligatoriosu due livelli: l'audit semantico statico legacy↔migrato del suo verifier read-only, e i cicli di validazione comportamentale in pre-produzione — replay, side-by-side, diff — che il cliente esegue e CATALYST orchestra, raccogliendone le evidenze fino al sign-off. Evidenza riproducibile e verificabile, non una prova matematica; l'automazione del dual-run è sul roadmap.
Registrazione di un campione rappresentativo di transazioni — tipicamente una settimana di produzione + i casi limite identificati in DISCOVER. SQL Profiler · application log · transaction journal.
Ambiente pre-produzione con dati allineati. Stessi input, due sistemi, due set di output capturati: funzionali · query SQL emesse · log · stato finale del database.
Output testuali → exact match (diff hex se richiesto). Output numerici → range di tolleranza firmato dal business owner. Log → diff strutturale: stessi event, stessi level, payload tollerato.
Pacchetto firmato con tutti i diff residui dichiarati e classificati come atteso / non atteso / da indagare. Compliance evidence per AI Act Art. 14 (human oversight) e Art. 15 (accuracy, robustness).
Pattern industriale di parallel execution legacy ↔ cloud, con replay live di eventi di produzione e cifra di equivalenza funzionale. Precedente industriale pubblico: un primario gruppo bancario europeo ha dichiarato pubblicamente di aver ottenuto l'approvazione del regolatore sulla migrazione del proprio core con questa stessa metodologia.
La fase Validate di IBM watsonx Code Assistant for Z formalizza un pattern equivalente per il mainframe Z, con sistemi side-by-side e validazione progressiva. CATALYST lo eredita e lo specializza come procedura obbligatoria a livello di gate.
Liu et al. 2025/2026, “Preserving Business Logic in Legacy System Modernization”. Zhang et al. (IBM Research, ICSE 2026), pipeline ibride neuro-simboliche per traduzione COBOL→Java. Il consenso indipendente è netto: equivalenza comportamentale o niente.
“Questa firma del business owner contribuisce alla compliance evidence per AI Act Art. 14 (human oversight) e Art. 15(accuracy & robustness). Per workload bancari il pattern operativo dimostrato come efficace è il confronto SQL Profiler-based, side-by-side, su pre-produzione con dati reali.”
La parità si dimostra con un audit semantico avversariale del codice — legacy contro migrato — eseguito da un agente read-only che non può scrivere, e con un contratto di copertura in cui ogni elemento del legacy finisce in esattamente uno di tre stati. Validato a schema, con coverage ≥ 0.90 perché il gate passi. Funziona anche senza una test suite preesistente: l'oracolo è il comportamento del codice legacy stesso.
L'elemento ha un target esplicito nel codice modernizzato (file:riga). Presente e tracciato, non perso per strada.
Esclusione consapevole, motivata e referenziata. Una scelta firmata, non una dimenticanza silenziosa.
Codice morto, dimostrato tale via analisi statica e documentato. Non riscritto per inerzia, non ignorato in silenzio.
Il verificatore semantico non può modificare il codice: confronta legacy e migrato cercando attivamente le divergenze. Nessun agente può dichiarare sé stesso “passato”.
Confronto elemento per elemento, legacy ↔ migrato: regole di business spostate, semantica alterata, edge case persi, aggiunte non giustificate.
Build, schema, grep e AST → controlli a exit code riproducibile, non checklist soggettive. Un cluster di ≥2 WARN sullo stesso tema diventa FAIL; un FAIL si supera solo con motivazione, loggata in bypass.yaml.
Gran parte del legacy mission-critical non ha test. Non li inventiamo a posteriori: la parità si misura sul comportamento del codice legacy, l'unica fonte di verità disponibile.
“Non è formal verification: nessuna prova matematica di equivalenza. È probabilismo governato — audit avversariale, copertura esplicita, gate deterministici e sign-off umano. La rivendicazione corretta è auditabile, governata e accountable, non ‘provata’.”
Il framework si articola su tre strati che separano l'universale (Pipeline Core) dallo specifico (Domain Adapter) dal contesto cliente (Knowledge). La pipeline di lavoro attraversa tre fasi, ciascuna con un gate deterministico: /check-phase deve restituire PASS o bypass tracciato con motivazione. Niente fase chiude senza esito firmato.
Definisce come la pipeline lavora, indipendentemente da cosa migra. Skill generiche, agent orchestratori, hook deterministici, schema YAML dei contratti operativi.
Specializza il core su uno stack. Domain expert agent, detection rules, migration pattern. Aggiungere un nuovo stack = scrivere un nuovo Layer 2, senza toccare il core.
Ospita lo specifico del cliente: project context, knowledge base accumulata, documentation per applicazione e stato operativo del programma. Cresce con il progetto, resta al cliente.
Separazione netta: skill no-LLM per lavoro deterministico (grep, AST, schema, build). Agent LLM per lavoro interpretativo (cluster escalation, semantic drift, judgement).
Protezione legacy · gate enforcement · write perimeter · auto-build debounced · load memory for stack. Non passano dal modello, non possono allucinare.
legacy-analyzer · migration-executor · verifier-semantic · knowledge-curator. Opus 4.8 max effort sui task critici; Sonnet 4.6 high per la curation.
Mai grep su prosa per estrarre stato. Tre YAML schema-validati come Single Source of Truth: apps.yaml · batch.yaml · work-order.yaml.
Un gate FAIL bloccante è bypassabile solo via --force --reason "motivo concreto". Ogni bypass viene loggato in bypass.yaml e incluso come WARNING permanente nei report a valle.
/batch-prep identifica shared library, native binding e DAG di dipendenze; /batch-order calcola topological sort (Kahn) producendo wave parallelizzabili.
Su Claude Code (CLAUDE.md + Skills + Hooks + Subagents + Plugins). Gli asset sono portabili via standard aperti (AGENTS.md / CLAUDE.md); la replica multi-vendor è una direzione architetturale.
Anthropic, IBM, Google e AWS pubblicano playbook agentici tecnicamente solidi. Nessuno di essi affronta sistematicamente DORA Art. 6-30, EU AI Act Art. 9-72, NIS2, BCBS 239, FRIA, Banca d'Italia Circ. 285 e le Linee Guida AGID. Il vuoto è materiale — ed è quello che il framework riempie.
Vai alla mappatura completa articolo-per-articolo →
Specializzazione regolatoria by design · Equivalenza comportamentale come gate · Implementazione già in produzione
Far toccare a un agente AI codice, build e dati di una banca è una superficie di rischio operativo e di supply-chain — terreno di DORA (terze parti ICT) e NIS2. CATALYST la tiene piccola per costruzione: lavoro deterministico (non tool-call LLM), tool nativi e in lettura, verifier read-only, write-perimeter in whitelist, distribuzione chiusa. MCP è usato solo in letturaper la documentazione: nessuna flotta di server da hardenizzare. L'ecosistema agentico è giovane e accumula CVE — una ragione per ridurre la superficie, non per espanderla.
Il 23 febbraio 2026 Anthropic ha pubblicato The Code Modernization Playbook; il giorno di mercato successivo il titolo IBM ha perso circa il 13% — il peggior calo dal 2000. Il segnale è chiaro: la trasformazione del codice si commoditizza. CATALYST estende e specializza il Playbookper il banking/insurance dell'Unione Europea. La sua assurance è indipendente dall'engine: oggi governa e verifica la propria migrazione, ed è architettata per governare anche l'output di engine terzi (AWS, Devin, IBM watsonx, Copilot) — pattern documentato, non ancora eseguito.
Il Playbook Anthropic copre COBOL→Java/Python come caso esemplare. CATALYST tratta il vero parco legacy italiano: .NET Framework, VB6, FoxPro, Clipper, PHP legacy, oltre al COBOL mainframe.
Il Playbook indica il "parallel run" come buona pratica ma non ne formalizza la procedura. CATALYST la rende obbligatoria: replay produzione, side-by-side, diff, sign-off, in coerenza con Google Dual Run e IBM Validate.
Il Playbook tratta i test come parte del workflow agentico. CATALYST li separa architetturalmente (skill no-LLM vs agent LLM) e li mette come gate obbligatorio tra le fasi: nessuna fase chiude senza esito PASS o bypass tracciato.
Il Playbook non discute DORA, AI Act, NIS2, BCBS 239, FRIA, e non affronta la doppia natura per cui il sistema modernizzato può essere Annex III e l'agent che lo migra è un GPAI. CATALYST è regulatory-by-design.
Il Playbook dà per acquisita la capability MCP. CATALYST minimizza la superficie agentica: lavoro deterministico, tool in lettura, verifier read-only — meno superficie da difendere in un workload regolato, non una flotta di server da blindare.
| Vendor | Modello / prodotto | Punto di forza per legacy modernization | Caveat per banking/insurance EU |
|---|---|---|---|
| Anthropic | Claude Opus 4.8 · Sonnet 4.6 | Runtime locale eccellente · subagent + MCP · multi-agent orchestrator · Code Modernization Playbook (feb. 2026) · piattaforma su cui CATALYST è costruito | STDIO MCP è untrusted by default (natura del trasporto); CATALYST riduce la superficie usandolo solo in lettura — vedi Sicurezza operativa |
| OpenAI | GPT-5.5 · GPT-5.3-Codex | Stack agentico più coerente cross-surface · Skills · Apps SDK · MCP nativo · Codex App/CLI/IDE | API diretta non offre EU sovereign autonomo · via Azure OpenAI con Data Zone Standard EUR |
| Dual Run · Mainframe Rewrite | Dual Run è benchmark di equivalenza comportamentale · casi reali banking europei documentati pubblicamente | Mainframe Rewrite ancora preview · sovereignty su S3NS PREMI3NS H2 2026 | |
| IBM | Project Bob (GA 28 apr. 2026) | Adiacenza mainframe Z/i · multi-model nativo con Claude routato · Bob Premium Package for Z (private preview) | Bobcoins pricing trasparente ma non mappa pubblicamente a token · on-prem disponibile |
| AWS | Transform · Reforge · Mainframe Modernization | Pricing "agent minute" $0.035/min innovativo · casi banking documentati (Allianz, Generali, Danske, BNP Paribas) | ESC eusc-de-east-1 non offre Claude (solo Nova Lite/Pro) · CLOUD Act resta esposto |
| Microsoft / GitHub | Copilot agent mode · Bankdata · Azure MCP | Distribuzione enterprise ubiqua · framework Bankdata open source banking-grade · Semantic Kernel-based | "Mainframe MCP server" non è prodotto a sé · EU Data Boundary opt-in |
| Cognition | Devin | "Autonomous teammate" narrazione forte · casi Goldman Sachs / Mercedes-Benz | Benchmark pubblici comparabili meno chiari del marketing · richiede stringenti gate HiL in regolato |
| Mistral | Codestral 25.08 · Devstral 2 123B | Hybrid/on-prem/in-VPC · EU-headquartered · profilo migliore per sovereign EU | Quality gap su SWE-Bench rispetto a frontier US · Cohere post-merger Aleph Alpha apre opzione DE |
Java + Python · GA marzo 2026 · air-gapped · su Java: 81% line / 61% mutation
AST recipes · 5.000+ ricette · self-hosted · MCP-callable · auditabile
Knowledge graph deterministico · FedRAMP-ready · zero allucinazioni via simbolico
Standard de-facto per scope mainframe · alimenta WCA4Z e Bob
Il pricing emergente 2026 — AWS “agent minute” $0.035/min, IBM Bobcoins, GitHub Copilot usage-based — sposta il mercato dal Time & Material verso modelli ibridi orientati al risultato. Il framework si posiziona dove il mercato sta andando: quattro fasi di engagement, un business case bottom-up su sei voci misurabili, anti-promesse esplicite.
Audit tecnico del portafoglio applicativo. Risk classification preliminare Annex III vs standard. Dichiarazione del threat model. Selezione del domain adapter Layer 2.
Esecuzione completa delle tre fasi su 1 applicazione di complessità medio-bassa. Deliverable concreti + baseline di metriche reali condivise col cliente.
Definizione del piano per 5–15 applicazioni successive. Throughput e team adattati. Knowledge curator attivo come watchdog continuo.
Trasferimento integrale della knowledge base al team interno del cliente: sub-agent, skill, hook, pattern, glossario di dominio, decisioni archiviate.
È la composizione di sei voci misurabili prima e dopo, calibrabili sul baseline reale del cliente durante il pilot. Non promettiamo un numero, descriviamo il bilancio.
“Un team di builder, non una consulting firm camuffata.
Il framework è scritto, eseguito e iterato da un team che gira AI coding agents in produzione su un cliente reale, ogni giorno.”
DORA, AI Act, NIS2, BCBS 239, FRIA, Banca d'Italia Circ. 285, AGID, Legge 132/2025 — input di disegno, non vincoli a posteriori.
Procedura obbligatoria: replay produzione, side-by-side, diff con threshold ex ante, sign-off del business owner.
Programma operativo: 100+ applicazioni nel perimetro, 15+ consegnate, 300.000+ righe legacy, su un primario gruppo bancario-assicurativo italiano.