# 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_7d` → `time_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