Agent im Loop (Teil 6): Den Loop härten
Mehr Signale in die Schleife: Type Hints mit mypy, Ruff, Coverage und Claude-Code-Hooks. Schnelle Checks laufen nach Änderungen, die volle Suite vor dem Stopp – nebenbei kommt der Reroll dazu.
ls -lt posts/ | grep #ki
Mehr Signale in die Schleife: Type Hints mit mypy, Ruff, Coverage und Claude-Code-Hooks. Schnelle Checks laufen nach Änderungen, die volle Suite vor dem Stopp – nebenbei kommt der Reroll dazu.
5.166 Zeilen C++-Tabellen, vier Enums, die nur per Position dazu passen, und ein Regelwerk, das alles in place umbaut. Teil 5 zeigt, wie die Spieldaten aus der Referenz gedumpt, generiert und gegen sie geprüft werden – und was eine -2 in den Fixtures verriet.
Explodierende Würfel und Vorteil/Nachteil zeigen, wie grüne Tests täuschen können: Overfitting, geschwächte Tests, unvollständige Semantik und Hänger. Property-Based Testing macht die Schleife robuster.
Die ersten portierten Zeilen: der Zufallsgenerator, der in Python exakt dieselben Zahlen liefern muss wie in C++. Teil 4 zeigt, warum die Testvektoren aus der Referenz kommen, was Seeds 0, 1 und INT_MAX gemeinsam haben und was Python-Zufall an Laufzeit kostet.
Der naive String-Zerteiler stößt bei 4d6kh3 an seine Grenzen. Wir trennen Tokenizer, Parser und Evaluator – unter Testschutz, der Regressionen sichtbar macht, aber nicht jede ungetestete Änderung erkennen kann.
Bevor die erste Zeile portiert wird, braucht der Port einen Richter: ein Harness, das die C++-Referenz auf festen Szenarien spielt und Verhalten statt Formatierung vergleicht. Teil 3 zeigt, wie es entsteht und warum es sich erst gegen die Referenz selbst beweisen muss.
Modifikatoren und mehrere Würfelgruppen. Die eigentliche Arbeit ist nicht der Code – den schreibt der Agent –, sondern die Edge Cases zu enumerieren und als parametrisierte Tests festzuhalten.
Bevor eine Zeile portiert wird, braucht es eine Karte: Welche der 71 C++-Dateien tun was, wovon hängen sie ab, und was davon wird portiert, ersetzt oder weggelassen? Teil 2 zeigt, wie der Agent diese Karte baut – und wo er beim ersten Versuch nach Dateinamen ging statt nach Inhalt.
Aus dem Akzeptanzkriterium wird ein Prompt: Wir verallgemeinern auf NdM, schreiben mit einer kontrollierten Zufallsquelle den ersten exakten Test und lassen den Agenten die Schleife selbst drehen.
Legacy-Code ist nicht alter Code, sondern Code, den niemand mehr gern anfasst. Teil 1 erklärt, warum die Engine von Atlantis PbeM mit Claude Code nach Python wandert, warum „treu portieren" vor „neu erfinden" kommt – und wie das Projekt aufgesetzt ist, bevor die erste Zeile Spiellogik entsteht.