diff --git a/CLAUDE.md b/CLAUDE.md index 2cc6367..83c10bc 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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 diff --git a/restart_server.bat b/restart_server.bat index d25bccb..608a35a 100644 --- a/restart_server.bat +++ b/restart_server.bat @@ -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 ^ +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) ... diff --git a/start_server.bat) b/start_server.bat) new file mode 100644 index 0000000..e69de29