- Shutdown-Event sendet stopped_graceful statt stopping: der Server
kennt "stopping" im Router, aber event_log.kind ist ein ENUM ohne
diesen Wert. Folge war HTTP 500 nach dem Zustandswechsel, das Event
fehlte in der Historie.
- Default-Source auf "Predictalytics" korrigiert (Schreibweise des
bereits angelegten Monitors auf dem Server).
Heartbeat, Metrics-Payload, Lizenzvalidierung und der Startpfad ueber
den Cache sind end-to-end gegen die Produktivserver getestet.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Bindet die beiden neuen Betriebsprojekte an:
- WatchdogHeartbeatService: periodischer POST /api/heartbeat an
watchdog.mhdf.de (Dead-Man's-Switch), stopping-Event beim Beenden,
Konfiguration ueber AppSettings-Kategorie "Watchdog". Fehler sind
best effort und beeintraechtigen die App nie.
- LicenseGuard + LicenseDialog: Lizenzpruefung vor dem Start der
MainForm, 12h-Revalidierung zur Laufzeit, Checksum-Haertung.
Produkt-Slug/Endpoint/Public-Key sind einkompiliert.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>