betriebsdokumentation-pruefung_v1.1

ID 1
UUID 33e181bd-07a0-435d-941d-b23474c41ab9
Version 1.0
Status active
Scope
Erstellt 2025-12-20 10:59:58 von migration
Aktualisiert 2025-12-20 10:59:58

YAML-Inhalt

# =============================================================================
# BETRIEBSDOKUMENTATION VALIDATION CONTRACT
# =============================================================================
# Normatives Dokument zur Validierung von Server- und Betriebsdokumentation
# Version: 1.1.0
# Erstellt: 2025-12-20
# =============================================================================

meta:
  document_type: operations_documentation_validation_contract
  normative: true
  binding: mandatory
  created: 2025-12-20
  updated: 2025-12-20
  author: system_generated_under_supervision
  supersedes: betriebsdokumentation-pruefung_v1.0.yaml

identity:
  name: betriebsdokumentation_validation
  version: 1.1.0
  status: active

# =============================================================================
# SCOPE (technisch definiert)
# =============================================================================
scope:
  document_format: php_html
  file_extension: .php

  applies_to_paths:
    - /var/www/dev.campus.systemische-tools.de/src/View/docs/**/*.php
    - /var/www/prod.campus.systemische-tools.de/src/View/docs/**/*.php

  platform:
    os: Debian GNU/Linux 13 (trixie)
    init_system: systemd
    shell: bash
    web_server: Apache 2.4
    privileges_required: root

  excludes_paths:
    - "**/layout.php"
    - "**/partials/**"

# =============================================================================
# SEVERITY LEVELS (mit abgeleiteten Actions)
# =============================================================================
severity_levels:
  critical:
    description: Dokumentation ist faktisch falsch oder gefährlich
    action: reject_document
    examples:
      - Falscher Dateipfad für Konfiguration
      - Befehl mit falscher Syntax
      - Falsche Portnummer für Dienst

  major:
    description: Dokumentation ist unvollständig oder veraltet
    action: flag_for_revision
    examples:
      - Fehlende Einleitung
      - Veraltete Versionsnummer
      - Fehlender wichtiger Befehl

  minor:
    description: Kosmetische oder stilistische Probleme
    action: log_only
    examples:
      - Inkonsistente Formatierung
      - Fehlender Breadcrumb
      - Uneinheitliche Begriffe

# Action wird IMMER aus severity abgeleitet:
# critical -> reject_document
# major -> flag_for_revision
# minor -> log_only

# =============================================================================
# PASS THRESHOLD (explizite Operatoren)
# =============================================================================
pass_threshold:
  critical_violations_max: 0      # 0 erlaubt, ab 1 rejected
  major_violations_max: 2         # 0-2 erlaubt, ab 3 revision required
  minor_violations_max: 5         # 0-5 erlaubt, ab 6 approved with notes

  outcome_logic:
    - condition: "critical_violations > 0"
      result: document_rejected
    - condition: "major_violations > 2"
      result: revision_required
    - condition: "minor_violations > 5"
      result: approved_with_notes
    - condition: "all within limits"
      result: document_approved

