Strikte Konfigurationsvalidierung (nur-Doctor-Migrationen)

Ziele

  • Unbekannte Config-Keys ueberall ablehnen (Root + verschachtelt), ausser Root-$schema-Metadaten.
  • Plugin-Config ohne Schema ablehnen; dieses Plugin nicht laden.
  • Legacy-Auto-Migration beim Laden entfernen; Migrationen laufen nur via Doctor.
  • Doctor (Dry-Run) beim Start automatisch ausfuehren; bei ungueltiger Config nicht-diagnostische Befehle blockieren.

Nicht-Ziele

  • Abwaertskompatibilitaet beim Laden (Legacy-Keys migrieren nicht automatisch).
  • Stilles Verwerfen unerkannter Keys.

Strikte Validierungsregeln

  • Config muss auf jeder Ebene exakt dem Schema entsprechen.
  • Unbekannte Keys sind Validierungsfehler, ausser Root-$schema wenn es ein String ist.
  • plugins.entries.<id>.config muss durch das Plugin-Schema validiert werden. Fehlt ein Schema, Plugin-Laden blockieren mit klarem Fehler.
  • Plugin-Manifeste (openclaw.plugin.json) sind fuer alle Plugins erforderlich.

Doctor-Flow

  • Doctor laeuft bei jedem Config-Laden (Standard: Dry-Run).
  • Bei ungueltiger Config: Zusammenfassung + handlungsfaehige Fehler ausgeben. Anweisung: openclaw doctor --fix.
  • openclaw doctor --fix: Migrationen anwenden, unbekannte Keys entfernen, aktualisierte Config schreiben.

Befehlsgating (bei ungueltiger Config)

Erlaubt (nur diagnostisch): openclaw doctor, logs, health, help, status, gateway status. Alles andere muss hart fehlschlagen: “Config invalid. Run openclaw doctor --fix.”

Tests

  • Unbekannter Key Ablehnung (Root + verschachtelt).
  • Plugin ohne Schema -> Plugin-Laden blockiert mit klarem Fehler.
  • Ungueltige Config -> Gateway-Start blockiert ausser diagnostische Befehle.
  • Doctor-Dry-Run auto; doctor --fix schreibt korrigierte Config.