Skip to content

fix(dashboard): #36 Eval-Dashboard Follow-ups (Live-Pfad-UX + foss-Trennung)#59

Merged
TillQuandel merged 4 commits into
masterfrom
fix/36-dashboard-followups
Jun 25, 2026
Merged

fix(dashboard): #36 Eval-Dashboard Follow-ups (Live-Pfad-UX + foss-Trennung)#59
TillQuandel merged 4 commits into
masterfrom
fix/36-dashboard-followups

Conversation

@TillQuandel

Copy link
Copy Markdown
Owner

Eval-Dashboard-Follow-ups (#36) — umgesetzt im Live-Render-Pfad internal/dashboard/eval_dashboard.html (SPA via /data.json = build_data) + eval_dashboard_server.py.

Zentraler Befund: Live- vs. Legacy-Pfad

eval_dashboard.py:_build_html (main()) ist ein deprecateter Standalone-Pfad und wird vom Server nicht ausgeliefert. Frühere Issue-Notizen lokalisierten Render-Stellen dort — die Live-SPA ist aber internal/dashboard/eval_dashboard.html. #36 Punkt 1 (Median-Linie) war im Live-Pfad bereits durch PR #38 erledigt — der vermutete Regressionsverdacht war ein Blick auf den falschen Pfad.

Commit 1 (aff21f2) — P1/P2/P4

Commit 2 (4d9a402) — A–F (Firefox-Augenschein)

  • A Versions-Dropdown: neueste oben, foss-frei.
  • B Eval-Version-Filter komplett entfernt (UI + URL-State + Sidebar-Pill); Server-Default = neueste.
  • C Sparkline-X-Achse: nur erste+letzte Version (statt ~50 überlappende Labels).
  • D foss/generative-Trennung (is_foss_version, TDD): im ungefilterten Default-View foss aus all_log_runs + quality_rows + token_runs raus; über Modell-/Versions-Filter weiter sichtbar.
  • E Sparkline-Y-Achse bei %-Metriken auf 100 gedeckelt.
  • F Token/Duration-Charts pro Pipeline-Version aggregiert (_chart_tokens_by_version, TDD) statt chronologisch pro Run.

Qualität

  • TDD rot→grün, 16 Tests in test_dashboard_followups.py; kanonische Suite 4613 passed.
  • Cross-Model-Review Codex + Qwen: 0 HIGH/MED nach Fixes. Codex-MED gefixt (eval_version-URL-State, token_runs-foss-Ausschluss, foss--Präfix); Qwen-LOW gefixt (versions[n-1]-Guard, duration_min is not None).
  • Bekannter LOW (nicht behoben, vorbestehend): cost-Delta-Anzeige toFixed(1) zu grob — cost-KPI bei Subscription i.d.R. leer.

TillQuandel and others added 4 commits June 19, 2026 17:27
…y-Dimmen

Live-Pfad ist internal/dashboard/eval_dashboard.html (SPA via /data.json),
NICHT der deprecatete Legacy-Pfad eval_dashboard.py:_build_html.

P4 — KPI-Delta neueste-vs-Vorversion mit N-Guard (statt neueste-vs-erste):
- version_delta(kpi_trend, metric) pure Funktion (TDD), reliable nur wenn
  beide Versionen n>=20 (Apophenie-Schutz)
- Server: kpi_trend["deltas"] pro KPI; Template-JS nutzt es, ohne reliable
  kein Besser/Schlechter-Farbcode (neutral + "(n<20)")

P2 — Scaling-Chart (ch3) dimmt alte Versions-Aeren:
- mark_scaling_recency(points, keep=10) pure Funktion (TDD), recent-Flag
- _chart_scaling haengt es an; ch3-JS dimmt recent===false (fail-open)

P1 (#36 Punkt 1, Median-Linie) war im Live-Pfad bereits durch PR #38 erledigt
— der frueher vermutete Regressionsverdacht war ein Blick auf den Legacy-Pfad.

Codex-Review: 0 HIGH/MED, 1 LOW (cost-Delta-Anzeige toFixed(1), vorbestehend).
Suite 4608 passed. Server-/data.json-End-to-End + JS-Syntax verifiziert.
Bekannter offener Punkt: visuelle Firefox-Augenschein-Pruefung.
…l, Token-pro-Version

Sechs aus dem Firefox-Augenschein gemeldete Punkte im Live-Render-Pfad
internal/dashboard/eval_dashboard.html + build_data:

A) Versions-Dropdown: neueste Version oben (reverse), foss-frei.
B) Eval-Version-Filter komplett entfernt (UI + URL-State + Sidebar-Pill);
   Server nutzt default = neueste eval_version.
C) KPI-Sparkline-X-Achse: nur erste+letzte Version statt ~50 ueberlappende Labels.
D) foss/generative-Trennung: is_foss_version() (TDD); im ungefilterten Default-View
   foss aus all_log_runs + quality_rows + token_runs ausgeschlossen, Dropdown
   immer foss-frei. Ueber Modell-/Versions-Filter bleibt foss sichtbar.
E) Sparkline-Y-Achse bei %-Metriken auf 100 gedeckelt (keine 120%-Achse mehr).
F) Token/Duration-Charts pro Pipeline-Version aggregiert (Summe/Median) statt
   chronologisch pro Run — _chart_tokens_by_version (TDD), foss-frei.

Cross-Model-Review (Codex + Qwen): 0 HIGH/MED nach Fixes. Codex MED gefixt
(eval_version-URL-State, token_runs-foss-Ausschluss, foss--Praefix); Qwen LOW
gefixt (versions[n-1]-Guard, duration_min is not None). Suite 4613 passed,
+5 Tests (16 in test_dashboard_followups.py).
…l-Delta neutral

Codex-Cross-Review auf #59:
- ins-cost-Insight zeigte "N Runs ... Median-Laufzeit pro Run", aber d.tokens ist
  seit _chart_tokens_by_version pro VERSION aggregiert → Label auf Versionen/pro
  Version korrigiert (Z1751-58). Sonst still falsche Stat-Karte.
- Null-Delta (0.0) bekam pos/neg-Farbklasse → jetzt neutral (Z1138).
Reine Client-JS (kein JS-Test-Harness im Repo) — durch Code-Lesung verifiziert.

Offen (braucht Konventions-Input): is_foss_version matcht nur "foss-", Server-Z73
nutzt "extractive-" → foss-Trennung evtl. wirkungslos; + foss-Drop im Token-Chart
bei explizitem Filter. Beide an die Prefix-Konvention gekoppelt, separat zu klaeren.
…Trennung war No-op

Cross-Model-Review (Codex) HIGH: die nicht-generative Pipeline taggt Runs mit
"extractive-" (extractive/orchestrator.py: EXTRACTIVE_VERSION="extractive-v0.2.0"),
aber is_foss_version prüfte nur "foss-" (taggt nirgends real) → die ganze #36-foss-
Trennung filterte NICHTS (No-op). Fix: startswith(("extractive-","foss-")). +Test.
@TillQuandel TillQuandel merged commit 9133b23 into master Jun 25, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants