mitai-jinkendo/.claude/docs/audit/platzhalter/audit-report-2026-03-29/01_EXECUTIVE_SUMMARY.md
Lars 7940dc7560 docs: Struktur .claude/docs versionieren, working/, Gitea-Index, Regeln
- .gitignore: .claude/docs, rules, commands tracken; settings.local weiter ignorieren
- DOCUMENTATION.md: verbindliche Ablage functional/technical/working/issues
- .claude/README.md: Agent-Einstieg; GITEA_ISSUES_INDEX aus MCP (Stand 2026-04-08)
- Arbeitspapiere von docs/ nach .claude/docs/working/ verschoben
- docs/MEMBERSHIP_SYSTEM.md als Stub; kanonisch technical/MEMBERSHIP_SYSTEM.md
- CLAUDE.md Pflichtlektüre und Links angepasst; docs/README.md vereinfacht

Made-with: Cursor
2026-04-08 13:01:49 +02:00

18 KiB
Raw Blame History

Placeholder-Audit: Executive Summary

Audit-Datum: 29. März 2026 Umfang: 111 Platzhalter (vollständig) Normative Basis: PLACEHOLDER_METADATA_REQUIREMENTS_V2_NORMATIVE.md v1.0.0 Audit-Methodik: 4 spezialisierte Agents (Code, Semantik, Zeit/Confidence, Usage) Audit-Dauer: ~590 Sekunden (4 Agents parallel)


Compliance-Übersicht

Gesamtergebnis: 7% voll normkonform (8/111)

Compliance-Level Anzahl Prozent Hauptprobleme
Compliant 8 7% Best-Practice-Beispiele (nutrition_avg, weight_aktuell)
Partially Compliant 22 20% 1-2 Gaps (meist time_window oder confidence)
Non-Compliant 81 73% 3+ kritische Gaps

Kritische Zahlen

Systemische Gaps (nach Normative Requirements)

Gap-Typ Anzahl Prozent Norm-Verstoß
time_window: unknown 74 67% §3.4 "Zeitfenster explizit"
Keine Confidence-Logik 103 93% §5 "Qualitäts-/Confidence-Logik"
Kein data_layer_module 100 90% §7 "Source" vollständig
Keine Mindestdaten definiert 99 89% Implizit in §5
category: Unknown 49 44% §7.1 "Pflichtfelder: category"
description: "No description" 49 44% §7.1 "Pflichtfelder: description"
Keine source_tables 90 81% §7 "Source: source_tables"
metadata_completeness_score: 0 111 100% Kein Placeholder produktionsreif
schema_status: draft 111 100% §13 Akzeptanzkriterien

Wichtigste Systemische Schwächen

1. Metadaten-Dokumentation fundamental unvollständig

Problem:

  • 100% der Platzhalter haben metadata_completeness_score: 0
  • 44% ohne fachliche Kategorie ("Unknown")
  • 44% ohne Beschreibung ("No description available")
  • Kein einziger Platzhalter hat Status "production"

Impact:

  • Platzhalter können nicht als stabile API-Verträge genutzt werden
  • Prompt-Bibliothek hat keine verlässliche Metadaten-Basis
  • Neue Platzhalter haben kein Qualitätsvorbild

Root Cause:

  • Export-System generiert Struktur, füllt aber nicht alle Felder
  • Keine systematische Dokumentationspflicht im Development-Workflow

2. Zeitfenster-Chaos

Problem:

  • 67% ohne definiertes Zeitfenster (time_window: unknown)
  • Code-Inkonsistenzen:
    • activity_summary: Docs "7d", Code 14d, Metadaten "unknown"
    • weight_trend: Docs "7d/30d", Code 28d, Metadaten "unknown"
  • Namen-Metadaten-Mismatch:
    • zeitraum_7d, zeitraum_30d, zeitraum_90d → alle time_window: unknown
    • sleep_avg_duration_7dtime_window: unknown

Impact:

  • KI kann Zeitfenster nicht interpretieren
  • Reports können nicht korrekt zeitlich einordnen
  • Vergleiche zwischen Platzhaltern problematisch

Root Cause:

  • Zeitfenster wird oft im Code definiert, aber nicht in Metadaten übertragen
  • Keine automatische Extraktion aus Funktionsnamen/Parametern

3. Fehlende Confidence-Systeme

