Skip to content

[Workflow-Audit] End-to-End Test line-basic - Probleme und Optimierungsideen #180

@MarkusNeusinger

Description

@MarkusNeusinger

Zusammenfassung

End-to-End Test des Plot-Generation-Workflows mit line-basic (Issue #162).

Ergebnis: 8/9 Code-Generierungen erfolgreich, aber gesamte Pipeline blockiert durch Infrastruktur-Problem.


Gefundene Probleme

🔴 Problem 1: Fehlendes Label library:letsplot (KRITISCH)

Symptom: gen-new-plot.yml schlägt fehl beim Erstellen des letsplot Sub-Issues

Fehler:

could not add label: 'library:letsplot' not found

Auswirkung:

  • Workflow bricht ab, obwohl 8/9 Sub-Issues erfolgreich erstellt wurden
  • Library-Generierungen wurden nicht getriggert
  • Manueller Eingriff erforderlich

Manueller Fix durchgeführt:

gh label create "library:letsplot" --color "4A90D9" --description "Implementation for lets-plot library"
gh issue create --title "[line-basic] letsplot implementation" --label "library:letsplot,plot-request:impl,generating" ...
gh workflow run gen-new-plot.yml -f spec_id="line-basic" ...

Empfehlung:

  1. Label library:letsplot zu .github/scripts/setup-labels.sh hinzufügen
  2. Workflow robuster machen: Fehler bei einzelner Library sollte nicht gesamten Workflow abbrechen

🔴 Problem 2: lets-plot unterstützt Python 3.14 nicht (KRITISCH)

Symptom: gen-library-impl.yml für letsplot schlägt fehl bei Dependency-Installation

Fehler:

× No solution found when resolving dependencies:
╰─▶ Because all versions of lets-plot have no wheels with a matching Python
    ABI tag (e.g., `cp314`) and you require lets-plot, we can conclude that
    your requirements are unsatisfiable.

hint: You require CPython 3.14, but lets-plot only has wheels for: cp39, cp310, cp311, cp312, cp313

Auswirkung:

  • letsplot-Implementierungen können nicht generiert werden
  • Führt zu Problem 3 (siehe unten)

Empfehlung:

  1. Für letsplot Python 3.13 als primäre Version verwenden
  2. Oder letsplot temporär aus der Pipeline ausschließen bis Python 3.14 Support verfügbar

🔴 Problem 3: Test-Workflow blockiert durch lets-plot (BLOCKER!)

Symptom: ci-plottest.yml schlägt für ALLE Libraries fehl (nicht nur letsplot)

Fehler:

error: Distribution `lets-plot==4.8.1` can't be installed because it doesn't have a 
source distribution or wheel for the current platform

hint: You're using CPython 3.14, but lets-plot only has wheels for cp313

Root Cause:
Der Test-Workflow verwendet uv sync --all-extras, was ALLE optionalen Dependencies installiert, inklusive lets-plot. Da lets-plot Python 3.14 nicht unterstützt, scheitert die GESAMTE Installation.

Auswirkung:

  • ALLE 8 Plot-Tests fehlgeschlagen (pygal, altair, plotnine, seaborn, highcharts, bokeh, matplotlib, plotly)
  • Pipeline komplett blockiert
  • Keine Preview-Generierung möglich
  • Keine AI-Review möglich
  • Keine Auto-Merge möglich

Empfehlung:

  1. Kurzfristig: lets-plot aus pyproject.toml [project.optional-dependencies].plotting entfernen
  2. Mittelfristig: Separate dependency group für letsplot erstellen: plotting-letsplot
  3. Langfristig: Dependency-Resolution pro Library isolieren

Workflow-Optimierungsideen

1. Fehlertoleranz verbessern

Problem: Ein einzelner Fehler (fehlendes Label) bricht gesamten Workflow ab

Lösung:

  • continue-on-error: true für nicht-kritische Schritte
  • Erfolgreiche Libraries sollten weiterlaufen, auch wenn andere fehlschlagen

2. Library-spezifische Dependencies

Problem: uv sync --all-extras installiert ALLE Libraries, obwohl nur eine getestet wird

Lösung:

  • Separate dependency groups pro Library
  • uv sync --extra plotting-matplotlib statt --all-extras
  • Oder library-spezifische requirements.txt Dateien

3. Python-Version pro Library

Problem: Einige Libraries unterstützen Python 3.14 noch nicht

Lösung:

  • Library-Matrix mit Python-Version-Kompatibilität
  • Fallback zu Python 3.13 für inkompatible Libraries
  • Automatische Erkennung der höchsten unterstützten Python-Version

4. Label-Validierung

Problem: Fehlende Labels werden erst zur Laufzeit erkannt

Lösung:

  • Pre-Flight Check vor Workflow-Start
  • Automatisches Erstellen fehlender Labels
  • Label-Sync-Workflow bei Repository-Setup

Manuelle Eingriffe während Test

Zeit Eingriff Grund Automatisierbar?
22:40 Label library:letsplot erstellt Fehlte im Repository Ja - setup-labels.sh
22:40 Sub-Issue #171 manuell erstellt Workflow abgebrochen Ja - bessere Fehlerbehandlung
22:40 gen-new-plot.yml manuell re-triggered Generierung nicht gestartet Ja - automatische Retry

Status der line-basic Implementierungen

Library Generierung PR Tests Preview AI-Review
matplotlib #178 ❌ blocked
seaborn #175 ❌ blocked
plotly #179 ❌ blocked
bokeh #177 ❌ blocked
altair #173 ❌ blocked
plotnine #174 ❌ blocked
pygal #172 ❌ blocked
highcharts #176 ❌ blocked
letsplot ❌ Python 3.14 - - - -

Nächste Schritte

  1. lets-plot aus [project.optional-dependencies].plotting entfernen (temporär)
  2. Tests erneut triggern
  3. Label library:letsplot zu setup-labels.sh hinzufügen
  4. Workflow-Fehlerbehandlung verbessern
  5. Library-spezifische Dependencies implementieren

Parent Issue: #162
Sub-Issues: #163-#171
PRs: #172-#179

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationinfrastructureWorkflow, backend, or frontend issue

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions