Protokoll #353

ID353
Zeitstempel2025-12-20 16:30:12.022818
Clientroot
IP145.224.96.190
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens2,658 (Input: 74, Output: 2,584)
Dauer212 ms
Request-Zeit2025-12-20 16:30:12.022818
Response-Zeit2025-12-20 16:30:12.234366

Request

{
    "event": "PreToolUse",
    "tool_name": "Bash",
    "tool_input": {
        "command": "mysql -u root -pv8mFLmkF2fth_r -D ki_dev -e \"SELECT yaml_content FROM contracts WHERE name LIKE 'layered%' AND status = 'active';\" 2>\/dev\/null | tail -n +2 | head -100",
        "description": "Get Layered Architecture Contract"
    }
}

Response

{
    "tool_response": {
        "stdout": "# =============================================================================\\n# LAYERED ARCHITECTURE VALIDATION CONTRACT\\n# =============================================================================\\n# Validierung der Schichtenarchitektur (MVC in \/src, MVP in \/app)\\n# Version: 1.0.0\\n# Erstellt: 2025-12-20\\n# =============================================================================\\n\\nmeta:\\n  document_type: architecture_validation_contract\\n  normative: true\\n  binding: mandatory\\n  created: 2025-12-20\\n  author: system_generated_under_supervision\\n  based_on: layered_architecture_mvc_mvp_v1.2.0\\n\\nidentity:\\n  name: layered_architecture_validation\\n  version: 1.0.0\\n  status: active\\n  migration_plan: \/var\/www\/docs\/architecture\/migration-plan_mvc-to-layered.md\\n  migrated_on: 2025-12-20\\n\\n# =============================================================================\\n# SCOPE (technisch definiert)\\n# =============================================================================\\nscope:\\n  applies_to_paths:\\n    - \/var\/www\/dev.campus.systemische-tools.de\/src\/**\/*.php\\n    - \/var\/www\/dev.campus.systemische-tools.de\/app\/**\/*.php\\n\\n  excludes_paths:\\n    - \/var\/www\/dev.campus.systemische-tools.de\/tests\/**\\n    - \/var\/www\/dev.campus.systemische-tools.de\/scripts\/**\\n    - \/var\/www\/dev.campus.systemische-tools.de\/public\/**\\n    - \/var\/www\/dev.campus.systemische-tools.de\/config\/**\\n    - \/var\/www\/dev.campus.systemische-tools.de\/src\/View\/docs\/**\\n\\n  file_types:\\n    - .php\\n\\n  platform:\\n    language: PHP\\n    version_min: 8.4\\n\\n# =============================================================================\\n# ARCHITEKTUR-DEFINITION\\n# =============================================================================\\narchitecture:\\n  style: layered_architecture\\n\\n  patterns:\\n    src: mvc\\n    app: mvp\\n\\n  expected_directories:\\n    src:\\n      - \/src\/Domain\\n      - \/src\/UseCases\\n      - \/src\/Infrastructure\\n      - \/src\/Controller\\n      - \/src\/View\\n    app:\\n      - \/app\/Presenter\\n      - \/app\/View\\n\\n# =============================================================================\\n# LAYER-DEFINITIONEN\\n# =============================================================================\\nlayers:\\n  # === SRC (MVC) ===\\n  src_domain:\\n    path_pattern: \"\/src\/Domain\/**\/*.php\"\\n    role: domain_logic\\n    allowed:\\n      - Fachliche Regeln\\n      - Entities\\n      - Value Objects\\n      - Domain Events\\n    forbidden:\\n      - UI-Logik\\n      - Interaktions-Logik\\n      - Infrastructure-Zugriff\\n      - use-Statements zu \/app\\n      - use-Statements zu \/src\/Infrastructure\\n\\n  src_use_cases:\\n    path_pattern: \"\/src\/UseCases\/**\/*.php\"\\n    role: domain_coordination\\n    allowed:\\n      - Orchestrierung von Domain-Operationen\\n      - Interface-Definitionen für Infrastructure\\n    forbidden:\\n      - Eigene Fachlogik (gehört in Domain)\\n      - UI-Logik\\n      - Direkte Infrastructure-Implementierung\\n\\n  src_infrastructure:\\n    path_pattern: \"\/src\/Infrastructure\/**\/*.php\"\\n    role: infrastructure_implementation\\n    allowed:\\n      - Repository-Implementierungen\\n      - External Service Adapter\\n      - Database Access\\n    forbidden:\\n      - Domain-Logik\\n      - UI-Logik\\n    must_implement: Interfaces aus \/src\/UseCases oder \/src\/Domain\\n\\n  src_controller:\\n    path_pattern: \"\/src\/Controller\/**\/*.php\"\\n    role: request_handling\\n    allowed:\\n      - Use Case Orchestrierung\\n      - Request\/Response Transformation\\n    forbidden:\\n      - Domain-Logik\\n      - Infrastructure-Implementierung\\n      - UI State Management\\n\\n  src_view:\\n    path_pattern: \"\/src\/View\/**\/*.php\"\\n    role: output_templates\\n    allowed:\\n      - Statische HTML-Struktur\\n      - Daten-Ausgabe\\n    forbidden:\\n      - UI-Logik\\n      - Interaktions-Logik\\n      - State Management\\n\\n  # === APP (MVP) ===\\n  app_presenter:\\n    path_pattern: \"\/app\/Presenter\/**\/*.php\"\\n    role: interaction_logic\\n    allowed:\\n      - Interaktions-Logik\\n      - UI State Management\\n      - UI Validation (syntaktisch)\\n      - Aufrufe zu \/src\/UseCases\\n    forbidden:\\n      - Domain-Logik\\n      - Semantische Validierung\\n      - Direkter Infrastructure-Zugriff\\n\\n  app_view:\\n    path_pattern: \"\/app\/View\/**\/*.php\"\\n    role: passive_view\\n    allowed:\\n      - Raw Event Forwarding\\n      - Data Display\\n    forbidden:\\n      - Event Mapping\\n      - Conditional Logic (außer Anzeige)\\n      - State Management\\n      - Aufrufe zu \/src\\n\\n# =============================================================================\\n# DEPENDENCY RULES\\n# =============================================================================\\ndependency_rules:\\n  allowed_imports:\\n    - from: \"\/app\/Presenter\/**\"\\n      to: \"\/src\/UseCases\/**\"\\n      reason: \"Presenter darf Use Cases aufrufen\"\\n\\n    - from: \"\/src\/Controller\/**\"\\n      to: \"\/src\/UseCases\/**\"\\n      reason: \"Controller orchestriert Use Cases\"\\n\\n    - from: \"\/src\/UseCases\/**\"\\n      to: \"\/src\/Domain\/**\"\\n      reason: \"Use Cases nutzen Domain\"\\n\\n    - from: \"\/src\/Infrastructure\/**\"\\n      to: \"\/src\/Domain\/**\"\\n      reason: \"Infrastructure implementiert Domain-Interfaces\"\\n\\n  forbidden_imports:\\n    - from: \"\/src\/**\"\\n      to: \"\/app\/**\"\\n      severity: critical\\n      reason: \"src darf nicht von app abhängen\"\\n\\n    - from: \"\/app\/**\"\\n      to: \"\/src\/Infrastructure\/**\"\\n      severity: critical\\n      reason: \"app darf nicht direkt auf Infrastructure zugreifen\"\\n\\n    - from: \"\/app\/View\/**\"\\n      to: \"\/app\/Presenter\/**\"\\n      severity: critical\\n      reason: \"View darf Presenter nicht importieren (passive view)\"\\n\\n    - from: \"\/src\/Domain\/**\"\\n      to: \"\/src\/Infrastructure\/**\"\\n      severity: critical\\n      reason: \"Domain darf nicht von Infrastructure abhängen\"\\n\\n  cycles:\\n    forbidden: true\\n    severity: critical\\n\\n# =============================================================================\\n# VALIDATION FACTORS\\n# =============================================================================\\nvalidation_factors:\\n\\n  directory_structure:\\n    priority: 1\\n    severity: critical\\n    description: Erwartete Verzeichnisstruktur muss existieren\\n    validation:\\n      method: directory_existence_check\\n      required_directories:\\n        - \/src\/Domain\\n        - \/src\/UseCases\\n        - \/src\/Infrastructure\\n        - \/app\/Presenter\\n\\n  file_placement:\\n    priority: 2\\n    severity: critical\\n    description: Dateien müssen im korrekten Layer liegen\\n    validation:\\n      method: path_role_validation\\n      rules:\\n        - \"*Presenter.php muss in \/app\/Presenter liegen\"\\n        - \"*Controller.php muss in \/src\/Controller liegen\"\\n        - \"*Repository.php muss in \/src\/Infrastructure liegen\"\\n        - \"Entity\/*.php muss in \/src\/Domain liegen\"\\n\\n  import_compliance:\\n    priority: 3\\n    severity: critical\\n    description: Import-Statements müssen Dependency Rules einhalten\\n    validation:\\n      method: static_import_analysis\\n      checks:\\n        - Extrahiere alle use-Statements\\n        - Mappe auf Layer\\n        - Prüfe gegen allowed_imports\\n        - Prüfe gegen forbidden_imports\\n\\n  layer_logic_compliance:\\n    priority: 4\\n    severity: major\\n    description: Code-Inhalte müssen Layer-Rolle entsprechen\\n    validation:\\n      method: code_pattern_analysis\\n      checks:\\n        - Domain enthält keine $_GET, $_POST, $_SESSION\\n        - View enthält keine new-Statements für Services\\n        - Presenter enthält keine SQL-Queries\\n\\n  cycle_detection:\\n    priority: 5\\n    severity: critical\\n    description: Keine zyklischen Abhängigkeiten zwischen Layern\\n    validation:\\n      method: dependency_graph_analysis\\n\\n# =============================================================================\\n# PROHIBITIONS (explizite Verbote)\\n# =============================================================================\\nprohibitions:\\n  - name: presenter_in_src\\n    pattern: \"\/src\/**\/Presenter*.php\"\\n    severity: critical\\n    message: \"Presenter gehören nach \/app\/Presenter, nicht nach \/src\"\\n\\n  - name: controller_in_app\\n    pattern: \"\/app\/**\/Controller*.php\"\\n    severity: critical\\n    message: \"Controller gehören nach \/src\/Controller, nicht nach \/app\"\\n\\n  - name: domain_logic_in_app\\n    indicators:\\n      - \"Business rule implementations\"\\n      - \"Entity definitions\"\\n      - \"Value object definitions\"\\n    severity: critical\\n    message: \"Domain-Logik gehört nach \/src\/Domain\"\\n\\n  - name: infrastructure_in_presenter\\n    indicators:\\n      - \"PDO usage\"\\n      - \"file_get_contents\"\\n      - \"curl calls\"\\n    severity: critical\\n    message: \"Presenter darf nicht direkt auf Infrastructure zugreifen\"\\n\\n# =============================================================================\\n# PASS THRESHOLD\\n# =============================================================================\\npass_threshold:\\n  critical_violations_max: 0\\n  major_violations_max: 2\\n  minor_violations_max: 5\\n\\n  outcome_logic:\\n    - condition: \"critical_violations > 0\"\\n      result: architecture_rejected\\n    - condition: \"major_violations > 2\"\\n      result: revision_required\\n    - condition: \"all within limits\"\\n      result: architecture_approved\\n\\n# =============================================================================\\n# ENFORCEMENT\\n# =============================================================================\\nenforcement:\\n  on_new_file:\\n    rule: \"Datei muss in korrektem Layer-Verzeichnis liegen\"\\n    action: \"BLOCKIERT bei falschem Pfad\"\\n\\n  on_import_change:\\n    rule: \"Neue Imports müssen Dependency Rules einhalten\"\\n    action: \"BLOCKIERT bei forbidden import\"\\n\\n  before_sync_to_prod:\\n    rule: \"Alle Architektur-Checks müssen bestanden sein\"\\n    action: \"KEIN SYNC bei critical violations\"\\n",
        "stderr": "",
        "interrupted": false,
        "isImage": false
    }
}
← Vorheriger Zur Liste Nächster →