Problem:

  • Nur 8 Platzhalter (7%) haben Confidence-Logik
  • 103 ohne jegliche Datenqualitäts-Signale
  • Kritisch bei:
    • Trend-Platzhaltern (slope, delta, change) → keine Warnung bei zu wenig Datenpunkten
    • Score-Platzhaltern (nutrition_score, activity_score) → keine Reliability-Info
    • Korrelations-Platzhaltern → keine Min-Data-Thresholds

Impact:

  • KI kann nicht zwischen "sicher" und "unsicher" unterscheiden
  • User erhält keine Warnung bei unreliablen Werten
  • Prompt-Logik muss blind vertrauen oder eigene Heuristiken entwickeln

Root Cause:

  • Nur nutrition_metrics, body_metrics, activity_metrics haben calculate_confidence()
  • Andere Data-Layer-Module ohne Confidence-Pattern

4. Unstrukturierte Fehlwertbehandlung

Problem:

  • 70 Platzhalter mit "nicht verfügbar"-String statt strukturiertem Format
  • Verstoß gegen Norm §3.5 "Fehlwerte explizit"
  • Legacy-Only: missing_value_policy.legacy_display: "nicht verfügbar"
  • Keine strukturierten Felder: available, value_raw, missing_reason

Impact:

  • KI muss String-Parsing betreiben ("nicht verfügbar" vs. "0" vs. "null")
  • Keine maschinenlesbare Unterscheidung zwischen Fehlertypen
  • Folgeprompts können nicht unterscheiden: Daten fehlen vs. Fehler aufgetreten

Root Cause:

  • Historisches Legacy-Format aus v1 des Placeholder-Systems
  • Kein strukturierter Refactor durchgeführt

5. 67 Platzhalter noch nicht produktiv eingebunden

Status:

  • 67 Platzhalter (60%) haben 0 Verwendungen in Prompts/Pipelines/Charts
  • Wichtig: Dies ist KEIN Technical Debt, sondern erwartbar bei Prompt-Bibliothek im Aufbau
  • Viele in Kategorie "Unknown" (41 von 49 Unknown-Platzhaltern ungenutzt)

Fachliche Klassifizierung (siehe USAGE_ROLE_CLASSIFICATION.md):

  • 30 Platzhalter (45%): Explizit in Roadmap Phase 0c/1/2 geplant
    • Scores (6), Correlations (5), Ability Balance (5), Goals Details (11), Sleep Debt, Plateau Detection, Top Drivers
  • 37 Platzhalter (55%): Fachlich plausibel, noch nicht in Prompts integriert
    • Body Deltas, Nutrition Details, Training Quality, Focus Category Weights/Progress, Meta/Convenience
  • 0 Platzhalter: Redundant oder deprecation-würdig

Interpretation:

  • Prompt-Bibliothek ist in Phase 0b/0c (Goals, Data Architecture)
  • Phase 1 (Charts), Phase 2 (Correlations) werden 30+ Platzhalter aktivieren
  • Kein Deprecation-Bedarf Integration statt Deletion erforderlich

Next Steps:

  • Integration-Timeline für 30 geplante Platzhalter (Phase 0c/1/2)
  • Prompt-Use-Cases für 10-15 plausible Platzhalter identifizieren
  • Nutzungsrate wird von 40% auf 50-60% steigen (organisch)

Größte Risiken für Prompt-Bibliothek und Reporting

1. Breaking-Change-Risiko (🔴 HIGH)

12 produktkritische Platzhalter mit 3-19 Verwendungen:

Placeholder Uses Risk Reason
{{name}} 19 🔴 EXTREM In 9 Prompts + 10 Pipelines
{{geschlecht}} 14 🔴 EXTREM Gender-specific Logik in 7 Prompts
{{height}} 12 🔴 EXTREM BMI-Berechnungen, Body Composition
{{weight_aktuell}} 10 🔴 HOCH Numerisch sensitiv, Format-Breaking
{{weight_trend}} 10 🔴 HOCH Code-Docs-Konflikt!
{{goal_bf_pct}} 10 🔴 HOCH Body Composition Goals
{{caliper_summary}} 8 🟡 MITTEL Body Fat Summary
{{circ_summary}} 8 🟡 MITTEL Circumference Summary
{{goal_weight}} 8 🟡 MITTEL Weight Goals
{{protein_ziel_low/high}} 7 🟡 MITTEL Nutrition Guidance
{{activity_detail}} 4 🟡 MITTEL Time-Window unklar!

