Files
claude-regelwerk/.vault-tools/trading-plattform-pruefung/af_registerprobe.py
T
Pascal MichelandClaude Opus 5 ea278dc24f Automatischer Push: 46 Datei(en) geändert
- .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]>
2026-09-25 04:00:02 +02:00

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())