Tests mit Schiedsrichter

Diesen Beitrag anhören8 Min.

Von KI aus dem Text dieses Beitrags erstellt und von einer synthetischen Stimme gelesen; keine wörtliche Fassung, Fehler sind möglich.

Ein Regressionstest beantwortet eine Frage: Tut die Engine noch, was sie vorher getan hat? Am einfachsten schreibt man ihn so: Engine laufen lassen, Antwort notieren, später prüfen, ob sich die Antwort geändert hat. Genau das ist die Falle. Ein so geschriebener Test weiß nicht, ob die alte Antwort richtig war. Er weiß nur, dass es die eigene Antwort der Engine war.

Das Projekt baut eine neue Regressionsbatterie um eine Regel: Sollwerte kommen von einem Schiedsrichter, nie von der Engine. Dieser Beitrag beschreibt die Regel, zwei Fälle, die zeigen, warum sie zählt, und was die Batterie bewusst nicht tut.

Wer als Schiedsrichter gilt

Nur drei Dinge dürfen einen Sollwert setzen:

Eine Engine eines anderen Projekts darf helfen, interessante Stellungen zu finden oder zu messen, aber ihre Ausgabe ist nie ein Sollwert. Ebenso wenig die Ausgabe eines Coherent-Baus, auch nicht die alter Fassungen, deren Antworten in alten Testdateien stehen.

Fall eins: der Test, der falsch war

Eine bestehende Testdatei enthielt diese Stellung, Schwarz am Zug:

8/N5k1/3Q4/7p/3R4/8/2P2K1P/8 b - - 0 38

Laut Datei wird Schwarz in vier Zügen matt. Ein erschöpfender Beweis sagt: matt in drei, was Schwarz auch zieht. Der alte Sollwert war die Antwort einer früheren Engine, aufgeschrieben, als wäre sie eine Tatsache. Jede Fassung, die das schnellere Matt fand, wäre an diesem Test gescheitert.

Fall zwei: ein Matt, das die Regeln nicht mehr zuließen

Ende September stieß ein Gutachter beim Bau von Proben für eine ganz andere Änderung auf diese Stellung:

2k5/8/3R2K1/8/8/8/8/8 w - - 88 1

Turm gegen König, Weiß am Zug, und ein Matt ist nicht weit. Aber die Halbzuguhr steht schon bei achtundachtzig; nach zwölf weiteren Halbzügen ohne Schlag- oder Bauernzug ist die Partie nach der Fünfzig-Züge-Regel remis. Die Suche meldete ein Matt, das zu spät käme, um zu zählen. Eine unabhängige Prüfung ohne jeden Schnitt fand für keinen der Züge von Weiß ein Matt in der verbleibenden Frist. Der wahre Wert ist remis.

Die Ursache lag in der Transpositionstabelle. Sie übernahm Mattwerte, ohne zu fragen, ob die verbleibenden Züge bis zur Fünfzig-Züge-Grenze dafür reichen. Eine Korrektur ist geschrieben und von einem zweiten, unabhängigen Gutachter geprüft. Sie nimmt nur Schnitte weg und setzt nie einen Wert. Wie jede Engine-Änderung kommt sie nur über die Pipeline in die veröffentlichte Engine.

Für sich genommen ist keiner der beiden Fälle dramatisch. Zusammen zeigen sie, was ein Test ohne Schiedsrichter tut: Er friert ein, was die Engine damals glaubte, samt ihrer Fehler.

Wie eine Zeile aussieht

Jeder Test ist eine Zeile. Sollwerte stehen dort als Eigenschaften, nicht als genaue Ausgaben: „der Zug ist einer von diesen“, „matt in N“, „nie ein Mattwert“. Außerdem verlangt jede Zeile einen legalen Bestzug, keinen Absturz und ein vollständiges Protokoll.

Es gibt zwei Stufen:

Damit daraus kein Rauschen wird, läuft die Batterie mit festen Knotenzahlen statt nach der Uhr. Jede Zeile wird bei einem Budget N geprüft und noch einmal beim Vierfachen von N, und alles läuft zweimal. Weichen zwei Wiederholungen voneinander ab, gilt das als Prüffehler, nie als Bestehen.

Eine Regelzeile stammt aus den Prüfungen des Zuggenerators. Der weiße König steht im Schach durch den Bauern auf d5, und der einzige legale Zug ist der En-passant-Schlag e5xd6. Er beseitigt den schachgebenden Bauern, obwohl d6 nicht auf der Linie des Schachs liegt. Eine Abkürzung, die Ausweichzüge nur auf der Schachlinie sucht, würde ihn übersehen.

Die zweite Lieferung

Eine zweite Lieferung bringt knapp hundert Zeilen aus dem Endspielwissen sowie aus Taktik, Schlagzügen und Auswegen aus dem Schach; die genauen Zahlen stehen in der Tabelle unten. Darunter sind klassische Mattbilder wie das erstickte Matt und Stellungen aus berühmten Partien des neunzehnten und frühen zwanzigsten Jahrhunderts, aus den Zügen erzeugt statt abgetippt. Ein eigener Prüfer liest nur die fertigen Zeilen und rechnet jede Sollmenge beim Schiedsrichter neu nach: Alle stimmen. Sechs absichtlich verdorbene Fassungen fallen alle durch, wie sie sollen, etwa eine mit falscher Mattdistanz, eine mit illegalem Zug und eine mit geänderter Halbzuguhr. Der Prüfer stammt aus derselben Modellfamilie wie die Zeilen. Die Prüfung durch eine zweite Familie steht noch aus, und das steht auch hier.

Teil der zweiten LieferungZeilen
Aus dem Endspielwissendreiundfünfzig
Aus Taktik, Schlagzügen und Auswegen aus dem Schachvierundvierzig
Gesamtsiebenundneunzig

Einen Sollwert ändern

Ein Sollwert ändert sich nur in einer eigenen Änderung, die zu keinem Kandidaten gehört. Nach den Regeln weist die Eingangsprüfung jeden Kandidaten ab, der die Batterie berührt. Eine Zeile zu lockern braucht einen Beleg des Schiedsrichters und die Bestätigung einer unabhängigen Modellfamilie. Lockerungen werden gezählt. Übersteigen sie ein Zehntel der Quotenzeilen, wird der Quotensatz verkleinert statt aufgeweicht.

Geplant ist ein verdeckter Teil der Batterie mit denselben Gruppen, aber mit Stellungen, die nur die Messseite kennt. So kann kein Kandidat auf die sichtbaren Zeilen hin zugeschnitten werden. Solange es ihn nicht gibt, ist die sichtbare Batterie offen erklärt nur eine Vorprüfung.

Was das nicht heißt

Die Batterie misst keine Spielstärke, und sie soll es auch nicht. Heutige Stände unterscheidet sie kaum. Ihre Aufgabe ist, Patzer zu fangen, Pattfehler, verlorene Auswege aus dem Schach und Schnitte, die zu scharf greifen. Ein Gutachter hat außerdem auf einen echten blinden Fleck hingewiesen: Manche Schutzregeln der Suche, etwa die für Zugzwangstellungen, haben keine Zeile, die ein Schiedsrichter prüfen könnte. Fiele eine davon weg, bliebe die Batterie grün. Diese Grenze ist gewollt. Die Spielstärke bleibt beim Orakel, und wo sich eine Eigenschaft beweisen lässt, kommt sie in die Pflichtstufe.