Validación estricta de configuración (migraciones solo por doctor)

Objetivos

  • Rechazar claves de configuración desconocidas en todas partes (raíz + anidadas), excepto metadatos $schema en la raíz.
  • Rechazar configuración de plugins sin esquema; no cargar ese plugin.
  • Eliminar la auto-migración legacy al cargar; las migraciones se ejecutan solo vía doctor.
  • Auto-ejecutar doctor (dry-run) al inicio; si es inválida, bloquear comandos no diagnósticos.

No objetivos

  • Compatibilidad hacia atrás al cargar (las claves legacy no se auto-migran).
  • Drops silenciosos de claves no reconocidas.

Reglas de validación estricta

  • La configuración debe coincidir con el esquema exactamente en cada nivel.
  • Las claves desconocidas son errores de validación (sin passthrough en raíz o anidadas), excepto $schema en la raíz cuando es un string.
  • plugins.entries.<id>.config debe validarse contra el esquema del plugin.
    • Si un plugin carece de esquema, rechazar la carga del plugin y mostrar un error claro.

Flujo de doctor

  • Doctor se ejecuta cada vez que se carga la configuración (dry-run por defecto).
  • Si la configuración es inválida: imprimir resumen + errores accionables e instruir: openclaw doctor --fix.
  • openclaw doctor --fix: aplica migraciones, elimina claves desconocidas, escribe configuración actualizada.

Bloqueo de comandos (cuando la configuración es inválida)

Permitidos (solo diagnósticos): openclaw doctor, openclaw logs, openclaw health, openclaw help, openclaw status, openclaw gateway status.

Todo lo demás debe fallar con: “Config invalid. Run openclaw doctor --fix.”