Add rollout_series_report/README.md

This commit is contained in:
Mika 2026-02-20 11:16:32 +00:00
parent 86c1b0fafa
commit b24ce1cddc

View file

@ -0,0 +1,187 @@
# Rollout-Serie und Stabilitätsanalyse für GateV1
## Purpose
Erstellung einer reproduzierbaren Rollout-Analyse aus CI-Artefakten zur Stabilisierung und Vorbereitung des GateV1Systems auf produktive Nutzung.
**Problemstellung:** GateV1 generiert CIFeedback, aber ohne belastbare Zeitreihen oder Kontrollwerte. Der Rollout erfordert quantifizierbare Stabilität, nicht nur Funktionsfähigkeit.
**Ziele:**
- Aggregierte Metriken über CIRuns erfassen
- UnknownRaten analysieren und klassifizieren
- Deterministische CSVBasis für RolloutEntscheidungen erzeugen
- WhitelistMechanismus für UnknownKlassen implementieren
## Kontext & Hintergrund
Sammlung von CIArtefakten im JSONFormat (gate_result.json) pro Run.
**Gruppierung:**
- policy_hash
- outcome
- unknown_rate
- top_reasons
**Trace-Metadaten / zusätzliche Tags:**
- policy_hash zur Versionsidentifikation
- unknown_rate als Qualitätskennzahl pro Run
**Domänenkontext:**
- CI/CDSystemintegration
- GatingMechanismen für SoftwareDeployments
**Outlier-Definition:**
- Methode: Identifikation wiederkehrender UnknownKlassen
- Beschreibung: Spitzenwerte (Spikes) in UnknownRaten werden nach TopReason gruppiert und korreliert mit FailSignalen überprüft.
- Metrik: unknown_rate
**Motivation:**
- Übergang von subjektivem CIMonitoring zu messbarer RolloutKontrolle
- Reduktion von FalsePositives durch UnknownKlassifikation
- Erhöhung der PolicyStabilität durch deterministische Aggregation
## Methode / Spezifikation
**Übersicht:**
- Script rollup_rollout.py verarbeitet gate_result.jsonDateien zu rollout_series.csv.
- Jeder Datensatz repräsentiert einen CIRun mit PolicyVersion und Ergebnissen.
- UnknownKlassen werden durch zusätzlichen WhitelistMechanismus getrennt beobachtet.
**Algorithmen / Verfahren:**
- Einlesen aller gate_result.json aus definiertem ArtefaktVerzeichnis
- Extraktion der Felder policy_hash, outcome, unknown_rate, top_reasons
- Deterministisches Aggregieren zu rollout_series.csv
- Optionales Mapping von Unknowns gegen unknown_whitelist.json
### Bootstrap-Übersicht
Kein numerisches Resampling; Serie dient als deterministische Beobachtung über Läufe.
**Zielgrößen:**
- unknown_rate_min
- unknown_rate_median
- unknown_rate_max
- Häufigkeiten von UnknownKlassen
### Abgeleitete Effektgrößen
**Risk Difference (Differenz der Raten):**
- Definition: Vergleich der UnknownRaten zwischen Whitelist und NonWhitelistKlassen.
- Bootstrap: Keine BootstrapAnwendung; feste Häufigkeitszählung.
**Risk Ratio:**
- Definition: Optionaler Indikator bei Übergang zu WARNPhase zur Beobachtung von SignalvsUnknownVerhalten.
- Bootstrap: Nicht implementiert.
## Input / Output
### Input-Anforderungen
**Hardware:**
**Software:**
- Python ≥ 3.9
- JSONfähiges Dateisystem
- Zugriff auf CIArtefakte
**Konfiguration:**
- Path zur Sammlung der gate_result.jsonDateien
- optional: unknown_whitelist.json im RootVerzeichnis
### Erwartete Rohdaten
**Felder pro Run:**
- policy_hash
- outcome
- unknown_rate
- top_reasons
**Formatbeispiele:**
- { "policy_hash": "a6f53e", "outcome": "COMMENT", "unknown_rate": 0.08, "top_reasons": ["flaky_test"] }
**Trace-Daten:**
- Format: CSV-Ausgabe rollout_series.csv
- Hinweis: Alle Einträge deterministisch sortiert nach RunID oder Timestamp
### Analyse-Ausgaben
**Pro Gruppe / pro Governor:**
- unknown_rate_min
- unknown_rate_median
- unknown_rate_max
- class_frequency_table
**Vergleichsausgaben:**
- Trace-Muster: Identifikation wiederkehrender UnknownMuster je policy_hash
## Workflow / Nutzung
**Analyse-Workflow:**
- CIRuns durchführen und gate_result.json erzeugen
- Script rollup_rollout.py ausführen
- Output in rollout_series.csv prüfen
- Optional: unknown_whitelist.json ergänzen und erneut aggregieren
- Statistische Metriken (min/median/max) in rollout_series_v1.md dokumentieren
### Trace-Template-Anforderungen
**Ziel:** Einheitliche Sammlung von GateErgebnissen über viele Runs zur Aufdeckung systematischer Muster.
**Erforderliche Tags & Metadaten:**
- policy_hash
- unknown_rate
- top_reasons
**trace-cmd-Setup:**
- CI muss Artefakte mit gate_result.json generieren
- rollup_rollout.py benötigt Pfadvariable CI_ARTIFACT_PATH
**Run-Design für Contributors:**
- Mindestens 40 Runs zur Ableitung stabiler Schwellenwerte sammeln
## Interpretation & erwartete Ergebnisse
**Kernbefunde:**
- UnknownSpitzen korrelieren überwiegend mit wiederkehrenden spezifischen TopReasons.
- Echte FAILSignale treten unabhängig von diesen UnknownMustern auf.
- UnknownKlasse kann strukturiert reduziert werden.
**Implikationen für Experimente:**
- WhitelistDefinition dient als Instrument zur kontrollierten Reduktion von PseudoAnomalien.
- GateKommentare werden kompakter und klarer, was Akzeptanz im CIProzess erhöht.
**Planungsziel:**
- Ziel: Beginn der WARNPhase mit definierten Schwellen für UnknownRate und OutcomeMapping.
- Vorgehen:
- RolloutSerie bis N≈40 erweitern
- Medianbasierten Threshold bestimmen
- FalsePositiveRate vor PhaseWechsel bewerten
## Limitationen & Fallstricke
**Datenbezogene Limitationen:**
- Ungleichmäßige RunVerteilung kann Median verzerren
- Fehlende oder fehlerhafte JSONFelder führen zu unvollständiger CSV
**Kausalität & Generalisierbarkeit:**
- Korrelation zwischen UnknownRate und FailSignalen ist nicht notwendigerweise kausal
**Praktische Fallstricke:**
- WhitelistPflege erfordert Disziplin und regelmäßige Revision
- Fehlende Konsistenz in policy_hashVersionierung erschwert Langzeitvergleiche
## Nächste Schritte & Erweiterungen
**Geplante Experimente:**
- RolloutSerie mit ≥40 Runs erweitern
- ThresholdTuning für WARNSchwelle testen
**Analyseziele:**
- Quantitative Bestimmung der FalsePositiveReduktion
- Messung der UnknownRatenstabilität über PolicyVersionen hinweg
**Regression & Modellierung:**
- Optionale Risikomodellierung Unknown_vs_FailRatio
**Community-Beiträge:**
- Struktur und CSVFormat für andere GateRollouts freigeben