- .claude/agents/planer.md - .claude/skills/plan-executer-pruefung/SKILL.md - .claude/workflows/plankritik.js - .claude/workflows/planung.js - .claude/workflows/pruefung.js - .claude/workflows/verbrauch.js - .claude/workflows/welle-mit-pruefung.js - .vault-tools/plan-kopie/LIESMICH.md - .vault-tools/plan-kopie/plan_zeichen.py - .vault-tools/plan-kopie/rot_nachweis.py - .vault-tools/trading-plattform-pruefung/LIESMICH.md - .vault-tools/trading-plattform-pruefung/abendkontrolle.py - … und 34 weitere Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
55 lines
2.5 KiB
Python
55 lines
2.5 KiB
Python
"""Fragt pruefe_register (Paket AF) gegen ein Killswitch-Register, nur lesend.
|
|
|
|
Koordinator-Werkzeug, nicht fuers Repo (2026-09-24, Befund der AF-Pruefung: das Drehbuch hatte fuer
|
|
die Registerpruefung nur eine Erwartung in Prosa). Oeffnet data/registry.db mit mode=ro -- die Klasse
|
|
Registry fuehrt beim Oeffnen das Schema aus und schriebe damit in die Datei --, baut Zustand und
|
|
Ereignisse als einfache Objekte und ruft die echte Funktion trading.paper.auto_fortsetzen.pruefe_register
|
|
des Projekts. Druckt den Befund und die juengsten Ereignisse (Stufe, Ausloeser, Zeit), nie einen Betrag.
|
|
|
|
Was es nicht sieht: Konto, Spielgeld, Uhr und Schalter -- das pruefen Sitzung und vorstart_pruefung.py.
|
|
Vor der Oeffnung am Handelstag steht der Killswitch nach dem Dashboard-Neustart auf angehalten/neustart;
|
|
davor (etwa nach Pascals Klick am Vortag) ist "steht auf aktiv" der erwartete Befund, kein Fehler.
|
|
|
|
Aufruf (WSL, im Projektordner): ~/venvs/trading/bin/python af_registerprobe.py <projektordner>
|
|
Exit 0: erfuellt, 1: nicht erfuellt, 3: Register fehlt.
|
|
"""
|
|
|
|
import sqlite3
|
|
import sys
|
|
from pathlib import Path
|
|
from types import SimpleNamespace
|
|
|
|
|
|
def main(argv=None) -> int:
|
|
argumente = sys.argv[1:] if argv is None else argv
|
|
projekt = Path(argumente[0] if argumente else ".").resolve()
|
|
db = projekt / "data" / "registry.db"
|
|
if not db.is_file():
|
|
print(f"ABBRUCH: {db} fehlt")
|
|
return 3
|
|
sys.path.insert(0, str(projekt))
|
|
from trading.paper.auto_fortsetzen import pruefe_register
|
|
|
|
verbindung = sqlite3.connect(f"file:{db}?mode=ro", uri=True)
|
|
try:
|
|
zeile = verbindung.execute("select zustand, ausloeser from killswitch_zustand").fetchone()
|
|
ereignisse = [
|
|
SimpleNamespace(id=nummer, stufe=stufe, ausloeser=ausloeser, zeit=zeit)
|
|
for nummer, stufe, ausloeser, zeit in verbindung.execute(
|
|
"select id, stufe, ausloeser, zeit from killswitch_ereignisse order by id"
|
|
)
|
|
]
|
|
finally:
|
|
verbindung.close()
|
|
gespeichert = None if zeile is None else SimpleNamespace(zustand=zeile[0], ausloeser=zeile[1])
|
|
befund = pruefe_register(gespeichert, ereignisse)
|
|
print(f"Zustand: {zeile}")
|
|
for ereignis in ereignisse[-4:]:
|
|
print(f" Nr. {ereignis.id}: {ereignis.stufe} von {ereignis.ausloeser}, {ereignis.zeit}")
|
|
print(f"pruefe_register: {'erfuellt' if befund.erfuellt else 'NICHT erfuellt'} -- {befund.grund}")
|
|
return 0 if befund.erfuellt else 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|