Der tragende Bug
Manchmal ist ein Bug kein Fehler, den man beheben sollte, sondern eine Entscheidung, die niemand bewusst getroffen hat. Wir haben heute den kompletten Quellcode – Engine und Bot-Schicht – einem Frische-Augen-Audit unterzogen und zwei Verbesserungen live gebracht. Die interessantere der beiden begann als vermeintlicher Fehler und endete mit einer klaren Lehre: Wieder-Einschalten hätte geschadet. Abschalten brachte +20.9 Elo.
Ein Audit mit frischen Augen
Wir haben den gesamten Code einmal so lesen lassen, als sähe man ihn zum ersten Mal – ein KI-gestütztes Audit über die komplette Quelle, entstanden im Rahmen der Verfügbarkeit von Anthropics Claude-Modell Fable. Frische Augen finden Dinge, an denen der eigene Blick längst vorbeiläuft: Annahmen, die nie hinterfragt wurden, und Schalter, die anders stehen, als man denkt. Genau zwei solcher Funde haben es in die Engine geschafft.
Der Forfeit-Bug
Der erste Fund war eine reine Korrektheitssache. Die Prüfung der 50-Züge-Regel war an der Wurzel der Suche falsch abgesichert. In dem seltenen Fenster, in dem eine Partie über 50 reversible Züge läuft, ohne dass jemand Remis reklamiert, konnte die Engine an der Wurzel keinen gültigen Zug zurückgeben. Praktisch hieße das: Zeit läuft ab, Partie verloren – und zwar an einem selbst gebauten Sonderfall, nicht am Brett. Selten, aber real. Behoben.
Der tragende Bug
Der zweite Fund ist die eigentliche Geschichte. Eine Such-Technik namens Singular Extensions – sie verlängert gezielt besonders vielversprechende Varianten, um dort tiefer zu schauen – war durch einen Flag-Fehler auf der Hauptvariante praktisch abgeschaltet. Der intuitive Reflex: Fehler gefunden, also wieder einschalten.
Wir vertrauen bei so etwas aber nicht der Intuition, sondern der Messung. Ein SPRT-Test – zwei Versionen spielen tausende Partien gegeneinander, bis das Ergebnis statistisch eindeutig ist – zeigte etwas Unerwartetes:
- Die Technik wieder einzuschalten kostete rund 56 Elo. Der „Bugfix" machte die Engine also spürbar schwächer.
- Die Gegenprobe – die Technik komplett abzuschalten – gewann +20.9 Elo, statistisch glasklar über 2133 Testpartien.
Der Bug war also tragend: Was wie ein Versehen aussah, hielt die Engine in Wahrheit oben. Bei clrsrcs Geschwindigkeitsklasse ist diese Extra-Cleverei netto schädlich – die eingesparte Zeit steckt die Engine besser in eine gleichmäßig tiefere Suche für alle Züge. Weniger Sonderbehandlung, mehr Substanz. Das passt bemerkenswert gut zur Idee hinter dem Namen: clear source – die schlanke, reine Quelle.
Ein robusterer Bot
Parallel haben wir die Bot-Schicht gehärtet – elf kleine Zuverlässigkeits-Fixes, die keine Elo bringen, aber verhindern, dass Partien an Infrastruktur-Schluckauf verloren gehen:
- Absturz-Wiederherstellung im Partie-Ablauf, damit ein einzelner Fehler nicht die ganze Partie mitreißt.
- Ein Sicherheitsnetz, das bei einem fehlerhaften Zug einen legalen Notzug spielt, statt die Partie kampflos herzugeben.
- Verbindungs-Watchdogs, die hängende Reconnects und halb offene Verbindungen schneller erkennen.
- Neustart-feste Tageszähler und weitere Kleinigkeiten aus derselben Familie.
Was bleibt
Am Ende des Tages: +20.9 Elo, ein Forfeit-Risiko aus der Welt und ein deutlich robusterer Bot – alles live. Die schönste Erkenntnis ist aber keine Zahl, sondern eine Haltung: messen statt annehmen. Der offensichtliche Fix wäre der falsche gewesen; erst der Test hat den tragenden Bug als solchen entlarvt. Manchmal ist weniger Such-Cleverness eben mehr Spielstärke.
📅 Termin zum Vormerken: Am 20.07.2026 um 14:00 Uhr (CEST) tritt clrsrc_lc0 beim International Chess Day Team Battle an (3+0, gewertet). Schaut gern zu.
Die Engine im Live-Betrieb siehst du auf der Live-Seite.