Migración legacy con IA: siete gates de paridad

OpenAI publicó evaluaciones para construir software en lenguajes con pocos datos y migrar COBOL preservando salidas observables. Esta guía separa ese avance medido de una decisión de producción: cómo inventariar dependencias, capturar comportamiento, validar semántica y datos, comparar operación, contener el uso de IA y ensayar un rollback antes de retirar el sistema legacy.

Migración legacyIngeniería con IAPruebas de paridadCOBOL
Wasyra Engineering
Modernización, arquitectura y delivery confiable
Publicado
min de lectura
8 min de lectura
Categoría
Ingeniería
7gates antes de migrar producción
Ilustración de un sistema legacy y uno moderno conectados por una cámara de verificación que compara salidas y conserva una ruta de retorno.

Capítulo 01

¿Cuándo está lista una migración legacy con IA?

Está lista para un piloto cuando el equipo puede demostrar equivalencia y volver atrás; no cuando el modelo produce una traducción plausible.

Una migración legacy asistida por IA está lista para un piloto cuando tiene un límite funcional pequeño, entradas y salidas reproducibles, reglas de negocio convertidas en pruebas, dependencias conocidas, datos reconciliables y una ruta de rollback practicada. El 19 de octubre de 2026, OpenAI publicó dos evaluaciones para lenguajes con menos código de entrenamiento: MultiLangBench mide la construcción de un motor compatible con SQLite en 20 lenguajes, y una evaluación separada mide migraciones de COBOL hacia cinco lenguajes con pruebas ocultas y paridad byte a byte. La noticia tenía un día calendario en America/Lima al consultarse el 20 de octubre. Los resultados muestran un salto de capacidad dentro de esos entornos; no demuestran que un modelo comprenda automáticamente los jobs, archivos, compiladores, calendarios, controles ni acuerdos operativos de una empresa. Por eso el benchmark sirve para abrir un experimento controlado, no para aprobar el reemplazo de producción.

La unidad correcta no es el repositorio completo ni una cifra de líneas convertidas. Es una capacidad de negocio con dueño, contrato observable y radio de impacto: por ejemplo, calcular una liquidación, validar un lote o producir un archivo regulatorio. El modelo puede proponer código, pruebas y explicaciones, pero el equipo conserva la autoridad sobre el contrato y la aceptación. Si nadie puede describir qué debe permanecer idéntico y qué puede cambiar, todavía no existe una migración evaluable; solo existe una reescritura.

Capítulo 02

¿Qué prueban realmente los nuevos benchmarks?

MultiLangBench entrega documentación de SQLite 3.40.1 al modelo, elimina SQLite del entorno, bloquea internet y exige un ejecutable en el lenguaje objetivo. Cada caso prepara una base inicial, envía una consulta y usa SQLite real para inspeccionar el archivo resultante. El repositorio convierte aproximadamente 24 mil pruebas de la suite TCL y recomienda un subconjunto determinista de 272 para evaluaciones ordinarias. Así evita juzgar estilo o parecido textual: pregunta si el artefacto modificó estado como debía. OpenAI reporta que GPT-6 Astra alcanzó un promedio de 87,4% a máximo esfuerzo sobre 20 lenguajes, frente a 26,8% de GPT-5.6 Sol en esa configuración.

La evaluación COBOL responde otra pregunta: si un programa existente puede traducirse a C++, Java, Kotlin, Python o Rust sin cambiar sus salidas observables. OpenAI considera exitosa una migración solo cuando supera todas las pruebas ocultas de un caso con coincidencia byte a byte, y reporta 86,6% para GPT-6.1 Sol a bajo esfuerzo y 97,9% a mayor esfuerzo. Es una señal importante porque penaliza traducciones que compilan pero alteran resultados. También tiene límites: el anuncio no publica esa segunda suite, una puntuación cercana a saturación puede reflejar su cobertura, y la equivalencia observable no incluye por sí sola rendimiento, seguridad, operación o dependencias externas.

La lección transferible no es copiar el porcentaje. Es copiar la forma del examen: interfaz compartida, oráculo independiente, resultados exactos, casos ocultos y costo visible. Un piloto privado necesita esa misma disciplina con datos sintéticos o desidentificados, además de fallos que el modelo no haya visto durante la iteración. Si el mismo agente escribe la traducción, genera las expectativas y explica por qué pasó, no hay verificación independiente.