Mitigation:

  • Jede Änderung an diesen 12 erfordert:
    1. Identifikation aller betroffenen Prompts/Pipelines
    2. Koordinierte Migration über alle Templates
    3. Backward-Compatibility-Periode (2-4 Wochen)
    4. Full Regression-Tests

2. Code-Dokumentations-Konflikte (🔴 HIGH)

Bekannte Inkonsistenzen:

Placeholder Description Code Metadaten Status
weight_trend "7d/30d" 28d unknown 🔴 KONFLIKT
activity_summary "7d" 14d unknown 🔴 KONFLIKT
activity_detail unklar 14d (default) unknown 🟡 UNKLAR

Impact:

  • Kein Single Source of Truth
  • KI nutzt evtl. falsche Zeitfenster-Annahmen
  • User-Verwirrung bei Zeit-Interpretation

Mitigation:

  • P0 Fix: Code als autoritativ nehmen, Docs/Metadaten aktualisieren
  • Automatische Konsistenz-Checks (CI/CD)

3. Prompt-Fragility (🟡 MEDIUM)

Problem:

  • Platzhalter ohne Zeitfenster → KI kann Perioden nicht interpretieren
  • Fehlende Confidence → KI kann Datenqualität nicht bewerten
  • "nicht verfügbar"-Strings → KI muss raten ob Fehler oder kein Wert

Beispiel-Szenarien:

Prompt: "Analysiere die Gewichtsentwicklung basierend auf {{weight_trend}}"
Problem: KI weiß nicht, ob 7d, 28d oder 90d → falsche Interpretation möglich

Prompt: "Bewerte die Korrelation {{correlation_energy_weight_lag}}"
Problem: Keine Confidence → KI kann nicht warnen "nur 5 Datenpunkte, unreliabel"

Mitigation:

  • Metadata-Enrichment für alle kritischen Platzhalter
  • Strukturierte Missing-Value-Policies

4. Fehlende Produktions-Governance (🟡 MEDIUM)

Indikatoren:

  • 100% Draft-Status → keine produktionsreifen Platzhalter
  • 90% ohne Data-Layer-Module dokumentiert
  • Keine Validierungslogik für neue Platzhalter
  • Keine klaren Production-Ready-Kriterien

Langfristige Konsequenzen:

  • Neue Entwickler können nicht erkennen, welche Platzhalter "safe to use" sind
  • Keine Guidance für Prompt-Autoren (welche Platzhalter für welchen Use-Case)
  • Akkumulation weiterer inkonsistenter Platzhalter

KEIN Technical Debt:

  • 60% ungenutzte Platzhalter ≠ "tote Codepfade"
  • Prompt-Bibliothek ist im Aufbau (Phase 0b/0c/1/2)
  • Ungenutzte Platzhalter sind fachlich geplant oder plausibel

Dokumentierte Normkonflikte zwischen Dateien

Konflikt Quelle 1 Quelle 2 Severity Resolution
Zeitfenster weight_trend Description: "7d/30d" Code: 28d 🟡 MEDIUM Code ist autoritativ → Docs aktualisieren
Zeitfenster activity_summary Description: "7d" Code: 14d 🟡 MEDIUM Code ist autoritativ → Docs aktualisieren
Neue Platzhalter requirements_dev.md: 27 neue P1-P27 Extended Catalog: 111 existierend 🟢 INFO requirements_dev ist Arbeitsdokument, kein Normativ
Bestandszahlen Export Spec: 116 Gap Report/Catalog: 111 🟢 INFO 5 Platzhalter = Metafelder (schema_version, etc.)

Rangfolgen-Resolution (aus Audit-Auftrag):

  1. NORMATIVE.md (höchste Instanz) - Verbindliche Standardspezifikation
  2. Code (aktueller Ist-Zustand) - Bei Konflikt Code > Docs
  3. Extended Catalog (dokumentierter Stand) - Generated Truth
  4. requirements_dev.md (Arbeitsdokument) - NICHT normativ, nur Planning

Best-Practice-Modelle identifiziert

Vollständig normkonforme Platzhalter (8):

1. Nutrition Averages (4):

  • protein_avg, kcal_avg, fat_avg, carb_avg

Warum Best-Practice:

✅ time_window: 30d (explizit)
✅ aggregation: AVG() via nutrition_metrics.py
✅ min_data: 8 (low), 12 (medium), 18 (high)
✅ confidence_logic: calculate_confidence(data_points, 30, 'general')
✅ missing_value_policy: strukturiert (available=false, reason='insufficient_data')
✅ data_layer_module: nutrition_metrics.py
✅ source_tables: ['nutrition_log']

