Protokoll #14483
| ID | 14483 |
|---|---|
| Zeitstempel | 2025-12-25 10:42:13.170938 |
| Client | root |
| IP | Warning: Undefined array key "request_ip" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13 Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 13 |
| Modell | claude-sonnet-4-20250514 |
| Status | completed |
| Tokens | 1,596 (Input: 0, Output: 0) |
| Dauer | 92 ms |
| Request-Zeit | Warning: Undefined array key "request_timestamp" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 18 |
| Response-Zeit | - |
Warning: Undefined array key "error_message" in /var/www/dev.campus.systemische-tools.de/src/View/protokoll/show.php on line 22
Request
{
"event": "PreToolUse",
"tool_name": "mcp__mcp-tasks__tasks_status",
"tool_input": {
"id": 323,
"status": "in_progress"
}
}
Response
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"task\": {\n \"id\": 323,\n \"uuid\": \"285c03bc-438b-475b-a287-d837b424082b\",\n \"title\": \"Lese claude.md vollständig und befolge: Post-Hook Quality System - H3 Prävention erweitern\",\n \"description\": \"## Root-Cause Analyse\\n\\n### Problem\\n28 Dateien mit `DatabaseFactory::`-Verstößen gegen Contract H3 existieren, obwohl Pre-Hook diese blockieren sollte.\\n\\n### Warum sind die Verstöße durchgerutscht?\\n\\n**1. Zeitliches Problem:**\\nDie 28 Repository-Dateien wurden VOR Einführung des Hook-Systems erstellt (Pre-Hooks seit ~23.12.2025).\\n\\n**2. Edit-Hook Lücke:**\\nBei `Edit`-Operationen erhält der Hook nur `new_string`, NICHT den vollständigen Datei-Inhalt.\\n\\nBeispiel:\\n```\\nClaude ändert eine Zeile in TaskRepository.php:\\n- tool_name: \\\"Edit\\\"\\n- old_string: \\\"return $result;\\\"\\n- new_string: \\\"return $result ?? [];\\\"\\n\\nPre-Hook prüft nur \\\"return $result ?? [];\\\" → kein DatabaseFactory gefunden → ALLOW\\nABER: Die Datei enthält weiterhin DatabaseFactory::dev() auf Zeile 18!\\n```\\n\\n**3. Kein Full-Codebase-Scan:**\\nEs existiert kein periodischer Scan, der alle bestehenden Dateien gegen die Regeln prüft.\\n\\n---\\n\\n## Tiefe Analyse der Hook-Architektur\\n\\n### Aktueller Datenfluss\\n```\\nWrite\/Edit → hook_dispatcher.py → pre_rules.py → check(file_path, content)\\n ↓\\n h3_database_factory_only_in_factory()\\n ↓\\n re.search(r\\\"DatabaseFactory::\\\", content)\\n```\\n\\n### Problem: `content` bei Edit\\n```python\\n# hook_dispatcher.py:60-61\\ncontent = tool_input.get(\\\"content\\\", \\\"\\\") # Bei Edit = new_string!\\n\\n# Bei Write: content = voller neuer Datei-Inhalt ✅\\n# Bei Edit: content = nur new_string Fragment ❌\\n```\\n\\n### Betroffene Stellen\\n- `\/var\/www\/tools\/ki-protokoll\/claude-hook\/hook_dispatcher.py:60`\\n- `\/var\/www\/tools\/ki-protokoll\/claude-hook\/quality\/pre_rules.py` (alle Regeln)\\n\\n---\\n\\n## Lösungsplan (4 Maßnahmen)\\n\\n### Maßnahme 1: Edit-Hook mit Full-File-Check\\n**Aufwand:** MITTEL (30 min)\\n\\n```python\\n# hook_dispatcher.py erweitern\\nif tool_name == \\\"Edit\\\":\\n file_path = tool_input.get(\\\"file_path\\\", \\\"\\\")\\n old_string = tool_input.get(\\\"old_string\\\", \\\"\\\")\\n new_string = tool_input.get(\\\"new_string\\\", \\\"\\\")\\n \\n # Bestehende Datei lesen\\n try:\\n with open(file_path, 'r') as f:\\n full_content = f.read()\\n # Simulation des Edits\\n content = full_content.replace(old_string, new_string, 1)\\n except:\\n content = new_string # Fallback\\n```\\n\\n**Risiko:** LOW - Nur Lesezugriff, kein Write\\n\\n---\\n\\n### Maßnahme 2: Periodischer Full-Codebase-Scan\\n**Aufwand:** MITTEL (45 min)\\n\\nNeues Script: `\/var\/www\/tools\/ki-protokoll\/claude-hook\/quality\/full_scan.py`\\n\\n```python\\n#!\/usr\/bin\/env python3\\n\\\"\\\"\\\"\\nScannt alle PHP-Dateien im Projekt gegen alle Regeln.\\nErstellt Tasks für gefundene Violations.\\n\\\"\\\"\\\"\\nimport glob\\nfrom pre_rules import RULES, allow\\n\\ndef scan_codebase(path=\\\"\/var\/www\/dev.campus.systemische-tools.de\/src\\\"):\\n violations = []\\n for php_file in glob.glob(f\\\"{path}\/**\/*.php\\\", recursive=True):\\n with open(php_file, 'r') as f:\\n content = f.read()\\n result = check(php_file, content)\\n if not result.get(\\\"allowed\\\", True):\\n violations.append((php_file, result.get(\\\"message\\\")))\\n return violations\\n```\\n\\nCron-Job (täglich 03:00):\\n```\\n0 3 * * * \/var\/www\/tools\/ki-protokoll\/claude-hook\/quality\/full_scan.py --create-tasks\\n```\\n\\n---\\n\\n### Maßnahme 3: Pre-Sync Validation\\n**Aufwand:** NIEDRIG (15 min)\\n\\n`\/var\/www\/scripts\/sync-dev-prod.sh` erweitern:\\n\\n```bash\\n# Vor rsync: Full-Codebase-Scan\\necho \\\"=== Quality Pre-Check ===\\\"\\n\/var\/www\/tools\/ki-protokoll\/claude-hook\/quality\/full_scan.py --fail-on-violations\\nif [ $? -ne 0 ]; then\\n echo \\\"❌ Sync abgebrochen: Quality Violations gefunden\\\"\\n exit 1\\nfi\\n```\\n\\n---\\n\\n### Maßnahme 4: Contract-Validierung erweitern\\n**Aufwand:** MITTEL (30 min)\\n\\n`contracts_validate()` sollte auch H3 für alle Dateien im Scope prüfen:\\n\\n```yaml\\n# architecture-gate-contract erweitern\\nvalidation:\\n scope: \\\"\/src\/**\/*.php\\\"\\n rules_to_validate:\\n - H3: DatabaseFactory nur in \/Factory\/\\n```\\n\\n---\\n\\n## Implementierungsreihenfolge\\n\\n1. **Maßnahme 1 (Edit-Hook)** - Verhindert neue Violations durch Edits\\n2. **Maßnahme 3 (Pre-Sync)** - Blockiert Deployment mit Violations\\n3. **Maßnahme 2 (Full-Scan)** - Findet bestehende Violations automatisch\\n4. **Maßnahme 4 (Contract)** - Integration in bestehendes Contract-System\\n\\n---\\n\\n## Validierung\\n\\n1. Test Edit-Hook: Edit einer Datei mit DatabaseFactory → muss blockiert werden\\n2. Test Pre-Sync: `sync-dev-prod.sh` mit Violation → muss abbrechen\\n3. Test Full-Scan: Findet alle 28 bekannten Violations\\n4. Test Contract: `contracts_validate(name=\\\"architecture-gate-contract\\\")` meldet H3-Violations\\n\\n---\\n\\n## Dateien zu erstellen\/ändern\\n\\n| Datei | Änderung |\\n|-------|----------|\\n| `\/var\/www\/tools\/ki-protokoll\/claude-hook\/hook_dispatcher.py` | Edit-Full-File-Check |\\n| `\/var\/www\/tools\/ki-protokoll\/claude-hook\/quality\/full_scan.py` | NEU |\\n| `\/var\/www\/scripts\/sync-dev-prod.sh` | Pre-Sync Quality Check |\\n| `\/etc\/cron.d\/quality-scan` | NEU (Cron-Job) |\\n| Contract `architecture-gate-contract` | validation scope erweitern |\\n\\n**Geschätzter Gesamtaufwand:** ~2 Stunden\",\n \"type\": \"ai_task\",\n \"status\": \"in_progress\",\n \"created_by\": \"mcp-tasks\",\n \"created_by_type\": \"ai\",\n \"parent_task_id\": null,\n \"due_date\": null,\n \"created_at\": \"2025-12-25T10:25:27.046672\",\n \"updated_at\": \"2025-12-25T10:42:13.195391\",\n \"completed_at\": null,\n \"metadata\": {}\n },\n \"message\": \"Task #323 status changed: pending -> in_progress\"\n}"
}
]
}