diff --git a/README.md b/README.md new file mode 100644 index 0000000..a80506a --- /dev/null +++ b/README.md @@ -0,0 +1,99 @@ +# CI Policy Evaluation + +## Überblick +Das Experiment **ci_policy_evaluation** befasst sich mit der Entwicklung und Evaluierung einer CI-Policy zur Verarbeitung von Warnungen und Entscheidungen innerhalb eines Continuous-Integration-Workflows. Es beinhaltet ein Python-Analysetool, das Entscheidungslogiken auf Backtest-CSV-Daten anwendet, sowie Mechanismen zur Berichterstattung der Ergebnisse. + +**Link zum Artikel:** [CI Policy – Tag 132–1716 – Festgenagelt: WARN ist jetzt eine Regel, kein Bauchgefühl](https://donau2space.de/tag-132-1716-ci-policy-v0-1-festgenagelt-warn-ist-jetzt-eine-regel-kein-bauchgefuehl/) + +**Git Repository:** [https://git.donau2space.de/Mika/ci_policy_evaluation](https://git.donau2space.de/Mika/ci_policy_evaluation) + +### Hinweis +Alle Inhalte wurden per KI generiert. + +Nutzung, Anpassung und Weiterentwicklung erfolgen eigenverantwortlich auf eigenes Risiko. Es wird keine Korrektheit, Sicherheit, Funktionsfähigkeit oder rechtliche Eignung zugesichert. + +--- + +## Inhalt des Repositories + +### 1. policy_definition +- **Art:** doc_only +- **Ziel:** mixed +- **Sprache:** YAML +- **Beschreibung:** Definition der CI-Policy als maschinenlesbare YAML-Datei. Sie legt die Entscheidungskriterien für die Status PASS, WARN und FAIL fest. +- **Datenstruktur:** `CIPolicy` (JSON) + - Felder: `status`, `rules` + +### 2. python_analysis_script +- **Art:** python_script +- **Ziel:** Linux-Userspace +- **Sprache:** Python +- **Beschreibung:** Python-Skript zur Analyse von Backtest-CSV-Daten. Es wendet die CI-Policy an und bestimmt Entscheidungsergebnisse. +- **API-Funktion:** + - `analyze_backtest(csv_file)` → Gibt die Analyse- und Entscheidungsergebnisse (`decision_results`) zurück. +- **Datenstruktur:** `DecisionResult` + - Felder: `timestamp`, `decision`, `margin`, `flaky_flag`, `subset_flip_count`, `mischfenster_p95` + +### 3. ci_report_hook +- **Art:** python_script +- **Ziel:** Linux-Userspace +- **Sprache:** Python +- **Beschreibung:** Minimaler CI-Report-Hook. Zeichnet Daten zu Entscheidungen und Metriken pro CI-Lauf auf. +- **API-Funktion:** + - `record_ci_run(run_id, decision, margin, flaky_flag, subset_flip_count, mischfenster_p95)` → Speichert die CI-Run-Daten. +- **Datenstruktur:** `CIReport` + - Felder: `timestamp`, `run_id`, `decision`, `margin`, `flaky_flag`, `subset_flip_count`, `mischfenster_p95` + +--- + +## Installation & Nutzung + +### Voraussetzungen +- Python ≥ 3.9 +- Linux-System mit Zugriff auf Shell und Python-Umgebung + +### Installation +1. Repository klonen: + ```bash + git clone https://git.donau2space.de/Mika/ci_policy_evaluation + cd ci_policy_evaluation + ``` +2. Virtuelle Umgebung anlegen und Abhängigkeiten installieren: + ```bash + python -m venv venv + source venv/bin/activate + pip install -r requirements.txt + ``` + +### Nutzung +- **Analyse starten:** + ```bash + python python_analysis_script.py --input backtest_data.csv + ``` +- **CI-Report-Hook ausführen:** + ```bash + python ci_report_hook.py --run-id RUN1234 --decision WARN --margin 0.12 + ``` + +--- + +## Typische Use-Cases +- Evaluation von CI-Entscheidungsrichtlinien in Entwicklungsumgebungen +- Statistische Analyse von Warnungen und Fehlermustern +- Automatisierte Dokumentation von CI-Laufdaten +- Berichterstellung auf Basis von Backtest-Auswertungen + +--- + +## Struktur & mögliche Erweiterungen +- Erweiterung der Policy-Definition zur Einbindung weiterer Metriken +- Integration eines Web-basierten Dashboards zur Visualisierung der CI-Entscheidungen +- Ergänzung einer CLI-Schnittstelle zur automatisierten Batchanalyse +- Aufnahme von historischen Vergleichsdaten zur Policy-Optimierung + +--- + +## Lizenz +Projektlizenz: **MIT License** + +Alle Inhalte wurden maschinell mit KI-Unterstützung erstellt. Nutzung, Veränderung und Weiterentwicklung erfolgen auf eigene Verantwortung und Gefahr. Der Autor übernimmt keine Haftung für Korrektheit oder Eignung zu einem bestimmten Zweck. \ No newline at end of file