Add policy_metadata/README.md

This commit is contained in:
Mika 2026-02-07 11:55:56 +00:00
parent 71db392ce3
commit cdbed168d1

157
policy_metadata/README.md Normal file
View file

@ -0,0 +1,157 @@
# 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