Code-Pruefung ans Deployment haengen, nicht nur an den Commit

User-Frage "wird die Pipeline bei jedem Deployment ausgefuehrt?". Antwort war
NEIN:
  git commit          check_nfalle + pytest (Hook installiert)
  tools/deploy.py     prueft nur den LAUFENDEN Server, nicht den Code
  restart_server.bat  gar nichts
  Aufgabe OilTradingServer -> start_server_hidden.vbs   gar nichts

Commit und Deployment sind zwei Ereignisse und fallen beliebig auseinander:
eine geaenderte, nie committete Datei ging ueber restart_server.bat ungeprueft
live; nach einem Reboot startet die Aufgabe, was auf der Platte liegt.

"Der Server kommt hoch" ist kein Ersatz: die beiden log.-NameError in
core/trader.py sassen MONATE in except-Zweigen (einer seit dem Initial-Commit),
und der Server startete jedes Mal sauber.

deploy.py bekommt Schritt 0: check_nfalle + pytest VOR dem Kill, bei Rot
Abbruch mit Rueckgabecode 1. Die Reihenfolge ist der Punkt - ein laufender,
funktionierender Server darf fuer kaputten Code nicht abgeschossen werden.
Notausgang --ohne-pruefung.

Beide Richtungen verifiziert: mit eingebautem F821-Fehler -> ABBRUCH, Exit 1,
Server-PID vorher/nachher identisch (20892), der Prozess wurde nachweislich
nicht angefasst. Ohne Fehler laeuft es durch.

BEWUSST NICHT in restart_server.bat und die Aufgabenplanung - das sind
WIEDERANLAUF-Pfade. Wuerde ein fehlschlagender Test dort den Start verhindern,
staende eine offene Position ohne Trailing, Time-Stop und Notfall-Stop da, nur
mit dem Broker-SL. Eine Pruefung, die den Bot offline laesst, ist schlimmer als
der Fehler, den sie sucht. Der Batch gibt stattdessen einen Hinweis aus und
verweist auf deploy.py.

Regel: absichtliches Deployment blockieren, Wiederanlauf niemals.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-07 12:02:08 +02:00
co-authored by Claude Opus 5
parent 3f1f19087d
commit 0ab79f1876
3 changed files with 85 additions and 0 deletions
+36
View File
@@ -4911,6 +4911,42 @@ Modell schliesst keine Trades.
„die Rangfolge ist kaputt" ist **nicht** belegt; belegt ist nur die
Basisraten-/Kalibrierungslücke.
## ⚠⚠ DIE PRÜFUNG HING AM COMMIT, NICHT AM DEPLOYMENT — behoben 2026-08-07
User-Frage „wird die Pipeline bei jedem Deployment ausgeführt?". **Antwort war
NEIN**, und die Lücke war größer als sie aussah:
| Weg zum Deployment | Prüfung vorher |
|---|---|
| `git commit` | ✅ `check_nfalle` + `pytest` (Hook installiert) |
| `tools/deploy.py` | ⚠ prüfte nur den **laufenden Server** — nicht den Code |
| `restart_server.bat` | ❌ gar nichts |
| Aufgabe `OilTradingServer` (Logon/Reboot) → `start_server_hidden.vbs` | ❌ gar nichts |
**Commit und Deployment sind zwei Ereignisse, und sie fallen beliebig
auseinander:** eine geänderte, nie committete Datei ging über
`restart_server.bat` ungeprüft live; nach einem Reboot startet die Aufgabe, was
auf der Platte liegt.
**„Der Server kommt hoch" ist KEIN Ersatz für die Prüfung** — die beiden
`log.`-`NameError` in `core/trader.py` sassen **Monate** in `except`-Zweigen
(einer seit dem Initial-Commit), und der Server startete jedes Mal sauber.
**GEBAUT: `tools/deploy.py` bekommt Schritt 0**`check_nfalle` + `pytest`
**VOR** dem Kill; bei Rot Abbruch mit Rückgabecode 1. Die Reihenfolge ist der
Punkt: ein laufender, funktionierender Server darf für kaputten Code nicht
abgeschossen werden. Notausgang `--ohne-pruefung` (Philosophie wie
`git commit --no-verify`).
**Beide Richtungen verifiziert:** mit eingebautem `F821`-Fehler → „❌ ABBRUCH",
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.
**Regel: absichtliches Deployment blockieren, Wiederanlauf niemals.**
## ✅ LIVE↔BACKTEST-VERGLEICH IST JETZT TEIL DER PIPELINE (2026-08-07)
Konsequenz aus dem Messfehler direkt darunter: der Vergleich lief nur, wenn