# =============================================================================
# VALIDATION FACTORS
# =============================================================================
validation_factors:

  path_existence:
    priority: 1
    severity: critical
    # Action: reject_document (abgeleitet aus severity)
    description: Alle dokumentierten Dateipfade müssen auf dem System existieren.
    validation:
      method: filesystem_verification
      scope: "Pfade in <td> und <code> Tags, die mit / beginnen"
      verification_approach: "Prüfung ob Datei oder Verzeichnis existiert"
      excludes:
        - Platzhalter wie {name}, PORT, PASSWORD
        - Relative Pfade
        - URLs
    examples:
      valid:
        - "/etc/ssh/sshd_config.d/99-custom.conf"
        - "/opt/scripts/backup.sh"
      invalid:
        - "/etc/ssh/custom.conf"  # Existiert nicht

  command_validity:
    priority: 2
    severity: critical
    # Action: reject_document (abgeleitet aus severity)
    description: Dokumentierte Befehle müssen syntaktisch plausibel sein.
    validation:
      method: syntactic_plausibility_check
      scope: "Befehle in <pre><code> Blöcken"
      checks:
        - Befehlsname ist ein bekanntes Executable oder Builtin
        - Keine offensichtlichen Tippfehler
        - Grundlegende Optionssyntax (-- oder -)
      does_not_check:
        - Funktionale Korrektheit zur Laufzeit
        - Alle möglichen Optionskombinationen
        - Exit-Codes
    examples:
      valid:
        - "systemctl status apache2"
        - "certbot renew --dry-run"
      invalid:
        - "systemctl status apche2"  # Tippfehler
        - "cerbot renew"  # Falscher Befehlsname

  service_accuracy:
    priority: 3
    severity: critical
    # Action: reject_document (abgeleitet aus severity)
    description: Dienst-Informationen müssen mit laufendem System übereinstimmen.
    platform_requirement: "Debian 13 mit Systemd, Root-Rechte"
    validation:
      method: service_state_verification
      checks:
        port:
          description: "Dokumentierter Port muss vom Dienst genutzt werden"
          tolerance: none
        version:
          description: "Major.Minor Version muss stimmen"
          tolerance: patch_version  # 8.4.x ist ok wenn 8.4 dokumentiert
        status:
          description: "Dokumentierter Status muss aktuell sein"
          tolerance: none

  config_correctness:
    priority: 4
    severity: major
    # Action: flag_for_revision (abgeleitet aus severity)
    description: Konfigurationsbeispiele müssen mit echten Dateien übereinstimmen.
    validation:
      method: config_comparison
      scope: "Konfig-Blöcke in <pre><code> mit referenziertem Dateipfad"
      tolerance:
        whitespace: ignore
        comments: ignore
        order: flexible
      allowed_placeholders:
        - "{{REDACTED}}"
        - "PASSWORD"
        - "SECRET"
        - "your-value-here"
      note: "Dokumentation darf bewusst reduzierte oder anonymisierte Konfigs zeigen"

  structure_compliance:
    priority: 5
    severity: major
    # Action: flag_for_revision (abgeleitet aus severity)
    description: Module müssen die PHP/HTML-Strukturvorgaben einhalten.
    format: php_html
    required_elements:
      breadcrumb:
        element: "nav.breadcrumb"
        contains: "Links zu /docs und Kategorie"
      title:
        element: "h1"
        content: "Modulname"
      introduction:
        element: "p"
        position: "Direkt nach h1"
        content: "1-2 Sätze Erklärung"
      info_table:
        element: "table"
        contains: "Mindestens Version/Port/Pfad"
      commands:
        element: "pre > code"
        content: "Wichtigste Verwaltungsbefehle"
    optional_elements:
      - "h2 Subsections"
      - "Zusätzliche Tabellen"
      - "Listen (ul/ol)"

  link_integrity:
    priority: 6
    severity: major
    # Action: flag_for_revision (abgeleitet aus severity)
    description: Interne Links müssen zu existierenden Routen führen.
    validation:
      method: route_verification
      scope: 'href Attribute die mit "/docs" beginnen'
      checks:
        - Route existiert im DocsController
        - Ziel-View-Datei existiert

  terminology:
    priority: 7
    severity: minor
    # Action: log_only (abgeleitet aus severity)
    description: Begriffe im Fließtext sollten einheitlich sein.
    validation:
      method: terminology_consistency
      scope: "Nur Fließtext (p, li), NICHT code, pre, td mit Pfaden"
      preferred_terms:
        - prefer: "Dienst"
          avoid: "Service"
          context: "Fließtext"
        - prefer: "Befehl"
          avoid: "Command"
          context: "Fließtext"
      exceptions:
        - "Service in englischen Eigennamen (systemd service)"
        - "Technische Begriffe in Code-Kontexten"

# =============================================================================
# ENFORCEMENT (harte Regeln)
# =============================================================================
enforcement:
  on_sync_to_prod:
    rule: "BLOCKIERT bei critical_violations > 0"
    process:
      1: "Validierung vor /opt/scripts/sync-dev-prod.sh"
      2: "Bei critical violation: Sync wird NICHT ausgeführt"
      3: "Fehler müssen erst behoben werden"

  on_new_module:
    rule: "Alle required_elements aus structure_compliance müssen vorhanden sein"

  periodic_review:
    frequency: monthly
    scope: all_modules
    focus: "service_accuracy (Versionen, Ports)"

# =============================================================================
# REPORT TEMPLATE (empfohlen, nicht normativ)
# =============================================================================
report_template:
  note: "Dieses Template ist eine Empfehlung, keine Pflicht"
  fields:
    - module_name
    - validation_date
    - critical_count
    - major_count
    - minor_count
    - outcome
    - findings_list

Aktionen

Bearbeiten

← Zurück zur Übersicht