Mistral detalla la migración de 40.000 líneas de código Fortran mediante un agente de IA
Mistral says it helped a European energy operator migrate 40,000 lines of Fortran 77 to C++ using parity testing, documentation agents and structured human-reviewed workflows.
Respuesta rápida
¿Qué anunció Mistral sobre el uso de agentes de IA para modernizar código heredado?
Mistral described a project with a European energy operator that migrated 40,000 lines of Fortran 77 from a physics-intensive reservoir simulator to C++. The company said it built a numerical parity harness, used agents to document the codebase, and settled on workflows combining coder, tester and reviewer agents with human checkpoints.
Claves
- Mistral says it helped a European energy operator migrate 40,000 lines of Fortran 77 to C++ in a reservoir simulator with no test suite or centralized documentation.
- La empresa desarrolló un sistema de verificación de paridad que comparaba los resultados finales y los puntos de control intermedios críticos entre las bases de código en Fortran y C++.
- Mistral used Vibe CLI to deploy more than 100 agents to document the Fortran program and create pull requests for review.
- Tras probar enfoques totalmente autónomos y otros más estructurados, Mistral adoptó un flujo de trabajo que combina agentes de programación, prueba y revisión, con intervención humana y puntos de control.
Mistral afirmó que ayudó a un operador energético europeo a migrar 40.000 líneas de Fortran 77 a C++ en un simulador de yacimientos de alta intensidad física. La empresa describió el proyecto en una publicación difundida el miércoles, señalando que el código heredado carecía de suite de pruebas y de documentación centralizada.
Construcción de una verificación numérica
Mistral señaló que, antes de comenzar la migración, construyó un arnés de paridad. Este arnés estaba diseñado para establecer la equivalencia numérica entre ambas bases de código, comprobando tanto los resultados finales como los puntos intermedios críticos identificados por los ingenieros de yacimientos del cliente.
La empresa añadió subrutinas de Fortran para exportar el estado del programa, creó un marco de pruebas en C++ para cargar esos puntos de control y proporcionó archivos Skill.md para guiar a los agentes. Según Mistral, los agentes utilizaron este sistema para instrumentar el programa Fortran, volcar instantáneas de estado y verificar los módulos de C++ migrados. En un ejemplo, una ejecución en Fortran exportó un valor de la variable RHOG, que luego se empleó como punto de control de referencia en una prueba en C++.
Documentación de la base de código
Mistral indicó que la documentación estaba dispersa entre antiguos PDF y comentarios en el código fuente de Fortran. La empresa analizó la base de código con un analizador propio para generar un árbol de llamadas, que representa el programa como una red de subrutinas enlazadas.
Con Vibe CLI, la compañía puso en marcha más de 100 agentes para documentar ese árbol. Los agentes podían recuperar los PDF pertinentes a través de bibliotecas documentales y de Mistral OCR. Partiendo de las hojas del árbol, cada nodo generaba un subagente encargado de documentarlo y de abrir una solicitud de incorporación de cambios (pull request) en el repositorio original. Un agente revisor, ejecutado según una programación periódica (cron), examinaba las solicitudes recién abiertas y programaba correcciones cuando era necesario.
Pruebas con distintas configuraciones de agentes
Mistral explicó que su primer enfoque asignó un agente autónomo a cada subrutina de Fortran durante una semana. El código resultante era funcional, pero, según la empresa, conservaba estructuras globales basadas en bloques COMMON y un flujo de control gobernado por GOTO, por lo que se asemejaba más a Fortran reescrito con sintaxis de C++ que a una migración real.
En un segundo enfoque, un planificador, un programador, un evaluador y un revisor de calidad de código trabajaron juntos en cada módulo. Mistral señaló que la calidad del código mejoró, pero que los agentes terminaban por estancarse al toparse con errores.
La empresa adoptó entonces un flujo de trabajo supervisado por humanos, con agentes programador, evaluador y revisor. En colaboración con los ingenieros de yacimientos, identificó módulos independientes de menos de unas 10.000 líneas de Fortran, generó una arquitectura de C++ de destino, la revisó junto con un ingeniero y dividió los diseños aprobados en colas de tareas. Cada tarea seguía un ciclo de planificación, implementación, prueba y repetición, con revisión humana de las solicitudes de incorporación de cambios antes de fusionarlas.
Mistral afirmó que el primer sprint cubrió 40.000 de las 300.000 líneas totales. La empresa señaló que esta base de código era autónoma y ejecutable, mientras que las migraciones que involucran sistemas externos, carecen de una línea base ejecutable o incluyen física no documentada plantearían dificultades adicionales.
Fuente: Mistral, "Modernizing complex legacy code with AI agents", publicado el 9 de septiembre de 2026.
Preguntas frecuentes
- How much code was migrated?
- Mistral asegura que el primer sprint migró 40.000 de las 300.000 líneas del código base, de Fortran 77 a C++.
- What was the parity harness used for?
- Exportó el estado del código base en Fortran, cargó los puntos de control en las pruebas de C++ y verificó la igualdad numérica de los resultados finales y de determinados puntos intermedios.
- How did agents document the legacy code?
- Mistral generó un árbol de llamadas entre funciones (caller-callee) con un analizador personalizado y utilizó Vibe CLI para desplegar más de 100 agentes. Los agentes recurrieron a PDFs relevantes a través de bibliotecas de documentos y Mistral OCR, y luego abrieron solicitudes de extracción (pull requests).
- What workflow did Mistral ultimately use?
- Un humano supervisó un flujo de trabajo compuesto por agentes de codificación, pruebas y revisión, migrando los módulos de uno en uno. Los humanos revisaban las solicitudes de incorporación de cambios e intervenían cuando los agentes se quedaban atascados.