Protokoll #4266
| ID | 4266 |
|---|---|
| Zeitstempel | 2025-12-22 09:42:24.590403 |
| 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 | 2,696 (Input: 0, Output: 0) |
| Dauer | 89 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-contracts__contracts_get",
"tool_input": {
"name": "python-pipeline-contract_v1.0"
}
}
Response
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"contract\": {\n \"id\": 6,\n \"uuid\": \"650a0a9e-e57c-4b01-a45b-f94fbc6d3f6c\",\n \"name\": \"python-pipeline-contract_v1.0\",\n \"version\": \"1.0\",\n \"status\": \"active\",\n \"yaml_content\": \"meta:\\n document_type: architecture_contract\\n document_id: python-pipeline-contract\\n normative: true\\n binding: mandatory\\n effective_from: 2025-12-20\\n\\nidentity:\\n name: python-pipeline-contract\\n version: 1.0.0\\n status: active\\n stability: strict\\n changelog:\\n - version: 1.0.0\\n date: 2025-12-20\\n changes:\\n - Initial version\\n - Code style rules (Ruff)\\n - Type hint requirements (mypy)\\n - Docstring requirements\\n - Error handling rules\\n - Import rules\\n - Security rules\\n - Module structure\\n\\nintent:\\n purpose: >\\n Defines mandatory code quality, type safety, and security constraints\\n for Python code in the KI-Pipeline produced by humans or AI systems.\\n goals:\\n - code_quality\\n - type_safety\\n - maintainability\\n - security\\n - consistency\\n\\napplicability:\\n applies_to:\\n - human_authored_code\\n - ai_generated_code\\n runtime:\\n - python_3.13\\n scope:\\n - \/opt\/scripts\/pipeline\/**\/*.py\\n excluded_contexts:\\n - virtual_environment\\n - __pycache__\\n - third_party_libraries\\n\\nauthority:\\n precedence: highest\\n overrides:\\n - coding_guidelines\\n - styleguides\\n conflict_resolution: this_document_wins\\n\\ncompliance:\\n required_for_execution: true\\n violation_policy:\\n on_violation: reject_output\\n remediation: fix_and_recheck\\n partial_compliance: forbidden\\n tools:\\n linting: ruff\\n type_checking: mypy\\n config_file: \/opt\/scripts\/pipeline\/ruff.toml\\n\\nevolution:\\n change_policy:\\n breaking_changes: explicit_version_bump_required\\n silent_behavior_changes: forbidden\\n review_required: true\\n\\naudience:\\n primary:\\n - ai_code_generators\\n - automated_review_systems\\n secondary:\\n - backend_engineers\\n - system_administrators\\n\\nlanguage:\\n version: \\\"3.13\\\"\\n encoding: utf-8\\n line_ending: lf\\n\\ncode_style:\\n formatter: ruff\\n line_length: 120\\n indent:\\n style: space\\n size: 4\\n quotes:\\n style: double\\n docstrings: double\\n trailing_comma: required_multiline\\n blank_lines:\\n after_imports: 2\\n between_functions: 2\\n between_classes: 2\\n\\nimports:\\n sorting:\\n tool: isort\\n order:\\n - standard_library\\n - third_party\\n - first_party\\n - local\\n first_party_modules:\\n - config\\n - db\\n rules:\\n wildcards:\\n status: forbidden\\n example_bad: \\\"from config import *\\\"\\n example_good: \\\"from config import DB_CONFIG, OLLAMA_HOST\\\"\\n relative_imports:\\n status: forbidden\\n example_bad: \\\"from .db import Database\\\"\\n example_good: \\\"from db import Database\\\"\\n unused_imports:\\n status: forbidden\\n exception: \\\"__init__.py\\\"\\n duplicate_imports:\\n status: forbidden\\n\\ntype_hints:\\n enforcement: required\\n tool: mypy\\n rules:\\n function_signatures:\\n status: required\\n includes:\\n - parameters\\n - return_type\\n example: \\\"def process(path: str, verbose: bool = False) -> bool:\\\"\\n return_types:\\n status: required\\n none_explicit: required\\n example_good: \\\"def setup() -> None:\\\"\\n example_bad: \\\"def setup():\\\"\\n parameters:\\n status: required\\n example: \\\"def fetch(url: str, timeout: int = 30) -> dict[str, Any]:\\\"\\n variables:\\n status: optional\\n recommended_when: ambiguous\\n example: \\\"results: list[Document] = []\\\"\\n collections:\\n generic_required: true\\n example_good: \\\"list[str], dict[str, int], tuple[int, ...]\\\"\\n example_bad: \\\"list, dict, tuple\\\"\\n optional:\\n use_pipe_syntax: true\\n example_good: \\\"str | None\\\"\\n example_bad: \\\"Optional[str]\\\"\\n any:\\n status: discouraged\\n allowed_when: truly_dynamic\\n\\ndocstrings:\\n style: google\\n rules:\\n modules:\\n status: required\\n format: single_line\\n example: '\\\"\\\"\\\"Database operations for KI-System Pipeline\\\"\\\"\\\"'\\n classes:\\n status: required\\n content:\\n - description\\n - attributes_if_public\\n example: |\\n \\\"\\\"\\\"MariaDB connection wrapper with document operations.\\n\\n Attributes:\\n connection: Active database connection or None.\\n \\\"\\\"\\\"\\n public_functions:\\n status: required\\n content:\\n - description\\n args_section: optional\\n returns_section: optional\\n example: '\\\"\\\"\\\"Insert a new document and return its ID.\\\"\\\"\\\"'\\n private_functions:\\n status: optional\\n prefix: \\\"_\\\"\\n magic_methods:\\n status: optional\\n\\nerror_handling:\\n rules:\\n bare_except:\\n status: forbidden\\n example_bad: |\\n try:\\n process()\\n except:\\n pass\\n except_exception:\\n status: allowed\\n use_case: top_level_handlers\\n example: |\\n try:\\n process()\\n except Exception as e:\\n logger.error(f\\\"Unexpected error: {e}\\\")\\n raise\\n specific_exceptions:\\n status: preferred\\n example: |\\n try:\\n with open(path) as f:\\n data = f.read()\\n except FileNotFoundError:\\n logger.warning(f\\\"File not found: {path}\\\")\\n return None\\n except PermissionError:\\n logger.error(f\\\"Permission denied: {path}\\\")\\n raise\\n silent_failures:\\n status: forbidden\\n rule: always_log_or_raise\\n exception_chaining:\\n status: recommended\\n example: \\\"raise ProcessingError(f'Failed: {path}') from e\\\"\\n\\nsecurity:\\n rules:\\n hardcoded_credentials:\\n status: forbidden\\n detection: ruff_B105\\n example_bad: 'password = \\\"secret123\\\"'\\n example_good: 'password = os.environ.get(\\\"DB_PASSWORD\\\")'\\n eval_exec:\\n status: forbidden\\n detection: ruff_S307\\n includes:\\n - eval\\n - exec\\n - compile\\n sql_injection:\\n status: forbidden\\n rule: use_parameterized_queries\\n example_bad: 'cursor.execute(f\\\"SELECT * FROM users WHERE id = {user_id}\\\")'\\n example_good: 'cursor.execute(\\\"SELECT * FROM users WHERE id = %s\\\", (user_id,))'\\n path_traversal:\\n status: forbidden\\n rule: validate_paths\\n recommendation: use_pathlib\\n subprocess:\\n status: restricted\\n shell_equals_true: forbidden\\n example_bad: 'subprocess.run(cmd, shell=True)'\\n example_good: 'subprocess.run([\\\"ls\\\", \\\"-la\\\"], check=True)'\\n credentials_source:\\n allowed:\\n - environment_variables\\n - credentials_file\\n forbidden:\\n - source_code\\n - config_constants\\n\\nmodule_structure:\\n root: \/opt\/scripts\/pipeline\\n layout:\\n config:\\n file: config.py\\n purpose: All configuration values\\n rules:\\n - single_source_of_truth\\n - no_hardcoded_secrets\\n database:\\n file: db.py\\n purpose: Database operations\\n rules:\\n - only_module_with_db_access\\n - parameterized_queries_only\\n pipeline:\\n file: pipeline.py\\n purpose: Orchestration\\n rules:\\n - coordinates_other_modules\\n - no_direct_db_access\\n processors:\\n files:\\n - detect.py\\n - extract.py\\n - chunk.py\\n - embed.py\\n - analyze.py\\n purpose: Data processing stages\\n rules:\\n - single_responsibility\\n - pure_functions_preferred\\n ai:\\n files:\\n - generate.py\\n - chat.py\\n purpose: AI\/LLM integration\\n rules:\\n - retry_logic_required\\n - timeout_handling_required\\n web:\\n files:\\n - web_chat.py\\n - web_generate.py\\n purpose: Flask integration\\n rules:\\n - thin_wrappers_only\\n - no_business_logic\\n\\ndependencies:\\n allowed:\\n standard_library:\\n - os\\n - sys\\n - json\\n - hashlib\\n - pathlib\\n - logging\\n - datetime\\n - typing\\n - dataclasses\\n third_party:\\n - mysql.connector\\n - qdrant_client\\n - requests\\n - anthropic\\n - flask\\n - pypdf\\n - python-docx\\n - python-pptx\\n - pytesseract\\n forbidden:\\n - pickle # security risk\\n - marshal # security risk\\n\\nlogging:\\n library: logging\\n rules:\\n print_statements:\\n status: discouraged\\n allowed_in: cli_scripts\\n log_levels:\\n debug: development_info\\n info: normal_operations\\n warning: recoverable_issues\\n error: failures\\n critical: system_failures\\n format:\\n include:\\n - timestamp\\n - level\\n - message\\n example: \\\"%(asctime)s - %(levelname)s - %(message)s\\\"\\n\\ntesting:\\n framework: pytest\\n rules:\\n naming:\\n files: \\\"test_*.py\\\"\\n functions: \\\"test_*\\\"\\n location: \/opt\/scripts\/pipeline\/tests\/\\n coverage:\\n target: 70\\n critical_modules:\\n - db.py\\n - config.py\\n\\nruff_rules:\\n select:\\n - E # pycodestyle errors\\n - W # pycodestyle warnings\\n - F # Pyflakes\\n - I # isort\\n - B # flake8-bugbear\\n - C4 # flake8-comprehensions\\n - UP # pyupgrade\\n - SIM # flake8-simplify\\n - S # flake8-bandit (security)\\n - D100 # missing docstring in module\\n - D101 # missing docstring in class\\n - D102 # missing docstring in public method\\n - D103 # missing docstring in public function\\n ignore:\\n - E501 # line too long (handled by formatter)\\n - E402 # module level import not at top\\n - B008 # function call in default argument\\n - B905 # zip without strict\\n - SIM108 # ternary operator\\n - D105 # missing docstring i... [TRUNCATED-aee44df8eb16168e]"
}
]
}