restart_server.bat prueft jetzt auch - und zwei cmd-Fallen dabei behoben
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>
This commit is contained in:
co-authored by
Claude Opus 5
parent
0ab79f1876
commit
b14d81f412
@@ -4938,15 +4938,39 @@ abgeschossen werden. Notausgang `--ohne-pruefung` (Philosophie wie
|
||||
Exit **1**, und die **Server-PID vorher/nachher identisch** (20892) — der
|
||||
laufende Prozess wurde nachweislich nicht angefasst; ohne Fehler läuft es durch.
|
||||
|
||||
⚠⚠ **BEWUSST NICHT in `restart_server.bat` und die Aufgabenplanung** — das ist
|
||||
die wichtigere Hälfte der Entscheidung. Das sind **Wiederanlauf**-Pfade. Würde
|
||||
ein fehlschlagender Test dort den Start verhindern, stünde eine offene Position
|
||||
ohne Trailing, Time-Stop und Notfall-Stop da — nur mit dem Broker-SL. **Eine
|
||||
Prüfung, die den Bot offline lässt, ist schlimmer als der Fehler, den sie
|
||||
sucht.** Der Batch gibt stattdessen einen **Hinweis** aus und verweist auf
|
||||
`deploy.py`; ein Kommentarblock hält die Begründung im Skript fest.
|
||||
✅ **AUCH `restart_server.bat` prüft jetzt** (Korrektur am selben Tag): mein
|
||||
erster Entwurf hatte es als „Wiederanlauf-Pfad" ausgenommen — **falsch**. Die
|
||||
Aufgabenplanung startet `start_server_hidden.vbs` → **`start_server.bat`**;
|
||||
`restart_server.bat` wird von **nichts** automatisch aufgerufen (geprüft) und
|
||||
ist damit ein **absichtliches Deployment**. Es prüft jetzt vor dem Kill,
|
||||
Notausgang `restart_server.bat --ohne-pruefung`.
|
||||
⚠⚠ **NUR `start_server.bat` bleibt ungeprüft** — das ist der echte
|
||||
**Wiederanlauf**-Pfad (Reboot/Logon). Würde ein fehlschlagender Test dort den
|
||||
Start verhindern, stünde eine offene Position ohne Trailing, Time-Stop und
|
||||
Notfall-Stop da — nur mit dem Broker-SL. **Eine Prüfung, die den Bot offline
|
||||
lässt, ist schlimmer als der Fehler, den sie sucht.**
|
||||
**Regel: absichtliches Deployment blockieren, Wiederanlauf niemals.**
|
||||
|
||||
⚠⚠ **ZWEI cmd-FALLEN DABEI, 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 hätte **nie mehr
|
||||
funktioniert**. Behoben mit **Sprungmarken statt Klammer-Blöcken**.
|
||||
**(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 Fällen völlig in Ordnung aus** —
|
||||
kaputter Code → Abbruch, Server unangetastet, Exit 1. Erst der Positiv-Test
|
||||
(sauberer Code muss DURCHLAUFEN) hat es entlarvt. **Eine Sperre muss man in
|
||||
beide Richtungen prüfen; „blockiert korrekt" ist nur die Hälfte.**
|
||||
✅ 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 prüfen, ohne
|
||||
den laufenden Server anzufassen.
|
||||
⚠ Auch der Testaufbau selbst 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. **Der Test
|
||||
gehört ins Projektverzeichnis.**
|
||||
|
||||
## ✅ LIVE↔BACKTEST-VERGLEICH IST JETZT TEIL DER PIPELINE (2026-08-07)
|
||||
|
||||
Konsequenz aus dem Messfehler direkt darunter: der Vergleich lief nur, wenn
|
||||
|
||||
+38
-10
@@ -17,19 +17,47 @@ set "PY=C:\Users\ah\AppData\Local\Programs\Python\Python312\python.exe"
|
||||
set "HLDIR=%~dp0..\HyperLiquid-WTI Trader"
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
REM ⚠ HIER LAEUFT BEWUSST KEINE CODE-PRUEFUNG (2026-08-07).
|
||||
REM Dieser Batch ist ein WIEDERANLAUF-Pfad (auch per Aufgabenplanung
|
||||
REM nach Reboot/Logon ueber start_server_hidden.vbs). Wuerde ein
|
||||
REM fehlschlagender Test den Start verhindern, staende eine offene
|
||||
REM Position ohne Trailing, Time-Stop und Notfall-Stop da - nur mit
|
||||
REM dem Broker-SL. Eine Pruefung, die den Bot offline laesst, ist
|
||||
REM CODE-PRUEFUNG VOR DEM KILL (2026-08-07).
|
||||
REM ⚠ Dieser Batch wird von NICHTS automatisch aufgerufen (geprueft:
|
||||
REM die Aufgabenplanung startet start_server_hidden.vbs -> start_server.bat).
|
||||
REM Er ist also ein ABSICHTLICHES Deployment - und dort gehoert die
|
||||
REM Pruefung hin. Sie laeuft VOR dem Beenden, damit ein laufender,
|
||||
REM funktionierender Server nicht fuer kaputten Code abgeschossen wird.
|
||||
REM
|
||||
REM ⚠⚠ NICHT verwechseln mit start_server.bat: DAS ist der
|
||||
REM WIEDERANLAUF-Pfad (Reboot/Logon) und prueft bewusst NICHTS. Wuerde
|
||||
REM ein fehlschlagender Test dort den Start verhindern, staende eine
|
||||
REM offene Position ohne Trailing, Time-Stop und Notfall-Stop da - nur
|
||||
REM mit dem Broker-SL. Eine Pruefung, die den Bot offline laesst, ist
|
||||
REM schlimmer als der Fehler, den sie sucht.
|
||||
REM Fuer ein ABSICHTLICHES Deployment gibt es tools\deploy.py:
|
||||
REM das prueft VOR dem Kill und bricht bei Rot ab.
|
||||
REM Regel: absichtliches Deployment blockieren, Wiederanlauf niemals.
|
||||
REM
|
||||
REM Notausgang: restart_server.bat --ohne-pruefung
|
||||
REM ------------------------------------------------------------
|
||||
REM ⚠⚠ SPRUNGMARKEN STATT KLAMMER-BLOECKE - das ist hier kein Stilfrage.
|
||||
REM cmd wertet `errorlevel` INNERHALB eines geklammerten if/else-Blocks zur
|
||||
REM PARSE-Zeit aus, nicht zur Laufzeit. Der erste Entwurf brach deshalb auch
|
||||
REM bei SAUBEREM Code ab - der Neustart haette nie mehr funktioniert.
|
||||
REM Gefunden nur, weil die Positiv-Richtung mit getestet wurde; der
|
||||
REM Negativ-Test allein sah voellig in Ordnung aus.
|
||||
REM Ausserdem maskiert cmd runde Klammern im Block anders -> Text ohne "( )".
|
||||
if /I "%~1"=="--ohne-pruefung" goto :pruefung_aus
|
||||
echo [0] Code pruefen mit check_nfalle + pytest ...
|
||||
"%PY%" -X utf8 "%~dp0tools\pre_commit.py"
|
||||
if errorlevel 1 goto :pruefung_rot
|
||||
echo [0] Code ist sauber - weiter mit dem Neustart.
|
||||
goto :pruefung_fertig
|
||||
|
||||
:pruefung_rot
|
||||
echo.
|
||||
echo [i] Hinweis: dieser Weg fuehrt KEINE Code-Pruefung aus.
|
||||
echo Absichtliches Deployment bitte ueber: python tools\deploy.py --feld ^<feld^>
|
||||
echo [X] ABBRUCH - der laufende Server bleibt unangetastet.
|
||||
echo Beheben, oder bewusst uebergehen: restart_server.bat --ohne-pruefung
|
||||
exit /b 1
|
||||
|
||||
:pruefung_aus
|
||||
echo [0] Code-Pruefung UEBERSPRUNGEN wegen --ohne-pruefung
|
||||
|
||||
:pruefung_fertig
|
||||
echo.
|
||||
|
||||
echo Beende laufende Server (8000 + 8001) ...
|
||||
|
||||
Reference in New Issue
Block a user