- .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
13 KiB
Normative Standardspezifikation
Placeholder-Metadaten, Exportverträge und Governance
Version: 1.0.0
Stand: 29.03.2026
Status: Verbindlicher Standard
Geltungsbereich: Alle bestehenden, neuen und zukünftigen Platzhalter des Systems
1. Normativer Status
Dieses Dokument ist keine bloße Projektbeschreibung, sondern eine verbindliche Standardspezifikation für das Placeholder-System.
Es gilt für:
- alle aktuell existierenden Platzhalter,
- alle künftig neu eingeführten Platzhalter,
- alle technisch abgeleiteten Exportformate,
- alle Prompt-, Pipeline- und Analyseverwendungen, die auf Placeholders zugreifen,
- alle künftigen Erweiterungen der Placeholder-Registry, des Data Layers und der Exportfunktionen.
1.1 Verbindlichkeit
Alle neuen und geänderten Placeholder-Implementierungen müssen dieser Spezifikation entsprechen. Abweichungen sind nur zulässig, wenn sie:
- explizit dokumentiert,
- versioniert,
- mit
known_issuesund/oderdeprecatedmarkiert, - und in einem Gap- oder Decision-Log nachvollziehbar begründet werden.
1.2 Vorrang
Diese Spezifikation hat Vorrang vor:
- unvollständigen Altbeschreibungen,
- impliziten Verhaltensannahmen in Legacy-Prompts,
- nicht dokumentierten Exportkonventionen,
- informellen Teamabsprachen.
Wenn bestehender Code oder bestehende Exporte von dieser Spezifikation abweichen, ist die Abweichung als Legacy-Zustand zu markieren und über Versionierung/Deprecation zu behandeln.
2. Zielbild
Das System besitzt bereits einen funktionierenden Placeholder-Export und einen Data Layer als Single Source of Truth für Charts, Scores und KI-Platzhalter. Dieser Standard definiert, wie Placeholder künftig semantisch, technisch und governance-seitig beschrieben, exportiert und weiterentwickelt werden.
Jeder Placeholder muss als stabiler, dokumentierter API-Vertrag behandelbar sein.
Der Standard verlangt, dass zu jedem Placeholder mindestens folgende Ebenen eindeutig bestimmbar oder explizit als unbekannt markiert sind:
- Ist-Wert / Beispielwert
- Technische Herkunft
- Semantischer Vertrag
- Fehlwert- und Ausnahmebehandlung
- Qualitäts-/Confidence-Logik
- Verwendungsnachweise
- Versionierung / Deprecation / Nachfolger
3. Verbindliche Architekturprinzipien
3.1 Placeholder = API-Vertrag
Placeholder sind keine lose Prompt-Hilfe, sondern stabile API-Verträge. Semantik, Einheit, Zeitfenster, Rückgabetyp und Fehlwertverhalten müssen dokumentiert und versioniert sein.
3.2 Non-breaking first
Bestehende Exporte und bestehende Placeholder-Namen dürfen nicht stillschweigend breaking geändert werden. Änderungen an Semantik, Zeitfenster, Einheit oder Rückgabetyp sind:
- entweder über neue Versionen,
- oder über neue Nachfolger-Platzhalter,
- oder über explizite Deprecation-Pfade abzubilden.
3.3 JSON vor Freitext
Komplexe Metadaten, Rohdaten, strukturierte Diagnosen und technische Hinweise sind primär als JSON bereitzustellen. Freitext darf ergänzen, aber keine strukturierte Pflichtinformation ersetzen.
3.4 Zeitfenster explizit
Zeitbezogene Placeholder müssen ein explizites Zeitfenster tragen – mindestens als Metadatum. Legacy-Namen ohne eindeutiges Zeitfenster dürfen im Bestand fortbestehen, müssen aber als semantisch unpräzise markiert werden und einen empfohlenen Nachfolger erhalten.
3.5 Fehlwerte explizit
Fehlende Werte dürfen im strukturierten Export nicht nur als String wie "nicht verfügbar" modelliert werden. Verbindlich sind strukturierte Felder wie:
availablevalue_rawmissing_reasonmissing_value_policy
3.6 Typisierung ist Pflicht
Jeder Placeholder muss einem Typ zugeordnet werden:
atomicraw_datainterpretedlegacy_unknown(nur als Übergang)
3.7 Data Layer bleibt Single Source of Truth
Fachliche Berechnungen dürfen nicht im Exporter dupliziert oder neu erfunden werden. Der Exporter sammelt Metadaten und referenziert technische Herkunft; er ersetzt keine fachlichen Kernfunktionen.
3.8 Kein stilles Raten
Wenn technische Herkunft, Zeitfenster, Ausnahmebehandlung oder sonstige Metadaten nicht sicher aus dem Code bestimmbar sind, muss der Zustand als unknown, not_resolved oder partially_resolved markiert werden.
3.9 Zukunftsgeltung
Jeder neue Placeholder muss vor produktivem Einsatz in Registry, Export und Katalog vollständig gegen dieses Dokument validiert werden.
4. Geltungsbereich und Pflichtanwendung
4.1 Diese Spezifikation gilt für
- bestehende produktive Placeholder,
- neue Placeholder in aktiver Entwicklung,
- experimentelle Placeholder, sobald sie außerhalb eines reinen Dev-Modus verwendet werden,
- Placeholder in Multi-Stage-Pipelines,
- Placeholder in Reports, Dashboards, Prompt-Templates und Exporten.
4.2 Diese Spezifikation gilt auch für
- neue Goal-/Score-/Correlation-/Driver-Placeholder,
- künftige Trainingstyp-/Subcategory-Placeholder,
- Placeholder für Diagnose-, Risiko- und Recovery-Logik,
- technische Export-Erweiterungen,
- Two-Stage-Artefakte.
4.3 Nicht zulässig ohne Standardkonformität
Nicht zulässig ist:
- ein neuer Placeholder ohne dokumentierten Semantikvertrag,
- ein neuer Placeholder ohne Zeitfenster-Metadatum,
- ein strukturierter Placeholder ohne definierten Output-Typ,
- ein produktiver Placeholder ohne dokumentierte Fehlwertbehandlung,
- ein interpretierter Placeholder ohne Kennzeichnung als solcher.
5. Scope des technischen Auftrags
5.1 In Scope
Der Coding Agent soll:
- alle existierenden Placeholder inventarisieren,
- die Metadaten je Placeholder technisch erheben oder als unresolved markieren,
- einen erweiterten Export erzeugen,
- einen menschenlesbaren und maschinenlesbaren Katalog erzeugen,
- die Katalog-/Exportstruktur so implementieren, dass sie für alle zukünftigen Placeholder wiederverwendbar ist,
- Tests und Validierungen ergänzen,
- Gap-Reports für nicht automatisch auflösbare Metadaten erzeugen.
5.2 Out of Scope
Nicht gefordert ist:
- sofortige komplette fachliche Neudefinition aller Legacy-Placeholder,
- sofortige Umbenennung aller problematischen Namen,
- Umsetzung aller in anderen Dokumenten vorgeschlagenen neuen Wunsch-Placeholder,
- Neuimplementierung des gesamten Prompt-Systems.
5.3 Zukunftsanforderung
Die technische Lösung muss so gebaut sein, dass jeder zukünftige Placeholder denselben Katalog- und Exportmechanismus automatisch oder mit minimalem Zusatzaufwand durchlaufen kann.
6. Ziel-Deliverables
6.1 Code / Export
- Erweiterter Placeholder-Export
- neuer Endpoint, CLI, Service-Funktion oder Exportmodus
- Legacy-Export bleibt kompatibel
- Zentrales Metadatenmodell / Registry-Erweiterung
- wiederverwendbar für bestehende und zukünftige Placeholder
- Validierungslogik für neue Placeholder
- technische Prüfung gegen dieses Dokument
6.2 Dateien / Dokumentation
PLACEHOLDER_CATALOG_EXTENDED.jsonPLACEHOLDER_CATALOG_EXTENDED.mdPLACEHOLDER_EXPORT_SPEC.mdPLACEHOLDER_GAP_REPORT.md- optional:
PLACEHOLDER_VALIDATION_REPORT.md
6.3 Tests
- Tests für:
- Vollständigkeit des Exports,
- Konsistenz der Metadaten,
- Legacy-Kompatibilität,
- Referenzierbarkeit der Verwendungen,
- Pflichtfeld-Validierung für neue Placeholder,
- normkonforme Typisierung und Zeitfenster-Markierung.
7. Verbindliches Metadaten-Schema pro Placeholder
Jeder Placeholder im erweiterten Export muss mindestens die folgenden Felder besitzen oder explizit als unknown/null/leer markiert sein.
{
"key": "weight_aktuell",
"placeholder": "{{weight_aktuell}}",
"category": "Körper",
"type": "atomic",
"description": "Aktuelles Gewicht in kg",
"semantic_contract": "Letzter verfügbarer Gewichtseintrag des Profils, keine Mittelung",
"unit": "kg",
"time_window": "latest",
"output_type": "number_or_string",
"format_hint": "85.8 kg",
"example_output": "85.8 kg",
"value_display": "85.8 kg",
"value_raw": 85.8,
"available": true,
"missing_reason": null,
"missing_value_policy": {
"legacy_display": "nicht verfügbar",
"structured_null": true,
"reason_codes": ["no_data", "insufficient_data", "resolver_error"]
},
"exception_handling": {
"on_error": "return_null_and_reason",
"notes": "Keine Exception bis in Prompt-Ebene durchreichen"
},
"quality_filter_policy": null,
"confidence_logic": {
"supported": false,
"notes": "Für latest-Werte nicht erforderlich"
},
"source": {
"resolver": "get_latest_weight_placeholder",
"module": "placeholder_resolver.py",
"function": "get_latest_weight",
"data_layer_module": "body_metrics.py",
"source_tables": ["weight_log"]
},
"dependencies": ["profile_id"],
"used_by": {
"prompts": ["gesamt", "koerper"],
"pipelines": ["pipeline", "wettkampf-analyse"],
"charts": []
},
"version": "1.0.0",
"deprecated": false,
"replacement": null,
"known_issues": [],
"notes": []
}
7.1 Pflichtfelder
Pflichtfelder sind:
keyplaceholdercategorytypedescriptionsemantic_contractunittime_windowoutput_typevalue_displayavailablemissing_value_policysourceversiondeprecated
7.2 Erlaubte Werte für type
atomicraw_datainterpretedlegacy_unknown
7.3 Erlaubte Werte für time_window
latest7d14d28d30d90dcustommixedunknown
7.4 Erlaubte Werte für output_type
stringnumberintegerbooleanjsonmarkdowndateenumunknown
8. Exportformat
8.1 Legacy-Export bleibt erhalten
Der bestehende Export bleibt unverändert nutzbar.
8.2 Neuer erweiterter Export
Zusätzlich muss ein erweiterter Export existieren, z. B. mit:
legacymetadata.by_categorymetadata.flatmetadata.summarymetadata.gapsmetadata.schema_version
8.3 Zukunftsfähigkeit
Der erweiterte Export muss so strukturiert sein, dass neue Placeholder ohne Redesign der Gesamtstruktur ergänzt werden können.
9. Pflichtregeln für neue und zukünftige Placeholder
Jeder neue Placeholder muss vor Freigabe folgende Fragen beantworten können:
- Was ist die exakte fachliche Semantik?
- Welches Zeitfenster gilt?
- Welcher Typ liegt vor?
- Was ist der Output-Typ?
- Welche Datenquelle/Funktion berechnet ihn?
- Wie werden fehlende Werte dargestellt?
- Welche Ausnahmebehandlung gilt?
- Welche bekannten Grenzen/Issues gibt es?
- Wird ein Quality-Filter angewendet?
- Ist der Placeholder in Prompts/Pipelines referenziert?
Wenn eine dieser Fragen unbeantwortet bleibt, darf der Placeholder nicht als voll standardkonform gelten.
10. Legacy-, Deprecation- und Abweichungsregeln
10.1 Legacy-Markierung
Bestehende problematische Placeholder dürfen als Legacy bestehen bleiben, wenn sie markiert werden durch:
deprecated: true/falseknown_issuesreplacement- dokumentierten Semantikhinweis
10.2 Deprecation-Pflicht
Wenn ein Placeholder semantisch unpräzise, technisch instabil oder fachlich überholt ist, muss ein Deprecation-Pfad vorgesehen werden.
10.3 Abweichungsprozess
Abweichungen von diesem Standard müssen in einem Decision-/Gap-Log dokumentiert werden, mit:
- Begründung,
- Impact,
- geplanter Nachbesserung,
- Verantwortlichkeit.
11. Validierung und Governance
11.1 Pflichtvalidierungen
Für bestehende und neue Placeholder müssen validierbar sein:
- Pflichtfeld-Vollständigkeit,
- gültige Typisierung,
- gültiges Zeitfenster,
- dokumentierte Quelle,
- dokumentiertes Fehlwertverhalten,
- dokumentierte Legacy-/Deprecation-Information.
11.2 CI-/Test-Eignung
Die technische Lösung soll so gebaut werden, dass künftige Validierungen automatisierbar sind.
11.3 Two-Stage-Artefakte
Interpretierte Outputs aus Basis-Prompts müssen als interpreted gekennzeichnet werden und dürfen nicht als rohe Datenplaceholder ausgegeben werden.
12. Konkrete Arbeitsanweisung an den Coding Agent
Der Coding Agent soll diese Spezifikation als verbindlichen Standard behandeln und die Implementierung so auslegen, dass sie:
- den aktuellen Bestand vollständig erfasst,
- für künftige Placeholder wiederverwendbar ist,
- Legacy-Verhalten nicht still bricht,
- technische Lücken transparent markiert,
- und als Grundlage für zukünftige Placeholder-Governance dient.
13. Akzeptanzkriterien
Die Umsetzung gilt nur dann als erfolgreich, wenn:
- alle existierenden Placeholder im erweiterten Katalog enthalten sind,
- der Legacy-Export weiter funktioniert,
- das Metadatenmodell für neue Placeholder wiederverwendbar ist,
- Pflichtfelder validiert werden,
- unresolved Informationen sauber markiert werden,
- die Dokumentation ausdrücklich festhält, dass der Standard für alle neuen und zukünftigen Placeholder gilt.
14. Schlussregel
Ab Inkrafttreten dieses Dokuments ist ein neuer Placeholder ohne Standardkonformität nur als explizit dokumentierte Ausnahme zulässig. Der Default ist Standardpflicht, nicht informelle Flexibilität.