Was die Ergebnisdatei nicht benennt

Alles Folgende wurde aus den eigenen Ergebnisdateien der Oberfläche gelesen: sechs Turnierdateien auf der Arbeitsstation, nicht das Testregister. Nichts hier hat eine Testnummer, und nichts hier könnte eine haben — weshalb nichts davon eine Aussage über die Spielstärke ist.

Der erste Lauf in einer Turnieroberfläche, drei Lesefehler derselben Form, und fünf Mängel, welche die Prüfstandsberichte nie aufwarfen.

Coherent war bereits einige Zeit von einem Prüfstand gespielt worden, bevor irgendjemand ihm beim Spielen zusah. Am 2026-08-30 lief die Engine in einer Turnieroberfläche auf einer Arbeitsplatzmaschine — ein Brett auf dem Bildschirm, eine herunterlaufende Uhr.

Dieser Eintrag handelt nicht davon, wie die Engine abschnitt; diese Frage gehört in eine Messung, und dies war keine. Er handelt davon, was die Oberfläche speichert, was sie auslässt und welche drei Lesefehler daraus folgten — der dritte entstand beim Schreiben dieses Textes.

Die Farbe ist nicht gekennzeichnet

Jede beendete Partie wird mit ihrem Ergebnis, dem Beendigungsgrund, ihrer Länge, den Zügen und den Namen der beiden Engines gespeichert. Kein Feld kennzeichnet eine der Engines als Weiß oder Schwarz. black und color kommen in den Dateien überhaupt nicht vor; white und side dagegen schon — in einer Armageddon-Regel und in swap pair sides, beide auf Turnierebene —, doch keines davon kennzeichnet jemals eine Partie. Die Namen stehen in einer Liste aus zwei Einträgen, und diese Liste sieht so aus, als gäbe sie die Farben an.

Die Datei schweigt zu diesem Thema nicht, und genau deshalb funktioniert die Falle. Jede Spieldatei enthält in ihrem Header "swap pair sides": true. Das Format hält fest, dass die Seiten getauscht werden, und kennzeichnet dann nie, welche Seite jemand in einer bestimmten Partie hatte.

Eine automatisierte Auswertung nahm den ersten Namen als Weiß an. Beim Abgleich mit den Zugdaten ist der erste Name in jeder untersuchten Partie Schwarz — diese Auswertung wies also beiden Engines in jeder einzelnen Partie die falsche Farbe zu, und bei vertauschten Farben liest sich das Ergebnis einer entschiedenen Partie als sein genaues Gegenteil. Ein Remis bleibt ein Remis; alles andere kehrt sich um. Es gibt keine Teilanrechnung und keinen Ausgleich durch Mittelung: Eine falsche Konstante ist überall falsch.

Was die Datei enthält, ohne es zu kennzeichnen

Die Farben lassen sich rekonstruieren, weil die Oberfläche neben jedem von den Engines berechneten Zug eine Bewertung, eine Tiefe und eine Knotenzahl speichert — die vorgegebenen Eröffnungszüge tragen keinen Kommentar — und die beiden Seiten in diesen Partien mit sehr unterschiedlichen Tiefen suchten.

Eine Seite suchte durchgehend flach und ging nie in die Tiefe; die andere verbrachte die meisten ihrer Züge in wesentlich größerer Tiefe. Die beiden Verteilungen überschneiden sich nur in einem schmalen Bereich an der Obergrenze der flach suchenden Seite — eine Handvoll Züge unter Tausenden —, und ihre Schwerpunkte kommen einander nicht nahe. Zusammen mit einem zweiten Merkmal — die Eröffnung ist vorgegeben und zwanzig Halbzüge lang, sodass der erste kommentierte Zug in jeder Partie von Weiß stammt — lässt sich die Listenposition bestimmen: Die an zweiter Stelle genannte Engine hatte Weiß. Über alle sechs Spieldateien und beide Listenreihenfolgen hinweg geprüft, ohne Gegenbeispiel.

Dies ist eine konsistente Rekonstruktion, kein Beweis. Zwei Annahmen, auf denen sie beruht, sollten klar benannt werden. Die beiden Merkmale sind nicht unabhängig: Beide stammen aus derselben Datei, und sie ergänzen einander, statt sich gegenseitig zu bestätigen. Und die Trennung der beiden Tiefencluster zeigt für sich genommen nicht, welcher Cluster zu welchem Namen gehört — dieser Schritt nutzt Informationen von außerhalb der Datei, um einen Engine-Namen einem Tiefencluster zuzuordnen. Eine Spieldatei, die keine der beiden Engines enthält, weist ebenfalls einen flachen Cluster auf, daher ist „flach bedeutet Coherent“ nichts, was die Daten aus eigener Kraft belegen.

Eine unabhängige Prüfung durch ein anderes Modell, dem die Dateien und nichts von dieser Argumentation vorlagen, gelangte zur gleichen Rekonstruktion und wollte sich anschließend nicht darauf festlegen. Sein Einwand bleibt bestehen: Schachwerkzeuge führen üblicherweise Weiß zuerst auf, sodass Daten und Konvention in entgegengesetzte Richtungen weisen, und die Datei allein löst diesen Widerspruch nicht auf.

