엄격한 설정 유효성 검증 (doctor 전용 마이그레이션)

목표

  • 루트 $schema 메타데이터를 제외하고 모든 곳에서 알 수 없는 설정 키 거부 (루트 + 중첩).
  • 스키마 없는 플러그인 설정 거부; 해당 플러그인을 로드하지 않음.
  • 로드 시 레거시 자동 마이그레이션 제거; 마이그레이션은 doctor를 통해서만 실행.
  • 시작 시 doctor (dry-run) 자동 실행; 유효하지 않으면 비진단 명령 차단.

엄격한 유효성 검증 규칙

  • 설정은 모든 수준에서 스키마와 정확히 일치해야 함.
  • 알 수 없는 키는 유효성 검증 오류 (루트나 중첩에서 통과 없음), 단 루트 $schema가 문자열일 때 제외.
  • plugins.entries.<id>.config는 플러그인의 스키마에 의해 유효성 검증되어야 함.
    • 플러그인에 스키마가 없으면 플러그인 로드 거부하고 명확한 오류 표시.

Doctor 흐름

  • 설정이 로드될 때마다 Doctor 실행 (기본 dry-run).
  • 설정이 유효하지 않으면:
    • 요약 + 실행 가능한 오류 출력.
    • 안내: openclaw doctor --fix.

명령 게이팅 (설정이 유효하지 않을 때)

허용됨 (진단 전용):

  • openclaw doctor, openclaw logs, openclaw health, openclaw help, openclaw status, openclaw gateway status

나머지 모든 것은 하드 실패: “Config invalid. Run openclaw doctor --fix.”