El 9 de septiembre, Mistral publicó un repaso de proyecto en el que cuenta cómo usó sus propios agentes de IA para migrar el simulador de yacimientos de una operadora energética europea de Fortran 77 a C++. Todo el código tiene 300.000 líneas; esta vez se tocaron 40.000. Al inicio del proyecto prácticamente no había nada: ni suite de pruebas, ni documentación reunida en un solo lugar.
Las dificultades de Fortran 77 quedan bien enumeradas en el informe: sin módulos, sin espacios de nombres, sin tipos estructurados; el estado del programa vive en bloques COMMON, equivalente a una memoria global compartida por todo el programa; las variables se tipan implícitamente según su primera letra; los nombres de variable están limitados a 6 caracteres, así que leer el código es casi adivinar.
El primer intento fue entregar toda la tarea al agente para que corriera solo; tardó una semana y fracasó. Después cambiaron a un enfoque con humano en el bucle, dividido por módulos, y cada módulo se repartió entre cuatro roles: planificación, escritura de código, pruebas y revisión de calidad de código, siguiendo el flujo "planificar → implementar → probar → otra ronda". El papel principal del humano en el bucle era desatascar al agente cuando se quedaba bloqueado.
Primero completar la documentación, después tocar el código
La fase de documentación se hizo lanzando más de cien agentes en paralelo mediante Vibe CLI. Cada agente podía traer los PDF relevantes para leerlos a través de una biblioteca de documentos y Mistral OCR; las suposiciones físicas del software industrial suelen estar escritas solo en informes en papel o escaneados, y esa fue la parte que más esfuerzo humano exigió en un proyecto sin documentación centralizada.
Para la división en módulos se fijó un umbral empírico: mantener cada módulo de código Fortran en unas 10.000 líneas o menos.
Usar la coherencia numérica como criterio de aceptación
Lo que sostuvo este proyecto fue un mecanismo de verificación cruzada. Consta de tres partes: un conjunto de subrutinas capaces de exportar el estado de ejecución de la base de código Fortran, un framework de pruebas que carga esos puntos de control en C++, y varios archivos Skill.md que guían a los agentes para usar correctamente las dos primeras partes.
El ejemplo que da el informe es muy concreto: el agente inserta una línea en el código Fortran para imprimir el valor de la variable RHOG; en esa ejecución dio 42,71834; luego se usa ese mismo número como punto de control de referencia para probar el módulo en C++ ya migrado.
"Numerical agreement is the cheapest, most convincing proof that a module is done."
Que los números coincidan es la prueba más barata, y también la más convincente, de que un módulo ha terminado de migrarse.
Para lectores de otros lugares, la lección quizá no esté en qué modelo usó Mistral. En sectores como electricidad, petróleo y gas, meteorología y aviación, el código de cálculo central todavía tiene una enorme cantidad de Fortran de los años setenta y ochenta, también sin pruebas, sin documentación y con los autores originales ya jubilados hace tiempo. Durante más de una década, hablar de "reescribir" solía atascarse en la aceptación: sin una línea base, ¿quién firma que el código reescrito funciona? El enfoque de Mistral traslada ese poder de firma a los puntos de control numéricos, y ese paso no depende de qué agente de IA se use: basta con tener código antiguo que funcione para poder montarlo uno mismo.
Las condiciones previas también están en el informe. Mistral reconoce que las condiciones de partida esta vez fueron favorables: la base de código Fortran era autocontenida y ejecutable. El informe original enumera tres tipos de casos claramente más difíciles: código que depende de sistemas externos, casos sin una línea base ejecutable disponible, y casos en los que las suposiciones físicas no están documentadas en absoluto. El informe no da cifras sobre cuánto más rápido es esto frente a reescribir a mano.
Fuentes: blog oficial de Mistral, CocoLoop; el número de líneas de código, el umbral de división en módulos, el reparto de roles de los agentes y el valor del punto de control RHOG se verificaron con el repaso oficial.