4D PluginLoader 決策確認表
本文件承接 4D PluginLoader 邊界分析,把 4D 進入 PluginLoader contract 草案或任何程式實作前必須確認的 7 項決策整理成可逐項回覆的確認表。
本文件記錄使用者已同意 4D 七項文件型決策;此同意只代表可進入 PluginLoader contract 草案 / 實作前確認表,不代表已同意建立 PluginLoader、建立 IPluginLoader public contract、掃描 plugin folder、載入外部 DLL、執行外部程式碼、修改 IDeviceAdapter public contract、修改 config schema、導入 plugin framework、保存正式 DLL 路徑、接真實硬體、執行正式 DB DDL 或改變程式啟動方式。
0. 確認狀態
| 項目 | 內容 |
| 文件狀態 | 已確認 |
| 整理日期 | 2026-06-06 |
| 確認日期 | 2026-06-06 |
| 對應階段 | 第四階段 4D PluginLoader |
| 前置文件 | 4D PluginLoader 邊界分析 |
| 程式基準 commit | a846212 新增 4C ServiceHost 第一版與驗收測試 |
| 本次確認範圍 | trust model、metadata contract、來源白名單、checksum、版本相容、Adapter contract、ServiceHost lifecycle、停止線 |
| 本次仍不做 | 不建立 Loader、不載入 DLL、不掃描 plugin folder、不改 Adapter / config / DB、不接真實硬體 |
1. 建議確認方式
4D 決策確認:
1. 同意
2. 同意
3. 同意
4. 同意
5. 同意
6. 同意
7. 同意
備註:若有需要調整的項目,請寫在這裡。
2. 七項決策確認表
| 編號 | 決策項 | 建議定案 | 若同意的影響 | 若不同意需補充 |
| 1 | 4D 第一版先做 trust model / metadata contract | 先整理 PluginLoader contract 草案與實作前確認,不建立實際 Loader、不載入 DLL。 | 可安全固定來源信任、版本、狀態、錯誤與 audit 語意。 | 需說明是否要直接建立 Loader 或載入測試 DLL,並列出風險控管。 |
| 2 | 沿用 3D Plugin metadata 起點 | 以 3D PluginDescriptor、PluginCapabilityDescriptor、IPluginCatalogService 作為 metadata 起點。 | 可延續既有 Application contract,不重複發明 plugin metadata。 | 需說明新的 metadata model 與既有 3D contract 如何相容。 |
| 3 | 信任來源與驗證規則 | 第一版需定義來源白名單、checksum、版本相容與人工核准欄位。 | 可避免任意 DLL 或未知來源被視為可載入。 | 需說明哪些來源可被信任,以及不做 checksum / 白名單時的替代保護。 |
| 4 | Adapter public contract 不變 | 4D 不修改 IDeviceAdapter public contract,未來 plugin 也需經 Adapter / dispatcher 邊界承接。 | 可避免外部 plugin 破壞既有 Core / Adapter 分層。 | 需說明為何需要改 Adapter contract,以及相容與測試策略。 |
| 5 | Loader lifecycle 由 ServiceHost 承接 | 未來 Loader lifecycle 應由 4C ServiceHost 或受控背景入口組裝,不由 WebApi Controller 直接載入 DLL。 | 可維持 WebApi / ServiceHost 分責,降低 HTTP request 直接執行外部程式碼風險。 | 需說明若由 WebApi 載入,如何處理權限、重啟、隔離與錯誤回復。 |
| 6 | 本輪不改 config schema / 不保存正式路徑 | 只整理候選欄位,不修改 config schema,不保存正式 DLL path、IP、Port 或 token。 | 可避免未成熟 plugin schema 變成正式契約,也避免敏感資訊進 repo。 | 需說明要修改哪些 schema 欄位,以及敏感資訊保存與回復策略。 |
| 7 | 停止線維持 | 所有 Loader 實作、外部 DLL 測試、真實硬體、DB audit 寫入、plugin framework 套件導入都需另行確認。 | 可先完成文件與 contract 草案,不跨過高風險執行邊界。 | 需明確列出允許突破的停止線、驗證方式與回復策略。 |
3. 本次確認結果
| 編號 | 決策項 | 確認結果 |
| 1 | 4D 第一版先做 trust model / metadata contract | 已同意 |
| 2 | 沿用 3D Plugin metadata 起點 | 已同意 |
| 3 | 信任來源與驗證規則 | 已同意 |
| 4 | Adapter public contract 不變 | 已同意 |
| 5 | Loader lifecycle 由 ServiceHost 承接 | 已同意 |
| 6 | 本輪不改 config schema / 不保存正式路徑 | 已同意 |
| 7 | 停止線維持 | 已同意 |
4. 確認後可進入的工作
| 順序 | 工作 | 範圍 |
| 1 | 4D 決策確認結果回填 | 已完成,使用者已同意 1 至 7 項決策。 |
| 2 | 4D PluginLoader contract 草案 / 實作前確認表 | 固定 metadata、verification result、state、audit、候選檔案、測試策略與停止線。 |
| 3 | 程式 repo 唯讀結構檢查 | 盤點 Application.Plugins、ServiceHost、Adapter dispatcher、config schema 與測試專案。 |
| 4 | 最小 contract 實作評估 | 只在使用者確認後,評估是否新增 verification / state / audit contract。 |
| 5 | Loader 實作評估 | 需另行確認來源、簽章、checksum、隔離、卸載與測試 DLL;不得由本表自動授權。 |
5. 仍需停止的項目
- 不建立
PluginLoader程式。 - 不建立
IPluginLoaderpublic contract。 - 不掃描 plugin folder。
- 不載入外部 DLL。
- 不呼叫
Assembly.Load、LoadFrom、LoadFile或類似 API。 - 不執行外部 plugin 程式碼。
- 不新增或更換 plugin framework / DI framework / sandbox 套件。
- 不修改
IDeviceAdapterpublic contract。 - 不修改既有 public method 簽章。
- 不修改
devices.json、workflows.json、appsettings.jsonschema。 - 不保存密碼、Token、IP、Port、完整 connection string、正式 DLL 路徑或正式環境資訊。
- 不執行 DB 寫入、DDL、ALTER TABLE 或正式 Apply。
- 不接真實硬體或案場客製 plugin。
6. 建議下一步
七項確認已完成。建議下一步整理 4D PluginLoader contract 草案 / 實作前確認表,並在進入任何程式修改前再次回報預計新增 / 修改檔案與原因。