Mistral: 40.000 Zeilen Fortran mit KI-Agenten nach C++
Mistral hat für einen europäischen Energieversorger 40.000 von 300.000 Zeilen Fortran 77 portiert – der Erfolg hing an einem Testgerüst, nicht an Autonomie.
Symbolbild: In einem Simulationsraum laufen Rechenknoten mit blinkenden Statuslichtern, während zwei Personen vor abstrakten Verzweigungsdiagrammen auf großen Monitoren stehen.
Mistral hat 40.000 der rund 300.000 Zeilen eines Fortran-77-Reservoirsimulators nach C++ überführt – nicht mit frei laufenden Agenten, sondern mit einem Testgerüst für numerische Gleichheit und menschlichen Freigaben an jedem Schritt.
Auf einen Blick
- Erster Sprint: 40.000 von 300.000 Zeilen Fortran 77 nach C++ überführt, zunächst die Kernfunktionalität.
- Fortran 77 wurde 1977 standardisiert; Variablennamen dürfen dort höchstens sechs Zeichen lang sein.
- Über 100 Agenten dokumentierten den Bestand, gestützt auf vorhandene PDFs und Mistral OCR.
- Ein Reviewer-Agent lief per Cron-Job, prüfte neue Pull Requests und legte bei Bedarf Korrekturaufgaben an.
- Als handhabbare Einheit gelten laut Mistral geschlossene Teilbäume unter rund 10.000 Zeilen Fortran.
Mistral hat einen Werkstattbericht darüber veröffentlicht, wie ein europäischer Energieversorger 40.000 von rund 300.000 Zeilen Fortran 77 nach C++ gebracht hat. Die interessante Aussage ist nicht die Zeilenzahl, sondern die Reihenfolge: erst ein Gerüst, das numerische Gleichheit beweist, dann Dokumentation, erst danach Migration. Die drei Lehren am Ende des Textes lauten genau so.
Warum das kein normales Refactoring ist
Es geht um einen physiknahen Reservoirsimulator. Fortran 77 wurde 1977 standardisiert, Variablennamen dürfen sechs Zeichen lang sein, und Zustand wandert über COMMON-Blöcke quer durch das Programm. Die ursprünglichen Autoren sind nicht mehr im Haus, eine Testsuite existierte nicht, eine zentrale Dokumentation ebenso wenig.
Ein Umstand half: Der Code war in sich geschlossen und lief. Genau das ist die Voraussetzung, die Mistral am Ende selbst als Bedingung markiert – ohne lauffähige Ausgangsbasis wird der Ansatz deutlich schwieriger.
Das Testgerüst kommt vor dem ersten Agenten
Zusätzliche Subroutinen exportieren den Zustand des Fortran-Programms, ein Testrahmen lädt diese Checkpoints in die C++-Seite. Als Übereinstimmung zählt dabei numerische Gleichheit der Ausgaben – sowohl der Endergebnisse als auch der Zwischenpunkte, die die Reservoir-Ingenieure vorher als kritisch markiert hatten. Skill.md-Dateien sollten die Agenten dazu bringen, dieses Gerüst auch richtig zu benutzen.
Über 100 Agenten schreiben erst einmal Dokumentation
Ein eigener Parser erzeugte den Aufrufbaum des gesamten Programms. Über die Vibe CLI wurden dann mehr als 100 Agenten gestartet, die den Bestand beschrieben und dafür vorhandene PDFs über Dokumentbibliotheken und Mistral OCR heranziehen konnten. Gearbeitet wurde von den Blättern des Baums nach oben, in geschlossenen Teilbäumen von empirisch weniger als rund 10.000 Zeilen. Ein Reviewer-Agent lief per Cron-Job, sah nach neu geöffneten Pull Requests und plante bei Bedarf Korrekturen ein.
Drei Anläufe bis zum brauchbaren Ablauf
Der erste Versuch gab jedem Unterprogramm einen eigenen Agenten, eine Woche lang, jeder für sich. Das Ergebnis lief, war aber kaum modernisiert: Aus COMMON-Blöcken wurden globale Structs, der Kontrollfluss blieb, wie er war.
Der zweite Versuch setzte pro Modul ein festes Quartett aus Planer, Coder, Tester und Reviewer ein. Die Codequalität stieg, aber an komplexen Fehlern blieben die Agenten stecken. Erst die dritte Variante trug: Zielarchitektur erzeugen, Freigabe durch einen Ingenieur, Zerlegung in eine Aufgabenwarteschlange, pro Aufgabe planen, umsetzen und testen – und am Ende ein menschliches PR-Review bis zum Merge.
Was der Bericht offenlässt
Der Kunde wird nicht genannt. Es gibt in dem Text keine Angabe dazu, wie lange der erste Sprint gedauert hat, was er gekostet hat oder wie er sich gegen eine manuelle Migration schlägt – wer eine Produktivitätszahl sucht, findet sie dort nicht. Mistral benennt die eigenen Grenzen: Migrationen mit externen Abhängigkeiten, ohne lauffähige Basis oder mit nirgends dokumentierter Physik seien schwerer. Und der Bericht kommt vom Anbieter des eingesetzten Werkzeugs; eine unabhängige Überprüfung der Ergebnisse liegt bislang nicht vor.
Häufige Fragen
Wie viele Zeilen Fortran hat Mistral nach C++ migriert?
Im ersten Sprint 40.000 von rund 300.000 Zeilen Fortran 77 – die Kernfunktionalität eines Reservoirsimulators. Der Rest des Bestands war damit noch nicht portiert.
Was ist ein Parity-Harness bei einer Code-Migration?
Ein Testgerüst, das den Zustand des alten Programms exportiert und in die neue Fassung lädt, um zu prüfen, ob beide Seiten numerisch dieselben Ergebnisse liefern – auch an Zwischenpunkten.
Können KI-Agenten Legacy-Code ohne Entwickler modernisieren?
Nach Mistrals eigener Darstellung nicht: Der vollautonome Durchlauf lieferte lauffähigen, aber kaum modernisierten Code. Getragen hat erst der Ablauf mit Architekturfreigabe und PR-Review durch Menschen.