Capítulo 03

Gates 1 y 2: frontera e inventario de comportamiento

Gate 1, frontera ejecutable. Selecciona una capacidad que pueda invocarse de forma repetible y enumera todo lo que cruza su borde: programas llamados, copybooks, archivos, tablas, colas, variables de entorno, scheduler, encoding, zona horaria, compilador y operadores humanos. Registra versiones y ownership. El gate falla si el programa solo puede probarse dentro de un lote mayor, si una dependencia aparece por conocimiento tribal o si la ruta moderna exige cambiar simultáneamente el contrato del consumidor. La IA puede ayudar a trazar llamadas, pero una persona responsable debe confirmar el mapa.

Gate 2, inventario de comportamiento. Captura un conjunto dorado antes de traducir: entradas representativas, salidas exactas, códigos de retorno, efectos sobre estado, mensajes, orden de registros y fallos esperados. Añade bordes que producción conoce y la documentación omite: archivo vacío, registro duplicado, importe negativo, fin de mes, cambio de año, caracteres inválidos, reintento y proceso interrumpido. Separa fixtures para desarrollo de un holdout que el agente no use. El gate pasa cuando el sistema actual puede reproducir el oráculo y el equipo puede explicar cada diferencia aceptada.

Evidencia mínima y condición de rechazo por gate
GateEvidenciaRechazar si
1. FronteraMapa versionado de dependencias y ownerAparece una dependencia no controlada
2. ComportamientoGolden set más holdout independienteLa base no reproduce el oráculo
3. SemánticaPruebas de tipos, fechas y erroresUna regla implícita cambia
4. DatosReconciliación por lote y registroNo existe trazabilidad de diferencias
5. OperaciónSLO, capacidad y runbook comparadosLa nueva ruta degrada un límite acordado
6. Control IADiff revisado, procedencia y permisos mínimosEl agente puede aprobar su propio cambio
7. RollbackRetorno ensayado con estado preservadoVolver requiere reparación manual incierta

Capítulo 04

Gates 3, 4 y 5: semántica, datos y operación

Gate 3, semántica del lenguaje. En COBOL, una expresión decimal puede descartar dígitos excedentes salvo que se solicite redondeo; cambiar ese detalle puede alterar dinero sin producir una excepción. Revisa PIC, signo, escala, overflow, valores figurativos, comparación, collating sequence, encoding, fechas, espacios, archivos indexados y comportamiento del compilador usado. No reemplaces una regla rara por la convención del lenguaje destino solo porque parece más limpia. Cada diferencia intencional necesita una decisión de negocio, una prueba y una estrategia para datos históricos.

Gate 4, paridad de datos. Ejecuta la ruta antigua y la candidata sobre la misma instantánea, en sombra y sin doble escritura irreversible. Reconcilia conteos, totales de control, hashes, claves, rechazos y efectos secundarios; después baja hasta el registro que explica una diferencia. Diseña idempotencia y recuperación para reintentos. Un total final idéntico puede ocultar dos errores que se compensan, mientras una diferencia de orden puede ser irrelevante o romper un consumidor. La política debe declarar qué exige coincidencia byte a byte, qué admite equivalencia semántica y quién resuelve excepciones.

Gate 5, equivalencia operativa. Mide el día completo, no una demo: duración por lote, CPU y memoria, ventanas de cierre, concurrencia, backpressure, observabilidad, recuperación, costo y carga para soporte. Fuerza timeout, archivo parcial, dependencia caída, disco lleno y reanudación. Verifica que alertas y runbooks conduzcan a una acción concreta. Una implementación puede acertar todas las salidas y aun ser inviable si pierde la ventana nocturna, multiplica costos, no explica qué registro falló o convierte una recuperación automática en trabajo manual.

Capítulo 05

Gates 6 y 7: control del agente y reversibilidad

