1 — Résumé exécutif

  • Selon Mistral, un premier sprint a couvert 40 000 lignes sur les 300 000 d’un simulateur de réservoir exploité par un opérateur énergétique européen non nommé.

  • Le point de départ du workflow est un harnais de parité : sorties finales et points intermédiaires critiques sont comparés entre le programme Fortran et les modules C++.

  • La tentative totalement autonome a produit, d’après Mistral, du code fonctionnel mais insuffisamment modernisé. Le workflow final conserve un humain pour l’architecture, le déblocage et la revue des changements.

  • Verdict IngéPilot : TESTER — Evidence Score : 69/100. Le cas est assez documenté pour justifier un petit pilote, pas pour démontrer un gain de temps, un ROI ou une migration prête pour la production.

2 — Pourquoi cela compte

Un ancien code scientifique ne se résume pas à sa syntaxe. Il peut contenir des décennies de choix numériques, de règles métier et de connaissance physique tacite. Une traduction qui compile peut encore produire de mauvais résultats. Une traduction numériquement proche peut rester difficile à maintenir. Et un module modernisé n’est pas automatiquement prêt à être intégré en production.

Pour un bureau d’études ou une équipe d’ingénierie, la question n’est donc pas : « un agent peut-il convertir du Fortran en C++ ? » Elle est plus exigeante : peut-il aider à comprendre et migrer un module tout en préservant les comportements utiles, avec une preuve contrôlable par les experts du domaine ?

Le cas publié par Mistral apporte une réponse partielle. Il montre un workflow possible, mais il ne fournit ni les artefacts complets du projet, ni une comparaison chiffrée avec une migration conventionnelle.

3 — Ce que nous avons vérifié

Le retour fournisseur

Mistral présente un simulateur de réservoir en Fortran 77, exécutable et autonome, mais sans suite de tests ni documentation centralisée. Avant la migration, l’équipe a ajouté des mécanismes d’export d’état côté Fortran et un framework capable de charger ces checkpoints côté C++.

La comparaison ne porte pas seulement sur le résultat final. Des ingénieurs réservoir ont également désigné des points intermédiaires critiques à contrôler. C’est une distinction essentielle : lorsqu’une refactorisation transforme la structure du programme, la correspondance ligne à ligne disparaît. Il faut alors disposer d’un autre oracle pour décider si le comportement reste acceptable.

Mistral indique aussi avoir utilisé plus d’une centaine d’agents pour documenter l’arbre d’appels du programme. Mais l’expérience de migration est surtout instructive par ses échecs intermédiaires :

  1. Autonomie complète. Un agent par sous-routine, pendant une semaine. Le résultat était fonctionnel selon Mistral, mais les structures globales et les contrôles hérités du Fortran avaient été largement reproduits en C++.

  2. Équipe multi-agent structurée. Planificateur, codeur, testeur et reviewer. La qualité se serait améliorée, mais certains bugs bloquaient les agents.

  3. Workflow retenu. Un humain pilote les agents module par module. L’architecture est revue avec un ingénieur réservoir ; les changements sont testés puis relus avant fusion.

Ce retour ne prouve pas qu’un tel dispositif est supérieur dans tous les projets. Mistral précise que la base était autoportée et exécutable, une condition favorable. Les systèmes dépendant d’outils externes, sans baseline exécutable ou contenant une physique non documentée présentent des difficultés supplémentaires.

Les éléments indépendants

Une prépublication consacrée à la modernisation d’un moteur de mécanique des solides d’environ 60 000 lignes rapporte une conclusion voisine : les outils fondés sur les grands modèles de langage étaient insuffisants seuls. Les auteurs ont structuré le travail avec des exemples manuels, une compilation continuellement valide et des sessions limitées.

Une étude publiée dans les actes d’un workshop de l’ACL sur la traduction Fortran vers C++ distingue trois évaluations : la compilation, la proximité avec une traduction humaine et la similarité des sorties exécutées. Elle observe également une variabilité entre modèles et exécutions.

Ces travaux corroborent la nécessité d’un protocole de validation. Ils ne reproduisent pas le projet Mistral et ne valident pas les 40 000 lignes annoncées.

Ce qui n’a pas été démontré

IngéPilot n’a exécuté aucun test de Mistral, de ses agents ou du code migré. Le client n’est pas nommé et aucune validation indépendante spécifique du projet n’a été identifiée.

Les éléments publics ne permettent pas d’établir :

  • la couverture exhaustive des chemins et cas limites ;

  • la pertinence des tolérances numériques retenues ;

  • la maintenabilité quantitative du C++ obtenu ;

  • le résultat de la migration des 260 000 lignes restantes ;

  • le temps total, le coût complet ou le retour sur investissement ;

  • les modèles, l’hébergement, la rétention ou les flux de données de la chaîne industrielle.

Autrement dit : code compilable ≠ code numériquement équivalent ≠ code modernisé ≠ code prêt pour la production.

4 — Verdict IngéPilot

TESTER — Evidence Score : 69/100

Le retour Mistral est détaillé et converge avec deux travaux techniques sur un point opérationnel : une migration assistée par IA doit être structurée autour d’un oracle, de tests continus et de validations humaines. Cela suffit pour justifier un pilote limité sur un code ouvert ou synthétique.

Ce n’est pas ADOPTER. Le cas reste une publication fournisseur concernant un client anonyme ; aucun gain de productivité ou ROI n’est mesuré ; la sécurité et les flux de données ne sont pas documentés ; la reproductibilité exacte est impossible avec les éléments publics.

La thèse à tester doit donc rester étroite : sur un petit module dont les résultats de référence existent déjà, un workflow d’agents supervisés améliore-t-il la migration par rapport à des outils déterministes ou à une assistance interactive plus simple ?

5 — À faire lundi matin

Sans connecter un agent à un dépôt professionnel :

  1. identifier un petit module Fortran autonome et non sensible ;

  2. lister trois sorties critiques, deux cas limites et les tolérances acceptables ;

  3. construire d’abord un test différentiel reproductible entre l’exécutable actuel et toute future implémentation.

Si l’équipe ne peut pas définir cet oracle, elle n’est pas prête à déléguer la migration à un agent.

6 — Sources