5A PluginLoader 實作前確認表
本文件承接 4E 後續功能節點決策確認表。使用者已確認 4E 七項決策,因此本節點正式進入 5A PluginLoader 實作前確認。
本文件仍不是程式實作授權。完成本文件確認前,不得建立 IPluginLoader public contract、不得建立真正 Loader、不得掃描 plugin folder、不得載入外部 DLL、不得修改 config schema、不得建立 DB audit table、不得導入 WebApi auth / Swagger,也不得建立 Windows Service。
0. 文件狀態
| 項目 | 內容 |
| 文件狀態 | 已建立,待使用者確認 |
| 建立日期 | 2026-06-07 |
| 對應節點 | 5A PluginLoader 安全模型與最小 Loader |
| 前置確認 | 4E 七項決策皆已同意 |
| 程式 repo 基準 | a8b522b main 已合併 poc/nmodbus-tcp;4D 功能基準為 6f34bb9 |
| 本文件目的 | 固定 5A 的最小實作範圍、候選檔案、測試策略、停止線與七項確認 |
| 是否啟用程式修改 | 否,需等使用者確認本文件七項決策後再評估 |
1. 4E 確認紀錄
使用者已確認 4E 七項決策皆同意。
2. 5A 定位
| 原則 | 說明 |
| 先 contract,再 implementation | 若要建立 IPluginLoader,需先確認 request / result / state / error 語意。 |
| 最小 Loader 不等於外部 DLL 載入 | 5A 第一版建議只做 metadata-only / catalog-driven loader 驗證,不執行 assembly loading。 |
| 外部 DLL 另走 manual-only | 測試 DLL、隔離資料夾、checksum / signature 與來源白名單需另行確認,不進一般 CI。 |
| 不擴大到 config / DB / auth / service | 5A 不修改 config schema、不建 audit table、不改 WebApi auth、不改 Windows Service。 |
| Application 層優先 | 5A 第一版建議承接既有 Application plugin contract,不進 Core、不改 Adapter。 |
3. 候選範圍與停止線
| 類型 | 候選內容 | 邊界 |
| Loader public contract | IPluginLoader、PluginLoadRequest、PluginLoadResult、PluginLoaderOptions | 不包含外部 DLL 載入 API,不保證執行 plugin。 |
| Metadata-only loader | 以既有 PluginDescriptor / catalog 資料做驗證與狀態轉換 | 不掃描正式 plugin folder,不讀未知 DLL。 |
| Trust policy model | 來源、contract version、checksum、enabled / disabled、人工核准摘要 | 只做 model / validation,不保存正式路徑或 secret。 |
| Tests | Application.Tests 的 unit tests | 不跑外部 DLL、不跑 DB manual-only、不改部署設定。 |
4. 明確不做
不載入外部 DLL、不呼叫 Assembly.Load / LoadFrom / LoadFile、不掃描正式 plugin folder、不修改 config schema、不建立 DB audit table、不修改 WebApi auth / Swagger、不建立 Windows Service、不接真實硬體或案場 plugin。
5. 5A 七項確認
| 編號 | 決策項 | 建議 | 同意後後續動作 |
| 1 | 5A 第一版是否只做 metadata-only / catalog-driven 最小 Loader | 同意 | 不直接載入 DLL,先固定 Loader request / result / state。 |
| 2 | 是否允許在 Application 層建立 IPluginLoader 最小 public contract | 同意 | 後續程式修改可新增 contract,但不得含外部 DLL 載入方法。 |
| 3 | 是否保留外部 DLL 載入為獨立 manual-only 驗證 | 同意 | 不在一般 CI 載入 DLL,不使用未知來源 DLL。 |
| 4 | 是否延後 config schema 修改到 5B | 同意 | 5A 不新增 plugin path / trust policy / service install 設定欄位。 |
| 5 | 是否延後 DB audit table 到 5C | 同意 | 5A 可保留 audit summary model,不執行 DDL / ALTER TABLE / Apply。 |
| 6 | 是否不修改 WebApi auth / Swagger / Windows Service | 同意 | WebApi 安全留 5D,Windows Service 留 5E。 |
| 7 | 是否先做程式 repo 唯讀結構檢查與 stage / commit 前確認 | 同意 | 實作前先回報候選檔案、測試命令與停止線。 |
6. 建議使用者回覆格式
5A PluginLoader 實作前確認:
1. 同意
2. 同意
3. 同意
4. 同意
5. 同意
6. 同意
7. 同意
7. 建議下一步
請使用者確認 5A 七項決策。確認後,才進入程式 repo 唯讀結構檢查與 5A 最小 PluginLoader 實作評估。