policy_metrics_monitoring/policy_metadata/README.md

157 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Policy Monitoring und Metrik-Dokumentation
## Purpose
Dokumentation der Metriken, Schwellenwerte und Metadaten zur Überwachung eines Policy-Rollouts.
**Problemstellung:** Zur Laufzeitüberwachung von Policy-Rollouts müssen Zustände, Fehler und Unbekannte robust gezählt und dokumentiert werden, um fundierte Aktivierungsentscheidungen zu treffen.
**Ziele:**
- Definieren von Go/No-Go-Schwellenwerten für Policy-Aktivierung
- Absicherung der Fehlertoleranz in der Metrikerfassung
- Sicherstellung reproduzierbarer CI-Ausgaben über Versions-Hashes
## Kontext & Hintergrund
Aggregierte Auswertung von drift_report.json und rollout_metrics.json während des PolicyTests.
**Gruppierung:**
- pinned
- unpinned
- unknowns
**Trace-Metadaten / zusätzliche Tags:**
- policy_hash
- policy_constants.json
- drift_report.json
- rollout_metrics.json
**Domänenkontext:**
- Policy-Rollout-Überwachung
- CI-Auswertung
- Fehlerklassifikation
**Motivation:**
- Reduktion zufälliger PolicyFehler durch frühe Metrikprüfung
- Verbesserte Vergleichbarkeit und Nachvollziehbarkeit zwischen PolicyVersionen
## Methode / Spezifikation
**Übersicht:**
- Verwendung von Go/No-GoRegeln für die PolicyAktivierung nach 30 Runs oder 7 Tagen
- Aggregieren der Metriken WARN, FAIL, Unknowns und Overrides pro Stratum
- Einbindung eines policy_hash zur VersionsNachvollziehbarkeit
**Algorithmen / Verfahren:**
- Zählen von WARN und FAIL pro Stratum aus den DriftReports
- Ermittlung der UnknownRate und Ursache (Contract/Schema)
- Erfassen von Overrides pro Run mit Flag oder Defaultwert
- Einordnung fehlender Felder als UnknownKlasse unknown_field_missing
- Sortierung der Ausgabe alphabetisch nach Keys und namenbasiert in Arrays
## Input / Output
### Input-Anforderungen
**Hardware:**
**Software:**
- Python (policy_eval.py)
- CISystem mit Zugriff auf drift_report.json
**Konfiguration:**
- SchemaDefinition für DriftReports
- Konfigurierbare PolicySchwellenwerte
### Erwartete Rohdaten
**Felder pro Run:**
- run_id
- policy_state
- WARN_count
- FAIL_count
- Unknown_count
- Overrides_count
**Formatbeispiele:**
- {"run_id": "r001", "policy_state": "pinned", "WARN_count": 1, ... }
**Trace-Daten:**
- Format: JSON
- Hinweis: Fehlende Felder werden automatisch als UnknownKlasse klassifiziert.
### Analyse-Ausgaben
**Pro Gruppe / pro Governor:**
- WARN/FAILRate pro Stratum
- UnknownKlassifikation nach Ursache
- Overrides pro Run
**Vergleichsausgaben:**
- pinned vs unpinned
- Δ: Differenz der kombinierten WARN+FAILRate
- Trace-Muster: Stabilitätsprüfung über 30 Runs oder 7 Tage bezogen auf policy_hash
## Workflow / Nutzung
**Analyse-Workflow:**
- Laden der letzten DriftReports
- Erzeugen der rollout_metrics.json mit Aggregaten
- Härten der policy_eval.py gegen Feldfehler
- Sortierte JSONAusgabe für CIDiff
- Einfügen des policy_hash in CIKommentar
### Trace-Template-Anforderungen
**Ziel:** Sicherstellen, dass alle DriftReportDatensätze vollständig oder ersetzbar sind
**Erforderliche Tags & Metadaten:**
- policy_hash
- schema_version
- policy_state
**trace-cmd-Setup:**
- LogExtraktion über CIPipeline nach jedem Run
**Run-Design für Contributors:**
- Mindestens 30 Runs, gemischte PolicyStrata (pinned/unpinned)
## Interpretation & erwartete Ergebnisse
**Kernbefunde:**
- System verhält sich stabil trotz unvollständiger Felder.
- Difffreundliche Ausgaben reduzieren CIRauschen signifikant.
- Go/NoGoRegel operationalisiert PolicyFreigaben mit klaren numerischen Grenzen.
**Implikationen für Experimente:**
- Frühzeitige Aktivierung des WARNGates möglich, wenn Schwellen vor Tag 7 erfüllt sind.
**Planungsziel:**
- Ziel: Stabile PolicyÜberwachung ohne Betriebsabbrüche
- Vorgehen:
- Schwellenwerte definieren
- Metriken automatisiert zählen
- Fehler tolerant klassifizieren
## Limitationen & Fallstricke
**Datenbezogene Limitationen:**
- Fehlende Felder können semantische Lücken verdecken, wenn UnknownKlassifikation zu grob bleibt.
**Kausalität & Generalisierbarkeit:**
- Metrikschwellen basieren nur auf beobachteten Runs und sind nicht kausal verallgemeinerbar.
**Praktische Fallstricke:**
- Manuelle Overrides können unbemerkt den Go/NoGoStatus verzerren.
## Nächste Schritte & Erweiterungen
**Geplante Experimente:**
- SchemaCheck mit Defaultwerten vor PolicyEvaluation
**Analyseziele:**
- Vereinheitlichung der UnknownLabels
- Automatische Erkennung fehlerhafter Reports
**Community-Beiträge:**
- Definition eines offenen Schemas für rollout_metrics.json