chore(tests): den Determinismus-Wächter auf den KI-Strang ausweiten und den roten PlayMode-Test berichtigen - #120
Merged
Conversation
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.
Was
Zwei Issues, ein Thema: Nachweise, die niemand einsammelt, sind keine Nachweise.
Fixes #74
Refs #110
#74 — der Determinismus-Wächter hatte ein Loch
NoFloatInSimulationTestsscannte genau zwei Wurzeln:Scripts/CoreundScripts/Simulation.Scripts/AIundScripts/AI.Datastanden nicht in der Liste — obwohlSkirmishAiSystemin der kanonischen Tickreihenfolge zwischenCombatundVictoryregistriert ist und seine Befehle byte-gleich zum Netzwerkpfad laufen. Einfloatdort bricht den Lockstep genauso wie einer im Kernel, nur fängt ihn kein Test.Beide Kopien (
tools/Nova.SimRunner.Tests/undAssets/Tests/EditMode/Simulation/) scannen jetzt alle vier Wurzeln: 97 statt 86 Dateien.Der Wächter wurde erst scharf gemacht, dann bewertet — in dieser Reihenfolge, damit ein Fund kein Grund wird, ihn wegzulassen. Ergebnis: der Bestand ist sauber, der KI-Strang rechnet durchgehend ganzzahlig. Es gab nichts zu beheben, nur etwas zu sichern.
Zusätzlich neue Existenz-Pins in
ScanActuallyReachesTheSimulationSources: der Scan mussAI/SkirmishAiSystem.csundAI.Data/AiProfile.cstatsächlich sehen. Ohne die läuft ein Wächter, dessen Wurzel eines Tages umbenannt wird, still über ein leeres Verzeichnis und meldet Erfolg.Die Lücke hatte der externe Beitragende selbst im Quelltext vermerkt (
AI/CombatStrength.cs), statt sie zu verschweigen — gefunden haben wir sie nur dadurch. Der Vermerk ist auf den neuen Stand gezogen.#110 — der rote PlayMode-Test
MainMenuTests.NetworkPanel_ValidatesMasksAndCancelsWithoutStartingGameplayschlug auf unberührtemmainfehl.Befund: die Erwartung war überholt, nicht der Code. Seit Sprint 14 (D-092) öffnet „Netzpartie" die Lobby-Einstiegsansicht (
MainMenuController.cs,MakeButton("Netzpartie", () => ShowLobbyPanel(true))); dasmenu-network-Panel liegt einen Schritt dahinter hinter „Direktverbindung …". Der Test wurde bei diesem Umbau nicht mitgezogen und pinnte weiter den Sprint-13-Pfad.Der Test wurde nicht abgeschwächt. Er geht jetzt den echten Weg und behauptet dabei mehr als vorher:
Alle ursprünglichen Zusicherungen (Maskenprüfung, kein Start von Gameplay) stehen unverändert dahinter. Die Begründung samt Verweis auf den Umbau-Commit steht im Docstring des Tests, nicht nur in dieser PR-Beschreibung.
Ein Verdacht wurde ausdrücklich geprüft und nicht bestätigt: der Riegel aus Paket 21.8 (
SetGameplayLayerActive/ModalSurfaceLink) berührt den Menüpfad nicht — der Test war schon vor dieser Arbeit rot.Warum
Refs #110und nichtFixesDer eigentliche Befund des Issues ist nicht der eine Test, sondern:
.github/workflows/tests.ymlfährt ausschließlich die headless-Kette. 592 EditMode- und 11 PlayMode-Tests laufen in keiner CI. Ein roter Test, den keine Kette fährt, ist ein Test, der niemanden warnt.Das zu ändern ist eine Inhaberentscheidung — es braucht eine Unity-Lizenz als GitHub-Secret, Laufzeit und Geld, und
.github/workflows/ist eine Sicherheitsfläche mit eigenem Gate. Dieser PR fasst.github/deshalb nicht an. Drei Wege mit Kostenabschätzung und einer Empfehlung liegen im Bericht unterreports/v8.6.0/sprint-21/. Das Issue bleibt offen, bis darüber entschieden ist.Nachweis
dotnet test tools/Nova.SimRunner.Tests -c Release: 730/730 grün, vorher wie nachher — vom Orchestrator unabhängig nachgefahren, nicht nur vom Worker berichtet-quit, sonst beendet sich Unity vor dem Testlauf, schreibt keine Ergebnisdatei und meldet trotzdem Erfolg.Herkunft
Erarbeitet von Kimi K3 als delegiertem Worker in einem isolierten Worktree; Testkette und die Behauptung zum Menüpfad wurden vom Orchestrator gegen den Produktivcode nachgeprüft.