{
"event": "PreToolUse",
"tool_name": "mcp__mcp-db__db_select",
"tool_input": {
"query": "SELECT id, name, version, yaml_content, scope_description FROM contracts WHERE status = 'active'",
"database": "ki_dev"
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"status\": \"success\",\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"betriebsdokumentation-pruefung_v1.1\",\n \"version\": \"2.0\",\n \"yaml_content\": \"contract:\\n name: betriebsdokumentation\\n version: \\\"2.0\\\"\\n status: active\\n description: |\\n Validierung von Server- und Betriebsdokumentation.\\n Migriert auf Meta-Schema v1.0 am 22.12.2025.\\n\\n created: \\\"2025-12-20\\\"\\n author: system_generated_under_supervision\\n\\n scope:\\n paths:\\n - \\\"\/src\/View\/docs\/**\/*.php\\\"\\n excludes:\\n - \\\"**\/layout.php\\\"\\n - \\\"**\/partials\/**\\\"\\n\\n rules:\\n - id: path-existence\\n check_type: custom\\n script: \\\"\/opt\/scripts\/contract-validators\/path_existence.py\\\"\\n severity: critical\\n description: \\\"Dokumentierte Dateipfade müssen auf dem System existieren\\\"\\n\\n - id: command-validity\\n check_type: custom\\n script: \\\"\/opt\/scripts\/contract-validators\/command_validity.py\\\"\\n severity: critical\\n description: \\\"Dokumentierte Befehle müssen syntaktisch plausibel sein\\\"\\n\\n - id: required-breadcrumb\\n check_type: required_pattern\\n patterns:\\n - 'class=\\\"breadcrumb\\\"'\\n - \\\"nav.breadcrumb\\\"\\n in_files: \\\"docs\/**\/*.php\\\"\\n severity: major\\n description: \\\"Dokumentationsseiten müssen Breadcrumb haben\\\"\\n\\n - id: required-h1\\n check_type: required_pattern\\n patterns:\\n - \\\"<h1>\\\"\\n in_files: \\\"docs\/**\/*.php\\\"\\n severity: major\\n description: \\\"Dokumentationsseiten müssen h1 Titel haben\\\"\\n\\n - id: terminology-dienst\\n check_type: forbidden_pattern\\n patterns:\\n - \\\">Service<\\\"\\n - \\\">Command<\\\"\\n in_files: \\\"docs\/**\/*.php\\\"\\n exclude_files:\\n - \\\"**\/modul\/**\\\"\\n severity: minor\\n description: \\\"Bevorzuge 'Dienst' statt 'Service' im Fließtext\\\"\\n\\n enforcement:\\n on_violation: warn\\n\\n pass_threshold:\\n critical_max: 0\\n major_max: 2\\n minor_max: 5\\n\",\n \"scope_description\": \"\"\n },\n {\n \"id\": 2,\n \"name\": \"CSS Contract\",\n \"version\": \"2.0\",\n \"yaml_content\": \"contract:\\n name: css-standards\\n version: \\\"2.0\\\"\\n status: active\\n description: |\\n CSS-Standards mit Fokus auf Accessibility (WCAG 2.1 AA).\\n Migriert auf Meta-Schema v1.0 am 22.12.2025.\\n\\n created: \\\"2025-12-20\\\"\\n author: migration\\n\\n scope:\\n paths:\\n - \\\"\/src\/View\/**\/*.php\\\"\\n - \\\"\/public\/css\/**\/*.css\\\"\\n\\n rules:\\n - id: contrast-normal-text\\n check_type: custom\\n script: \\\"\/opt\/scripts\/contract-validators\/color_contrast.py\\\"\\n args: [\\\"--min-ratio\\\", \\\"4.5\\\"]\\n severity: critical\\n description: \\\"Farbkontrast min. 4.5:1 für normalen Text (WCAG 1.4.3)\\\"\\n\\n - id: no-outline-none\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"outline: none\\\"\\n - \\\"outline: 0\\\"\\n - \\\"outline:none\\\"\\n - \\\"outline:0\\\"\\n in_files: \\\"**\/*.css\\\"\\n severity: major\\n description: \\\"Focus-Styles niemals entfernen (WCAG 2.4.7)\\\"\\n\\n - id: no-important\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"!important\\\"\\n in_files: \\\"**\/*.css\\\"\\n exclude_files:\\n - \\\"**\/utilities.css\\\"\\n severity: major\\n description: \\\"Kein !important außer für Utility-Klassen\\\"\\n\\n - id: code-block-colors\\n check_type: required_pattern\\n patterns:\\n - \\\"pre\\\"\\n - \\\"code\\\"\\n in_files: \\\"**\/*.css\\\"\\n severity: critical\\n description: \\\"Pre\/Code-Blöcke müssen Farben definieren\\\"\\n\\n - id: min-font-size\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"font-size: 12px\\\"\\n - \\\"font-size: 11px\\\"\\n - \\\"font-size: 10px\\\"\\n - \\\"font-size: 0.75rem\\\"\\n - \\\"font-size: 0.7rem\\\"\\n in_files: \\\"**\/*.css\\\"\\n severity: major\\n description: \\\"Mindestschriftgröße 16px für Fließtext\\\"\\n\\n enforcement:\\n on_violation: warn\\n\\n pass_threshold:\\n critical_max: 0\\n major_max: 2\\n minor_max: 5\\n\",\n \"scope_description\": \"\"\n },\n {\n \"id\": 3,\n \"name\": \"HTML Tables Contract\",\n \"version\": \"2.0\",\n \"yaml_content\": \"contract:\\n name: html-tables-standards\\n version: \\\"2.0\\\"\\n status: active\\n description: |\\n Standards für HTML-Tabellen mit Fokus auf Navigation und Usability.\\n Migriert auf Meta-Schema v1.0 am 22.12.2025.\\n\\n created: \\\"2025-12-20\\\"\\n author: migration\\n\\n scope:\\n paths:\\n - \\\"\/src\/View\/**\/*.php\\\"\\n - \\\"\/public\/js\/**\/*.js\\\"\\n\\n rules:\\n - id: no-actions-column\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"<th>Aktionen<\/th>\\\"\\n - \\\">Aktionen<\\\"\\n in_files: \\\"View\/**\/*.php\\\"\\n severity: critical\\n description: \\\"Keine Aktionen-Spalte - ID oder Titel als Link verwenden\\\"\\n\\n - id: no-modal-details\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"openModal(\\\"\\n - \\\"showModal(\\\"\\n - 'id=\\\"modal\\\"'\\n in_files: \\\"View\/**\/*.php\\\"\\n severity: critical\\n description: \\\"Keine Modals für Detail-Ansichten - echte URLs verwenden\\\"\\n\\n - id: no-inline-onclick\\n check_type: forbidden_pattern\\n patterns:\\n - 'onclick=\\\"'\\n - \\\"onclick='\\\"\\n in_files: \\\"View\/**\/*.php\\\"\\n severity: major\\n description: \\\"Event Delegation statt inline onclick\\\"\\n\\n - id: sortable-tables\\n check_type: required_pattern\\n patterns:\\n - \\\"data-sortable\\\"\\n in_files: \\\"View\/**\/index.php\\\"\\n severity: major\\n description: \\\"Tabellen müssen sortierbar sein\\\"\\n\\n - id: table-search\\n check_type: required_pattern\\n patterns:\\n - 'type=\\\"search\\\"'\\n - \\\"table-search\\\"\\n in_files: \\\"View\/**\/index.php\\\"\\n severity: major\\n description: \\\"Tabellen müssen Suchfeld haben\\\"\\n\\n enforcement:\\n on_violation: warn\\n\\n pass_threshold:\\n critical_max: 0\\n major_max: 2\\n minor_max: 5\\n\",\n \"scope_description\": \"\"\n },\n {\n \"id\": 4,\n \"name\": \"js-browser-architecture-contract_v2\",\n \"version\": \"2.0\",\n \"yaml_content\": \"contract:\\n name: js-browser-architecture\\n version: \\\"2.0\\\"\\n status: active\\n description: |\\n Architektur-Contract für native Browser-JavaScript (ES Modules).\\n Migriert auf Meta-Schema v1.0 am 22.12.2025.\\n\\n created: \\\"2025-12-15\\\"\\n author: migration\\n\\n scope:\\n paths:\\n - \\\"\/public\/js\/**\/*.js\\\"\\n excludes:\\n - \\\"\/public\/js\/vendor\/**\\\"\\n\\n rules:\\n - id: no-var\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"var \\\"\\n in_files: \\\"**\/*.js\\\"\\n severity: major\\n description: \\\"var ist verboten - verwende const oder let\\\"\\n\\n - id: no-double-equals\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"==\\\"\\n - \\\"!=\\\"\\n in_files: \\\"**\/*.js\\\"\\n exclude_files:\\n - \\\"**\/vendor\/**\\\"\\n severity: major\\n description: \\\"== und != sind verboten - verwende === und !==\\\"\\n\\n - id: no-commonjs\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"require(\\\"\\n - \\\"module.exports\\\"\\n in_files: \\\"**\/*.js\\\"\\n severity: critical\\n description: \\\"CommonJS ist verboten - verwende ES Modules\\\"\\n\\n - id: no-eval\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"eval(\\\"\\n - \\\"new Function(\\\"\\n in_files: \\\"**\/*.js\\\"\\n severity: critical\\n description: \\\"eval und new Function sind verboten (Security)\\\"\\n\\n - id: no-global-variables\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"window.\\\"\\n - \\\"document.\\\"\\n in_files: \\\"**\/*.js\\\"\\n exclude_files:\\n - \\\"**\/adapters\/**\\\"\\n severity: major\\n description: \\\"Globale Zugriffe nur in Adapters erlaubt\\\"\\n\\n - id: es-modules\\n check_type: required_pattern\\n patterns:\\n - \\\"export\\\"\\n - \\\"import\\\"\\n in_files: \\\"**\/*.js\\\"\\n exclude_files:\\n - \\\"**\/vendor\/**\\\"\\n severity: info\\n description: \\\"ES Module Syntax verwenden\\\"\\n\\n enforcement:\\n on_violation: warn\\n\\n pass_threshold:\\n critical_max: 0\\n major_max: 2\\n minor_max: 5\\n\",\n \"scope_description\": \"\"\n },\n {\n \"id\": 5,\n \"name\": \"layered-architecture-pruefung_v1.0\",\n \"version\": \"3.2\",\n \"yaml_content\": \"contract:\\n name: layered-architecture\\n version: \\\"3.2\\\"\\n status: active\\n description: |\\n Validierung der Schichtenarchitektur (MVC in \/src, MVP in \/app).\\n v3.0: Erweitert um Supervision-Regeln (Controller als Transport-Layer).\\n v3.1: Pfade korrigiert (src\/ Prefix für in_files).\\n v3.2: Regex-Patterns escaped für korrekte Validierung.\\n\\n created: \\\"2025-12-20\\\"\\n updated: \\\"2025-12-22\\\"\\n author: system_generated_under_supervision\\n\\n scope:\\n paths:\\n - \\\"\/src\/**\/*.php\\\"\\n - \\\"\/app\/**\/*.php\\\"\\n excludes:\\n - \\\"\/tests\/**\\\"\\n - \\\"\/scripts\/**\\\"\\n - \\\"\/public\/**\\\"\\n - \\\"\/config\/**\\\"\\n - \\\"\/src\/View\/docs\/**\\\"\\n\\n rules:\\n # === CONTROLLER-REGELN (aus Supervision) ===\\n - id: no-pdo-in-controller\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"private PDO\\\"\\n - \\\"->query\\\"\\n - \\\"->prepare\\\"\\n in_files: \\\"src\/Controller\/**\/*.php\\\"\\n severity: critical\\n description: \\\"Controller dürfen kein direktes PDO\/SQL verwenden\\\"\\n\\n - id: no-new-repository-in-controller\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"new .*Repository\\\"\\n in_files: \\\"src\/Controller\/**\/*.php\\\"\\n severity: critical\\n description: \\\"Controller dürfen Repositories nicht selbst instanziieren\\\"\\n\\n - id: no-new-service-in-controller\\n check_type: forbidden_pattern\\n patterns:\\n - \\\"new .*Service\\\"\\n in_files: \\\"src\/Controller\/**\/*.php\\\"\\n severity: major\\n description: \\\"Controller dürfen ... [TRUNCATED-d530d95214e0a61d]"
}
]
}