厳格な設定バリデーション(doctorのみの移行)
目標
- ルート
$schemaメタデータを除き、すべての場所で未知の設定キーを拒否(ルート+ネスト)。 - スキーマなしのプラグイン設定を拒否し、そのプラグインをロードしない。
- ロード時のレガシー自動移行を削除。移行はdoctor経由のみ。
- 起動時にdoctor(ドライラン)を自動実行。無効な場合、診断コマンド以外をブロック。
非目標
- ロード時の後方互換性(レガシーキーは自動移行しない)。
- 認識されないキーのサイレントドロップ。
厳格なバリデーションルール
- 設定はすべてのレベルでスキーマと正確に一致しなければならない。
- 未知のキーはバリデーションエラー。ただしルートの
$schemaが文字列の場合を除く。 plugins.entries.<id>.configはプラグインのスキーマでバリデーション。スキーマがないプラグインはロードを拒否。
Doctorフロー
- 設定ロード時に毎回Doctor実行(デフォルトはドライラン)。
- 設定が無効な場合:
openclaw doctor --fixの実行を指示。 openclaw doctor --fix: 移行適用、未知キー削除、更新設定の書き込み。
コマンドゲーティング(設定無効時)
許可(診断のみ): openclaw doctor、openclaw logs、openclaw health、openclaw help、openclaw status、openclaw gateway status。
それ以外はすべて「Config invalid. Run openclaw doctor --fix.」でハードフェイル。