2. Weight Aktuell (1):

  • weight_aktuell

Warum Best-Practice:

✅ time_window: latest
✅ aggregation: Latest entry ORDER BY date DESC LIMIT 1
✅ confidence_logic: high if exists, insufficient if no data
✅ data_layer_module: body_metrics.py
✅ source_tables: ['weight_log']

3. Andere (3):

  • weight_trend, circ_summary, age (verschiedene Best-Practice-Aspekte)

Audit-Methodik-Transparenz

4 Spezialisierte Agents (Parallel)

1. Code-Evidence-Agent (124s)

  • Aufgabe: Vollständige Code-Analyse aller Resolver-Funktionen
  • Scope: placeholder_resolver.py (Zeilen 1075-1221), data_layer/*.py, routers/prompts.py
  • Output: Technische Herkunft, Source-Tables, Return-Types für alle 111
  • Evidence-Level: code_verified (100%)

2. Semantic-Contract-Agent (218s)

  • Aufgabe: Fachliche Bedeutung aus Dokumentation ableiten
  • Scope: DATA_ARCHITECTURE.md, mitai_jinkendo_konzept_diagramme_auswertungen_v2.md, Extended Catalog
  • Output: Description, Category, Semantic Contract für alle 111
  • Evidence-Level: documentation_verified (56%), fachlich_abgeleitet (44%)

3. Time-Window-Confidence-Agent (90s)

  • Aufgabe: Zeitfenster klassifizieren, Confidence-Patterns identifizieren
  • Scope: Code + Catalog + Normative Spec (erlaubte time_window-Werte)
  • Output: Zeit-Compliance, Aggregationslogik, Min-Data-Thresholds
  • Evidence-Level: code_verified (75 unklar), code_inferred (rest)

4. Prompt-Usage-Agent (157s)

  • Aufgabe: Verwendung in Prompts/Pipelines/Charts analysieren
  • Scope: ai_prompts table (via Catalog), Grep-Suche nach {{placeholder}}
  • Output: Used-By, Criticality, Rename-Risk
  • Evidence-Level: catalog_verified (100%)

Konsolidierung:

  • Cross-Agent-Validation (4 Perspektiven auf jeden Placeholder)
  • Konflikt-Resolution nach Rangfolge (Norm > Code > Catalog > Docs)
  • Evidence-Level-Klassifizierung (code_verified > documentation_verified > fachlich_abgeleitet > unclear)

Nächste Kritische Schritte

P0 (VOR PRODUCTION - BLOCKING)

1. Zeitfenster-Klassifizierung (74 Platzhalter)

  • Aufwand: 8-12 Stunden
  • Methode:
    1. Namen-Analyse (*_7d, *_28d, etc.) → automatisch
    2. Code-Analyse (default days-Parameter) → semi-automatisch
    3. Fach-Entscheidung für Unklare (ability_balance, scores) → manuell
  • Deliverable: Alle time_window: unknown → gültige Werte (latest/7d/14d/28d/30d/90d/mixed)

2. Code-Docs-Konflikte auflösen (3 Platzhalter)

  • Aufwand: 2 Stunden
  • Items:
    • weight_trend: Description + Metadaten auf "28d" ändern
    • activity_summary: Description + Metadaten auf "14d" ändern
    • activity_detail: Default-Zeitfenster dokumentieren
  • Validation: Automatische Konsistenz-Checks (Code ↔ Catalog)

3. Kategorie + Beschreibung (49 Platzhalter)

  • Aufwand: 4-6 Stunden
  • Methode: Bulk-Update aus Semantic-Contract-Agent-Report
  • Deliverable:
    • Alle category: Unknown → fachliche Kategorien
    • Alle description: "No description available" → aussagekräftige Beschreibungen

P1 (THIS SPRINT - HIGH PRIORITY)

4. Confidence-Logik für Trend-/Delta-Platzhalter (11)

  • Aufwand: 12-16 Stunden
  • Items:
    • weight_28d_slope, weight_90d_slope, weight_7d_median
    • fm_28d_change, lbm_28d_change
    • waist_28d_delta, hip_28d_delta, chest_28d_delta, arm_28d_delta, thigh_28d_delta
    • vo2max_trend_28d
  • Pattern: confidence = calculate_confidence(data_points, time_window_days, 'trend')
  • Thresholds: high >= 70%, medium >= 50%, low >= 30% data coverage

5. Strukturierte Missing-Value-Policy (70 Platzhalter)

  • Aufwand: 8-10 Stunden
  • Refactor:
    • Legacy-String "nicht verfügbar" beibehalten (Backward-Compatibility)
    • Zusätzlich strukturierte Felder: available, missing_reason, value_raw
  • Deliverable: Dual-Mode-Support (Legacy + Structured)

6. Data-Layer-Module dokumentieren (100 Platzhalter)

  • Aufwand: 6-8 Stunden
  • Methode: Code-Trace von Resolver → Data-Layer (aus Code-Evidence-Agent)
  • Deliverable: Alle data_layer_module: null → korrekte Module

P2 (NEXT SPRINT - MEDIUM PRIORITY)

7. Ungenutzte Platzhalter - Integration planen (67)

  • Aufwand: 4-6 Stunden
  • Methode:
    • Produktmanagement-Review: Timeline für 30 geplante Platzhalter (Phase 0c/1/2)
    • Technische Review: Prompt-Use-Cases für 37 plausible Platzhalter
  • Deliverable: Integration-Roadmap, Prompt-Templates (5-10 Quick Wins)

8. Metadata-Completeness-Score auf >60% (111)

  • Aufwand: 10-12 Stunden
  • Methode: Systematisches Füllen aller Pflichtfelder
  • Target: Mindestens 60% der Platzhalter mit Score >60

9. Schema-Status auf production (20-30 Core-Platzhalter)

  • Aufwand: 4-6 Stunden
  • Kriterien:
    • Metadata-Completeness >= 80%
    • Used-By >= 1
    • Keine Known-Issues
    • Zeitfenster + Confidence definiert
  • Deliverable: 20-30 produktionsreife Platzhalter

P3 (LATER - NICE TO HAVE)

10. Validation-Framework für neue Platzhalter

  • Aufwand: 16-20 Stunden
  • Features:
    • Pre-Commit-Hook: Validierung gegen Normative Spec
    • CI/CD: Automatische Konsistenz-Checks (Code ↔ Catalog)
    • Template-Generator für neue Platzhalter

11. Migration-Guides für Prompt-Bibliothek

  • Aufwand: 8-12 Stunden
  • Content:
    • Best-Practice-Guide (basierend auf nutrition_avg)
    • Anti-Patterns (was vermeiden)
    • Upgrade-Path für Legacy-Prompts

Geschätzter Gesamt-Remediationsaufwand

Priority Aufwand Timeline Dependencies
P0 14-20h Week 1 Keine (sofort startbar)
P1 26-34h Week 2-3 Nach P0
P2 18-24h Week 4-5 Nach P1
P3 24-32h Later Nach P2
TOTAL 82-110h 4-6 Wochen Gestaffelt

Mit Team von 2 Entwicklern: 2-3 Wochen für P0+P1, weitere 1-2 Wochen für P2.


Abschluss-Statement

Der Placeholder-Audit hat massive systemische Gaps identifiziert, aber auch einen klaren Remediation-Pfad aufgezeigt. Die größten Probleme sind:

  1. Dokumentations-Gaps (44% ohne Kategorie/Beschreibung)
  2. Zeitfenster-Chaos (67% ohne definiertes Fenster)
  3. Fehlende Confidence-Systeme (93% ohne Qualitäts-Signale)

Die gute Nachricht: Alle 111 Platzhalter sind im Code implementiert, haben eine saubere Architektur, und 8 dienen bereits als Best-Practice-Modelle. Die Lücken sind primär dokumentarisch und metadatenbezogen, nicht funktional.

Mit einem strukturierten P0-P3-Plan (82-110h Aufwand) kann das System in 4-6 Wochen auf >60% Normkonformität gebracht werden.

Empfohlene nächste Schritte:

  1. Review dieses Executive Summary mit Product/Tech Lead
  2. P0-Priorisierung bestätigen (Zeitfenster, Code-Docs-Konflikte, Kategorien)
  3. Kickoff für P0-Sprint (Ziel: 74 Zeitfenster + 49 Kategorien/Beschreibungen)

Audit durchgeführt von: Claude Code (Lead Audit Agent) Agent-Team: Code-Evidence, Semantic-Contract, Time-Window-Confidence, Prompt-Usage Normative Basis: PLACEHOLDER_METADATA_REQUIREMENTS_V2_NORMATIVE.md v1.0.0 Vollständige Artefakte: Siehe audit-report-2026-03-29/ für Gap-Cluster, Maßnahmenplan, Prüfmatrix