本文件只整理 5B config schema 的邊界、候選檔案、設定欄位草案、測試策略與停止線。5B 會影響設定契約,因此在使用者完成七項確認前,不修改程式 repo。
0. 文件狀態
| 項目 | 內容 |
| 文件狀態 | 已建立,等待 5B 七項確認 |
| 建立日期 | 2026-06-07 |
| 對應節點 | 第五階段 5B config schema |
| 程式基準 | bc3f191,外部 DLL manual-only fake verifier |
| 本次是否修改程式 repo | 否,只做唯讀檢查與文件整理 |
1. 5B 目標
| 目標 | 說明 |
| 固定 plugin / loader 設定位置 | 建議放在 appsettings.json,避免新增啟動檔案或改變啟動方式。 |
| 建立安全預設值 | 預設不掃描 plugin folder、不載入外部 DLL、不允許 manual external verification。 |
| 補上 validator | 缺少必要欄位、欄位型別錯誤、不安全摘要或不合法版本需回傳標準 config validation error。 |
| 保留舊設定相容性 | 現有 samples/config/appsettings.json 不含 plugin 設定時,仍應可載入既有流程。 |
2. 唯讀檢查結果
| 檢查項目 | 結果 |
| 現有 config loader | ConfigLoader 只載入 devices.json、workflows.json、appsettings.json。 |
| 現有 appsettings model | AppSettingsConfig 目前只有 Log、Debug、Watchdog。 |
| 現有 validator | ConfigValidator 尚未驗證 PluginLoader / Plugins。 |
| DB / WebApi / ServiceHost | 5B 不需要修改 DB、WebApi、ServiceHost 或 Windows Service。 |
3. 建議 schema 草案
{
"PluginLoader": {
"Enabled": false,
"ExpectedContractVersion": "1.0",
"ExpectedChecksum": "",
"AllowDisabledPluginReview": false,
"AllowManualExternalDllVerification": false
},
"Plugins": [
{
"PluginId": "mock-light-plugin",
"DisplayName": "Mock Light Plugin",
"ContractVersion": "1.0",
"Checksum": "metadata-checksum",
"SourceSummary": "built-in metadata sample",
"Enabled": true,
"DisabledReason": "",
"Capabilities": [
{
"CapabilityId": "light-command",
"DeviceType": "Light",
"CommandName": "LightOn"
}
]
}
]
}
4. 明確排除
- 不載入外部 DLL。
- 不掃描 plugin folder。
- 不新增真實 DLL path 欄位。
- 不保存 secret、token、connection string、正式 IP、正式 port 或正式帳號。
- 不建立 DB audit table,不執行 DDL / ALTER TABLE / Apply。
- 不修改 WebApi route、auth 或 Swagger。
- 不修改 ServiceHost 或 Windows Service。
- 不改 Adapter public contract。
5. 下一步
請先確認 5B config schema 實作前確認表 七項。確認前,只能停留在文件與唯讀檢查;確認後才可進入程式 repo 的最小 config schema 實作。