gate_v1_rollout/rollout_series_report/README.md

6.1 KiB
Raw Permalink Blame History

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