test(ai): Ausgangspin der kanonischen KI-Partie vom Identitätspin trennen (D-101) - #79
Merged
Conversation
…ennen (D-101) SkirmishAiTests pinnte Kennung, Entscheidungstick und Endzustands-Hash in einer Zusicherung. Die Kopplung war beabsichtigt, liegt aber an der falschen Naht: die beiden Zahlen bewegen sich bei JEDER Aenderung an der Simulation, in der die KI spielt. Paket 16.1 verschob den Endzustand, 16.2 zusaetzlich den Tick - beide fassen keine Zeile KI-Code an. Die im Kommentar hinterlegte Prozedur schickte den Netzstrang damit in das Verhaltensjournal des Einheitenstrangs. Entscheidungstick und Endzustand ziehen nach CanonicalAiOutcomeTests um, das der Netzstrang besitzt. Die Kennung bleibt in SkirmishAiTests, samt ihrer Prozedur. Die Diagnose geht nicht verloren: der neue Test liest die Kennung mit und unterscheidet im Fehlertext zwischen KI- und Simulationsaenderung. Neu ist eine Zusicherung, die es vorher nicht gab: eine unentschiedene Partie (Tick 0) ist ein Defekt und kein verschobener Pin. Sie wird zuerst und getrennt geprueft. Genau dieser Fall trat in Paket 16.3 auf. Vier Deklarationen in SkirmishAiTests werden internal, damit der Harness wiederverwendbar ist; er ist damit Vertragsflaeche und im Regelwerk vermerkt. tools/Nova.SimRunner.Tests/ bekommt erstmals eine Eigentuemerzeile. Keine Baseline-Datei beruehrt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Das Problem
SkirmishAiTests.AiBehaviorId_TracksWhatTheAiActuallyDoespinnte drei Werte in einer Zusicherung:Die Kopplung war beabsichtigt und gut begründet — der Kommentar sagt: „Either half alone is useless."
Sie liegt aber an der falschen Naht. Entscheidungstick und Endzustand bewegen sich bei jeder Änderung an der Simulation, in der die KI spielt — nicht nur bei einer Änderung an der KI. Gemessen an den offenen Sprint-16-PRs:
endStatedecided2546 statt 2548, undendStatedecided= 0 — unentschiedenDamit riss der Test bei jedem Paket, und die im Kommentar hinterlegte Prozedur schickte den Netzstrang in
tools/Nova.AiLab/reports/behavior-log.md— das Verhaltensjournal des Einheitenstrangs, also das falsche Buch. Der Test liegt zudem intools/Nova.SimRunner.Tests/, einem Verzeichnis, das in der Schreibhoheitstabelle gar keinen Eigentümer hatte (#75).Die Änderung
Der Pin wird geteilt, nicht geschwächt.
SkirmishAiTests.AiBehaviorId_TracksWhichAiThisIsbehält die Kennung samt ihrer Prozedur. Einheitenstrang.CanonicalAiOutcomeTests(neu) hält Entscheidungstick und Endzustand. Netzstrang.Die Diagnose, die die Kopplung leistete, geht nicht verloren — sie wandert aus der Zusicherung in den Fehlertext, wo sie ohnehin erst gelesen wird:
Die letzte Zeile ist neu. Sie wird zuerst und getrennt geprüft, damit der Fehlertext „bewegt" und „kaputt" auseinanderhält — genau der Unterschied zwischen #68 und #71, den man bisher nur durch Vergleichen der Zahlen erkannte.
Was am Einheitenstrang berührt wird
So wenig wie möglich: vier Deklarationen werden
internal, damit der Harness wiederverwendbar ist (Seed,EndToEndBudgetTicks,AiHost,BuildMatch). Die Testlogik dort ist unverändert; die Zusicherung schrumpft auf eine Zeile, der Kommentar verweist auf die neue Datei.AiHost/BuildMatchsind damit Vertragsfläche und im Regelwerk als solche eingetragen: umbenennen oder Signatur ändern nur nach Ansage, der Inhalt bleibt frei.Falls @arn-c0de den Harness lieber ganz in eine eigene Datei ausgelagert sähe, ist das eine saubere Folgeänderung — sag Bescheid in #75.
Governance
13-15_Parallelbetrieb.md1.4.0:tools/Nova.SimRunner.Tests/bekommt erstmals eine Eigentümerzeile — geteilt je Datei, fremde Testdateien nur nach Ansage. Damit ist Schreibhoheit: tools/Nova.SimRunner.Tests/ hat keinen Eigentümer #75 im Kern beantwortetWarum das jetzt kommt
Ohne diese Trennung kommt kein einziger Sprint-16-PR durch die CI, auch keiner der noch gebaut wird.
🤖 Generated with Claude Code