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
$schemaen 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
$schemaen la raíz cuando es un string. plugins.entries.<id>.configdebe 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.”