Mistral migriert 40.000 Zeilen Fortran 77 zu C++ mit KI-Agenten

Mistral hat am 9. September einen Projektrückblick veröffentlicht, der beschreibt, wie das Unternehmen mit eigenen KI-Agenten den Lagerstättensimulator eines europäischen Energieversorgers von Fortran 77 nach C++ migriert hat. Der gesamte Code umfasst 300.000 Zeilen, angefasst wurden diesmal 40.000 davon. Zu Projektbeginn gab es praktisch nichts: keine Testsuite, keine zentral gesammelte Dokumentation.

Die Schwierigkeiten von Fortran 77 listet der Bericht klar auf: keine Module, keine Namespaces, keine strukturierten Typen; der Programmzustand liegt in COMMON-Blöcken, praktisch ein globaler Speicher, den sich das gesamte Programm teilt; Variablen werden implizit nach dem Anfangsbuchstaben typisiert; Variablennamen sind auf 6 Zeichen begrenzt, sodass man beim Lesen fast raten muss.

Der erste Versuch bestand darin, die Aufgabe komplett den Agenten allein zu überlassen — nach einer Woche war das gescheitert. Danach stellte man auf einen Ansatz mit Mensch im Loop um, modulweise aufgeteilt, wobei jedes Modul vier Rollen zugewiesen bekam: Planung, Programmierung, Test und Codequalitätsprüfung, nach dem Ablauf "Planen → Umsetzen → Testen → nächste Runde". Die Hauptaufgabe des Menschen im Loop bestand darin, Agenten zu befreien, wenn sie feststeckten.

Erst Dokumentation nachholen, dann den Code anfassen

Die Dokumentationsphase lief über Vibe CLI, das zeitweise über hundert Agenten parallel startete. Jeder Agent konnte über eine Dokumentenbibliothek und Mistral OCR relevante PDFs heranziehen und einlesen — physikalische Annahmen in Industriesoftware stehen oft nur in gedruckten Berichten oder gescannten Dokumenten, das war in einem Projekt ohne zentrale Dokumentation der aufwendigste Teil.

Für die Modulaufteilung wurde ein Erfahrungswert festgelegt: Ein einzelnes Modul sollte im Fortran-Code bei rund 10.000 Zeilen oder weniger bleiben.

Numerische Übereinstimmung als Abnahmekriterium

Was das Projekt zusammenhielt, war ein Abgleichmechanismus. Er besteht aus drei Teilen: einer Gruppe von Subroutinen, die den Laufzeitzustand der Fortran-Codebasis exportieren, einem Test-Framework, das diese Checkpoints in C++ lädt, sowie mehreren Skill.md-Dateien, die die Agenten anleiten, die ersten beiden korrekt zu nutzen.

Das Beispiel im Bericht ist konkret: Ein Agent fügt im Fortran-Code eine Zeile ein, die den Wert der Variable RHOG ausgibt — bei diesem Lauf ergab sich 42,71834; anschließend wird genau dieser Wert als Referenz-Checkpoint verwendet, um das migrierte C++-Modul zu testen.

"Numerical agreement is the cheapest, most convincing proof that a module is done."

Übereinstimmende Zahlen sind der billigste und zugleich überzeugendste Beweis dafür, dass ein Modul fertig migriert ist.

Für Leser andernorts liegt die eigentliche Erkenntnis wohl nicht darin, welches Modell Mistral verwendet hat. In Branchen wie Strom, Öl und Gas, Meteorologie und Luftfahrt steckt in zentralem Berechnungscode noch immer massenhaft Fortran aus den 1970er- und 1980er-Jahren — ebenfalls ohne Tests, ohne Dokumentation, mit längst pensionierten Originalautoren. Über ein Jahrzehnt scheiterte das Stichwort "Neuschreiben" meist an der Abnahme: ohne Baseline, wer unterschreibt am Ende für den neuen Code? Mistrals Ansatz überträgt die Unterschriftsbefugnis an numerische Checkpoints — dieser Schritt hat nichts damit zu tun, welche Agenten man einsetzt, solange lauffähiger Altcode vorhanden ist, lässt er sich selbst aufbauen.

Auch die Voraussetzungen stehen im Bericht. Mistral räumt ein, dass die Ausgangsbedingungen diesmal günstig waren: Die Fortran-Codebasis war eigenständig lauffähig. Der Originalbericht nennt drei Fallgruppen, die deutlich schwieriger wären — Code, der von externen Systemen abhängt, Fälle ohne lauffähige Baseline, und solche, in denen physikalische Annahmen überhaupt nirgends dokumentiert sind. Wie viel schneller das im Vergleich zu manueller Neuschreibung ist, nennt der Bericht nicht.

Quellen: offizieller Mistral-Blog, CocoLoop; Codezeilenzahl, Modulaufteilungsschwelle, Rollenverteilung der Agenten und der RHOG-Checkpoint-Wert wurden anhand des offiziellen Rückblicks geprüft.