Der zweite Lesefehler und der dritte

Dieselbe Auswertung nannte eine Partienzahl, die sich bei einer Neuzählung nicht reproduzieren lässt, und die Differenz entspricht einem ganzen Turnier: Eine benachbarte Datei im selben Ordner enthält Partien zwischen zwei anderen Engines, an denen Coherent nicht beteiligt war. Sie waren mitgezählt worden — und sie sind auch der Grund, weshalb eine Zählung der Partien, „die nicht mit Matt endeten“, viel zu hoch ausfiel, da keine dieser Partien mit Matt endete.

Der dritte Fehler steckt im Entwurf dieses Eintrags selbst. Zwei Commits von diesem Tag wurden als Behebungen für zwei der unten genannten Mängel bezeichnet. Sie existieren und stammen von diesem Tag, aber 6257300 reserviert die pseudo-legale Zugliste im Voraus und d8f006b ändert sieben Bereichsschleifen so, dass sie per Referenz binden — der Durchsatzpunkt und der Baupunkt, nicht die beiden Punkte, denen sie zugeordnet worden waren. Die Zuordnung wurde angenommen, und sie war falsch.

Die drei Fälle folgen einem gemeinsamen Muster: Reihenfolge, Nähe oder Zeitpunkt wurden als Metadaten behandelt, und die Zuordnung wurde nie überprüft. Eine separate Prüfung deckte jeden einzelnen auf. Genau das zeigen drei Fälle — ein Muster, das dreimal auftrat, kein Gesetz darüber, wie häufig es auftritt oder warum.

Was der Lauf in einer Oberfläche sichtbar machte

Der Prüfstand lässt jeden Kandidaten gegen Coherents eigenen Vorgänger spielen und meldet eine Wertungsdifferenz. Ein Fehler, der beide Seiten gleichermaßen betrifft, verändert diese Zahl nicht, sodass nichts im normalen Bericht darauf aufmerksam macht. Fünf Dinge fielen in einer GUI auf, die in den Berichten des Prüfstands nicht hervorgetreten waren:

WasWarum die Berichte es nicht hervorhoben
Ein Matt wird als Centipawn-Wert gemeldet, nicht als score mateNichts im Prüfstand zeigt die Zahl einem Menschen an
Die info-Zeilen enthalten keine HauptvarianteDasselbe
Zeitüberschreitungen bei kurzen BedenkzeitenBeide Seiten verwenden denselben Uhrencode, daher besteht zwischen ihnen kein Unterschied
Eine fehlgeschlagene Hash-Speicherzuweisung beendet den ProzessDer Prüfstand legt eine feste, kleine Hash-Größe fest
Ein großer Unterschied bei den Knoten pro Sekunde gegenüber dem GegnerDie gemeldete Größe ist die Wertung, nicht der Durchsatz

Nichts davon war grundsätzlich unsichtbar — eine Zeitüberschreitung erscheint durchaus in einem Ergebnis, und der Durchsatz lässt sich aus Knoten und Zeit berechnen. Diese Dinge blieben unbeachtet, was etwas anderes ist und der Grund dafür, dass sich eine zweite Art von Lauf überhaupt lohnte.

Der erste Punkt ist nicht kosmetisch. VERFASSUNG.md benennt diesen Kanal: Entscheidungsschwellen hängen von gemeldeten Bewertungen ab, sodass eine verschobene Skala eine Entscheidung verändern kann, sobald eine Schwelle tatsächlich überschritten wird — ohne dass ein einziger besserer Zug gespielt wird.

Was dies nicht besagt

Es besagt nicht, wie stark die Engine ist, und aus nichts hiervon sollte eine Wertung abgeleitet werden. Die Stärkeeinstellung des Gegners wurde zwischen den Turnieren geändert und wird in diesen Dateien überhaupt nicht gespeichert; sie existiert nur in der Konfiguration der Oberfläche. Partien aus verschiedenen Turnieren sind unterschiedliche Experimente und lassen sich nicht addieren. Die Messungen stehen auf der Seite zum aktuellen Stand und wurden unter Bedingungen durchgeführt, die niemand hier kontrolliert.

Es besagt nicht, dass die fünf oben genannten Punkte Wertung kosten. Die meisten betreffen Ausgabe und Robustheit. Jeder Punkt, der den Verlauf einer Partie verändern könnte, durchläuft wie alles andere den Prüfstand, und solange das nicht geschehen ist, ist nichts über seinen Wert belegt.

Es besagt nicht, dass der Prüfstand sie nicht finden könnte. Es besagt, dass seine Berichte sie nicht hervorhoben, und nennt in jedem Fall den Grund.

Und es besagt nicht, dass die Auswertung jetzt richtig ist. Drei Fehler wurden gefunden, weil eine separate Prüfung vorgenommen wurde — die Zugdaten für die Farben, eine Neuzählung für die Partien, das Repository für die Commits. Wo keine separate Prüfung vorgenommen wurde, ist weniger ausgeschlossen worden.