Skip to content

chore(tests): den Determinismus-Wächter auf den KI-Strang ausweiten und den roten PlayMode-Test berichtigen - #120

Merged
cubetribe merged 1 commit into
mainfrom
chore/verifikationskette-ai-guard
Aug 29, 2026
Merged

chore(tests): den Determinismus-Wächter auf den KI-Strang ausweiten und den roten PlayMode-Test berichtigen#120
cubetribe merged 1 commit into
mainfrom
chore/verifikationskette-ai-guard

Conversation

@cubetribe

Copy link
Copy Markdown
Collaborator

Was

Zwei Issues, ein Thema: Nachweise, die niemand einsammelt, sind keine Nachweise.

Fixes #74
Refs #110

#74 — der Determinismus-Wächter hatte ein Loch

NoFloatInSimulationTests scannte genau zwei Wurzeln: Scripts/Core und Scripts/Simulation. Scripts/AI und Scripts/AI.Data standen nicht in der Liste — obwohl SkirmishAiSystem in der kanonischen Tickreihenfolge zwischen Combat und Victory registriert ist und seine Befehle byte-gleich zum Netzwerkpfad laufen. Ein float dort bricht den Lockstep genauso wie einer im Kernel, nur fängt ihn kein Test.

Beide Kopien (tools/Nova.SimRunner.Tests/ und Assets/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 muss AI/SkirmishAiSystem.cs und AI.Data/AiProfile.cs tatsä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_ValidatesMasksAndCancelsWithoutStartingGameplay schlug auf unberührtem main fehl.

Befund: die Erwartung war überholt, nicht der Code. Seit Sprint 14 (D-092) öffnet „Netzpartie" die Lobby-Einstiegsansicht (MainMenuController.cs, MakeButton("Netzpartie", () => ShowLobbyPanel(true))); das menu-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:

  • das Netzwerk-Panel bleibt geschlossen, bis der Spieler es in der Lobby wählt
  • „Abbrechen" führt ins Hauptmenü zurück, nicht einen Schritt zurück in die Lobby

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 #110 und nicht Fixes

Der eigentliche Befund des Issues ist nicht der eine Test, sondern: .github/workflows/tests.yml fä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 unter reports/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
  • Nicht belegt: der PlayMode-Fix selbst und die EditMode-Wächterkopie sind gelesen, nicht gelaufen — Unity stand nicht zur Verfügung. Erwartung für den lokalen Lauf: PlayMode 13/13. Wichtig dabei: Batchmode ohne -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.

@cubetribe
cubetribe merged commit e3149f9 into main Aug 29, 2026
7 checks passed
@cubetribe
cubetribe deleted the chore/verifikationskette-ai-guard branch August 29, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Determinismus-Wächter scannt Scripts/AI/ nicht — ein Float dort käme durch die CI

1 participant