Add policy_definition/README.md
This commit is contained in:
parent
8b20544d76
commit
49a5b05a87
1 changed files with 165 additions and 0 deletions
165
policy_definition/README.md
Normal file
165
policy_definition/README.md
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
# CI-Policy v0.1 – Definition und Evaluierung für PASS/WARN/FAIL Entscheidungen
|
||||
|
||||
## Purpose
|
||||
|
||||
Formale Definition einer Continuous-Integration-Policy, die Gate-Entscheidungen aus Debug-Daten automatisiert und nachvollziehbar trifft.
|
||||
|
||||
**Problemstellung:** Bisherige Entscheidungslogik in CI-Gates war inkonsistent und interpretierbar. Ziel ist eine deterministische, testbare Policy, die WARN- und FAIL-Bereiche formal abgrenzt.
|
||||
|
||||
**Ziele:**
|
||||
- Reduktion subjektiver Entscheidungen in CI-Ergebnissen
|
||||
- Standardisierung der Kategorien PASS, WARN und FAIL
|
||||
- Einführung maschinenlesbarer Regeldefinition für Gate-Entscheidungen
|
||||
|
||||
## Kontext & Hintergrund
|
||||
|
||||
Backtest-CSV-Daten (#20–#29) mit Debug-JSON-Ausgaben je Run
|
||||
|
||||
**Gruppierung:**
|
||||
- pinned
|
||||
- unpinned
|
||||
|
||||
**Trace-Metadaten / zusätzliche Tags:**
|
||||
- margin
|
||||
- decision
|
||||
- flaky_flag
|
||||
- subset_flipcount
|
||||
- mischfenster_p95
|
||||
|
||||
**Domänenkontext:**
|
||||
- Continuous Integration
|
||||
- Automatisiertes Testen
|
||||
- Qualitätssicherung von CI-Gates
|
||||
|
||||
**Motivation:**
|
||||
- Formalisierung bisher intuitiver Gate-Entscheidungen
|
||||
- Stabilisierung der Bewertung von knappen Testergebnissen (Margin-Zone)
|
||||
- Reduzierung von Flip-Flops zwischen Runs durch konsistente Regeln
|
||||
|
||||
## Methode / Spezifikation
|
||||
|
||||
**Übersicht:**
|
||||
- Die Policy nutzt Metriken aus Debug-JSON zur Festlegung deterministischer Entscheidungen in CI-Läufen.
|
||||
- Regeln sind in YAML definiert, maschinenlesbar und unit-testbar.
|
||||
|
||||
**Algorithmen / Verfahren:**
|
||||
- PASS → allow
|
||||
- WARN → allow + label + Auto-Rerun
|
||||
- FAIL → block
|
||||
- WARN wird getriggert, wenn Margin-Zone oder flaky_flag zutrifft
|
||||
|
||||
### Bootstrap-Übersicht
|
||||
|
||||
Nicht anwendbar – deterministische Regelbewertung, kein Resampling.
|
||||
|
||||
**Zielgrößen:**
|
||||
## Input / Output
|
||||
|
||||
### Input-Anforderungen
|
||||
|
||||
**Hardware:**
|
||||
**Software:**
|
||||
- Python >=3.8
|
||||
- YAML Parser
|
||||
- CI-System (z. B. GitHub Actions, Jenkins)
|
||||
|
||||
**Konfiguration:**
|
||||
- Integration der YAML-Policy in CI-Pipeline als Validierungsstufe
|
||||
|
||||
### Erwartete Rohdaten
|
||||
|
||||
**Felder pro Run:**
|
||||
- timestamp
|
||||
- run_id
|
||||
- decision
|
||||
- margin
|
||||
- flaky_flag
|
||||
- subset_flipcount
|
||||
- mischfenster_p95
|
||||
|
||||
**Formatbeispiele:**
|
||||
- 2024-02-10T08:33:20Z, run_020, WARN, 0.04, true, 1, 0.87
|
||||
|
||||
**Trace-Daten:**
|
||||
- Format: JSON
|
||||
- Hinweis: Debug-JSON pro Run liefert Basisdaten für Policy-Entscheidung
|
||||
|
||||
### Analyse-Ausgaben
|
||||
|
||||
**Pro Gruppe / pro Governor:**
|
||||
**Vergleichsausgaben:**
|
||||
|
||||
- Trace-Muster: Analyse von WARN-Raten im Zeitverlauf als Indikator für Policy-Drift
|
||||
|
||||
## Workflow / Nutzung
|
||||
|
||||
**Analyse-Workflow:**
|
||||
- Debug-JSONs aus CI-Runs sammeln.
|
||||
- Policy auf Debug-JSON anwenden, Entscheidung ableiten.
|
||||
- Per Run eine Zeile als Report-Artefakt schreiben.
|
||||
- Mittlere WARN-Rate überwachen, Threshold-basierte Alarme setzen (z. B. >30% über 20 Runs).
|
||||
|
||||
### Trace-Template-Anforderungen
|
||||
|
||||
**Ziel:** Einheitliche Auswertungskriterien für alle CI-Runs.
|
||||
|
||||
**Erforderliche Tags & Metadaten:**
|
||||
- margin
|
||||
- flaky_flag
|
||||
- decision
|
||||
|
||||
**trace-cmd-Setup:**
|
||||
- Policy automatisch im Post-Test-Step ausführen
|
||||
- Ergebnis als CSV-Zeile im Artefaktordner speichern
|
||||
|
||||
**Run-Design für Contributors:**
|
||||
- Jeder Commit löst einen CI-Run aus
|
||||
- Policy bewertet Run-Ergebnisse deterministisch
|
||||
- WARN-Runs werden automatisch rerunnt
|
||||
|
||||
## Interpretation & erwartete Ergebnisse
|
||||
|
||||
**Kernbefunde:**
|
||||
- pinned-Runs bleiben stabil im PASS/WARN-Bereich
|
||||
- unpinned-Runs tragen Hauptanteil der WARN-Entscheidungen
|
||||
- keine Fehlklassifikation durch Margin-Anpassung
|
||||
- kritische Flip-Flops werden formal eliminiert
|
||||
|
||||
**Implikationen für Experimente:**
|
||||
- Policy-Design verbessert Konsistenz und Nachvollziehbarkeit von Gate-Entscheidungen
|
||||
- Automatische Reruns reduzieren unnötige FAIL-Blöcke
|
||||
- Drift-Monitoring erlaubt langfristige Quantifizierung der Policy-Stabilität
|
||||
|
||||
**Planungsziel:**
|
||||
- Ziel: Evaluiere Stabilität und Drift der Policy durch fortlaufende CI-Metrikerfassung.
|
||||
- Vorgehen:
|
||||
- Messung der WARN-Rate über sequenzielle Runs
|
||||
- Schwellwert-Alarmierung bei Policy-Drift
|
||||
|
||||
## Limitationen & Fallstricke
|
||||
|
||||
**Datenbezogene Limitationen:**
|
||||
- Backtest-Datensatz ist statisch; neue Laufdaten können abweichende WARN-Verteilungen zeigen
|
||||
|
||||
**Kausalität & Generalisierbarkeit:**
|
||||
- Policy-Validität hängt von Stabilität der zugrundeliegenden Metriken ab
|
||||
|
||||
**Praktische Fallstricke:**
|
||||
- Zu enge Margins können unnötige WARNs erzeugen
|
||||
- Fehlerhafte flaky_flag-Erkennung beeinflusst Ergebnisqualität
|
||||
|
||||
## Nächste Schritte & Erweiterungen
|
||||
|
||||
**Geplante Experimente:**
|
||||
- Implementierung eines Policy-Drift-Monitors zur Überwachung von WARN-Raten
|
||||
|
||||
**Analyseziele:**
|
||||
- Langzeitstatistik von PASS/WARN/FAIL
|
||||
- Analyse saisonaler Schwankungen in flaky_flag-Raten
|
||||
|
||||
**Regression & Modellierung:**
|
||||
- Evaluierung einer adaptiven Margin-Zone basierend auf historischen Stable-Runs
|
||||
|
||||
**Community-Beiträge:**
|
||||
- Open-Source-Veröffentlichung der YAML-Policy und CI-Runner-Integration
|
||||
- Feedback-Sammlung zu WARN-Interpretation (soft fail vs. block with rerun)
|
||||
Loading…
Reference in a new issue