Korrektur meiner eigenen Einordnung von vorhin: ich hatte restart_server.bat
als "Wiederanlauf-Pfad" ausgenommen. Falsch. Die Aufgabenplanung startet
start_server_hidden.vbs -> start_server.bat; restart_server.bat wird von NICHTS
automatisch aufgerufen (geprueft) und ist damit ein absichtliches Deployment.
Es prueft jetzt vor dem Kill, Notausgang --ohne-pruefung.
Nur start_server.bat bleibt ungeprueft - das ist der echte Wiederanlauf-Pfad.
Zwei cmd-Fallen, beide NUR durch den Positiv-Test gefunden:
1) `if errorlevel 1` innerhalb eines geklammerten if/else-Blocks wird zur
PARSE-Zeit ausgewertet, nicht zur Laufzeit. Der erste Entwurf brach deshalb
auch bei SAUBEREM Code ab - der Neustart haette nie mehr funktioniert.
Behoben mit Sprungmarken statt Klammer-Bloecken.
2) `echo ... ^(x^)` maskiert im Block anders -> "Der Befehl [0] ist falsch
geschrieben". Text jetzt ohne runde Klammern.
Der Negativ-Test allein sah in beiden Faellen voellig in Ordnung aus: kaputter
Code -> Abbruch, Server unangetastet, Exit 1. Erst der Positiv-Test hat es
entlarvt. Eine Sperre muss man in beide Richtungen pruefen.
Alle drei Zweige verifiziert (sauber -> weiter/rc 0, kaputt -> Abbruch/rc 1,
--ohne-pruefung -> weiter/rc 0), gegen eine Attrappe, deren Kill/Start durch ein
echo ersetzt ist - so liess sich der Durchlauf-Zweig pruefen, ohne den
laufenden Server anzufassen.
Auch der Testaufbau hatte einen Fehler: die Attrappe lag zuerst in %TEMP%, dort
macht `cd /d "%~dp0"` das Temp-Verzeichnis zum Arbeitsordner und
%~dp0tools\pre_commit.py existiert nicht -> scheinbarer Fehlschlag.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>