Gate 6, control de la IA. Fija el commit inicial, archivos permitidos, documentación disponible, herramientas, red, tiempo y artefacto esperado. Usa datos sintéticos o desidentificados; no expongas credenciales ni extractos productivos por comodidad. Conserva prompts, modelo, configuración, diffs, pruebas y revisiones como procedencia. Separa autoría de aceptación: el agente no modifica el oráculo, no abre su propia excepción y no aprueba su parche. Revisión humana obligatoria debe concentrarse en contratos, semántica, concurrencia, seguridad y código que los tests no alcanzan.

Gate 7, reversibilidad. Despliega por capacidad, cohorte o lote con observación paralela. Mantén el sistema anterior disponible hasta cubrir ciclos representativos, cierres y excepciones; define qué estado puede replicarse en ambos sentidos y cuál requiere congelar la decisión. Ensaya volver bajo presión, no solo documentarlo. Mide tiempo de retorno, pérdida máxima de trabajo, reconciliación posterior y quién tiene autoridad para detener. Retirar el legacy exige evidencia acumulada y un plan para conservar auditabilidad, no una semana sin incidentes visibles.

La IA puede acelerar la traducción; solo una cadena independiente de evidencia puede autorizar el reemplazo.

Capítulo 06

Ejemplo hipotético: liquidación nocturna

Supongamos un programa COBOL hipotético que cada noche recibe movimientos, aplica comisiones y produce un archivo de liquidación más un reporte de rechazos. El equipo quiere migrarlo a Java. No entrega todo el repositorio al modelo: encapsula una fecha operativa, un tipo de producto y un formato de entrada. El inventario revela dos copybooks, una tabla de tasas, un calendario de feriados y un job que reintenta registros rechazados. Ese mapa impide declarar éxito cuando solo compila el cálculo principal.

El golden set conserva días normales, cierre de mes, feriado, duplicados, tasa ausente, importe con más decimales y un archivo truncado. El oráculo exige bytes idénticos para los archivos que consumen terceros, equivalencia por campos para logs renovados y los mismos efectos de reintento. El agente propone la traducción y tests adicionales; un harness separado ejecuta ambas versiones sobre instantáneas iguales. Una discrepancia de un centavo revela que Java redondeó donde COBOL truncaba. Producto y finanzas deciden conservar la regla actual durante la migración y abrir un cambio posterior, explícito y separado.

Durante dos cierres, la ruta Java corre en sombra y reconcilia cada lote. Después procesa una cohorte reversible mientras COBOL conserva autoridad para el resto. El equipo provoca caída de la tabla de tasas, reanudación y rollback; confirma que no duplica pagos y que soporte puede localizar el registro responsable. Este ejemplo no describe un cliente ni un resultado de Wasyra. Ilustra por qué el valor no está en convertir más líneas, sino en reducir incertidumbre sin mezclar modernización, cambio funcional y retiro operativo en una sola apuesta.

Capítulo 07

¿Conviene iniciar el piloto ahora?

Inicia cuando existe una frontera pequeña pero valiosa, el sistema actual todavía puede producir el oráculo, hay especialistas disponibles para resolver ambigüedades y la organización acepta financiar ejecución paralela. Espera si buscas que el modelo descubra solo todas las reglas, si los datos no pueden salir de producción con controles adecuados, si no existe owner del comportamiento o si la única estrategia de release es apagar el legacy. En esos casos, invierte primero en observabilidad, fixtures, documentación ejecutable y desacople.

El avance publicado esta semana cambia el costo de explorar lenguajes antes poco atendidos y demuestra que las pruebas basadas en comportamiento pueden dirigir al modelo mejor que una revisión superficial del código. No elimina el trabajo central de modernización: decidir el contrato, construir un oráculo independiente y controlar el cambio. Usa los siete gates como contrato de inversión. Si el piloto deja evidencia trazable en cada uno, puedes ampliar una unidad a la vez; si falla, habrás comprado aprendizaje acotado en lugar de una reescritura irreversible.

Escrito por

Wasyra Engineering

Modernización, arquitectura y delivery confiable

Wasyra Engineering documenta patrones para mover sistemas legacy sin congelar delivery ni romper ownership.

LegacyRefactorArquitectura
Más de este autor

Serie

Sistemas IA que sí llegan a producción

Una serie sobre agentes, copilots y guardrails para llevar IA al trabajo real sin romper confianza ni operación.

Posts de esta serie

Sigue leyendo

Sigue leyendo