4D Application plugin contract commit / push 前確認
本文件整理程式 repo poc/nmodbus-tcp 在提交 新增 4D 最小 Application plugin contract 前的變更範圍、測試證據、停止線與建議 commit 訊息,並補充實際 stage / commit / push / Actions 查驗結果。
本文件不代表同意建立真正 PluginLoader、IPluginLoader、plugin folder 掃描、外部 DLL 載入、config schema、Adapter contract 或 DB audit table。
0. 確認摘要
| 項目 | 內容 |
| 確認日期 | 2026-06-06 |
| 程式 repo | hs-device-control-template |
| 程式 branch | poc/nmodbus-tcp |
| 前一已提交基準 | a846212 新增 4C ServiceHost 第一版與驗收測試 |
| 4D commit 狀態 | 已 commit:6f34bb9 新增 4D 最小 Application plugin contract |
| push 狀態 | 已 push 至 origin/poc/nmodbus-tcp |
| GitHub Actions | Run 27064992270 success |
| 決策來源 | 4D 最小 contract 確認 七項皆同意 |
| 建議動作 | 同步文件 repo 的 4D 紀錄、status.json、progress.json 與 public mirror |
1. 程式 repo 變更範圍
建議本次程式 repo stage 僅納入下列 4D 最小 Application plugin contract 相關檔案。
| 類型 | 檔案 |
| 修改 | src/HS.DeviceControl.Application/Common/ApplicationErrorCodes.cs |
| 修改 | src/HS.DeviceControl.Application/Plugins/PluginCatalogService.cs |
| 修改 | src/HS.DeviceControl.Application/Plugins/PluginDescriptor.cs |
| 修改 | tests/HS.DeviceControl.Application.Tests/PluginCatalogServiceTests.cs |
| 新增 | src/HS.DeviceControl.Application/Plugins/PluginLoadState.cs |
| 新增 | src/HS.DeviceControl.Application/Plugins/PluginVerificationCheck.cs |
| 新增 | src/HS.DeviceControl.Application/Plugins/PluginVerificationResult.cs |
| 新增 | src/HS.DeviceControl.Application/Plugins/PluginAuditRecord.cs |
| 新增 | src/HS.DeviceControl.Application/Plugins/PluginContractTextSafety.cs |
| 新增 | tests/HS.DeviceControl.Application.Tests/PluginVerificationResultTests.cs |
| 新增 | tests/HS.DeviceControl.Application.Tests/PluginAuditRecordTests.cs |
| 未納入 | Core、Adapters、WebApi、ServiceHost、Infrastructure、config schema、DB DDL、外部 DLL |
2. 已完成驗證
| 驗證項目 | 結果 |
| Application tests | dotnet test tests\HS.DeviceControl.Application.Tests\HS.DeviceControl.Application.Tests.csproj:40 passed,0 failed。 |
| sandbox 內初次重跑 | 因 NuGet AppData lock 中止,不是測試 assertion 失敗;已用授權外部執行重跑通過。 |
| solution tests | dotnet test HS.DeviceControl.sln:492 passed,0 failed。 |
| Loader / DLL 停止線掃描 | Assembly.Load、LoadFrom(、LoadFile(、IPluginLoader、class PluginLoader 無命中。 |
git diff --check | 無 whitespace error;僅有 Windows LF / CRLF 提醒。 |
| 文件 repo JSON | progress.json、status.json 與 public/ 對應檔案可解析。 |
| 文件 repo public hash | source 與 public mirror hash 比對通過。 |
| 污染字串掃描 | 未命中既定污染字串。 |
3. 停止線確認
| 停止線 | 是否符合 |
不建立真正 PluginLoader | 符合 |
不建立 IPluginLoader public contract | 符合 |
| 不掃描 plugin folder | 符合 |
| 不載入外部 DLL | 符合 |
| 不執行外部 plugin 程式碼 | 符合 |
| 不修改 Adapter public contract | 符合 |
| 不修改 config schema | 符合 |
| 不新增 WebApi route / controller | 符合 |
| 不修改 ServiceHost lifecycle | 符合 |
| 不新增 DB table、DDL、ALTER TABLE 或 Apply | 符合 |
| 不新增 NuGet package 或更換核心框架 | 符合 |
4. 建議 stage 指令
建議使用精準路徑 stage,避免納入非 4D 變更。
git add `
src/HS.DeviceControl.Application/Common/ApplicationErrorCodes.cs `
src/HS.DeviceControl.Application/Plugins/PluginCatalogService.cs `
src/HS.DeviceControl.Application/Plugins/PluginDescriptor.cs `
src/HS.DeviceControl.Application/Plugins/PluginLoadState.cs `
src/HS.DeviceControl.Application/Plugins/PluginVerificationCheck.cs `
src/HS.DeviceControl.Application/Plugins/PluginVerificationResult.cs `
src/HS.DeviceControl.Application/Plugins/PluginAuditRecord.cs `
src/HS.DeviceControl.Application/Plugins/PluginContractTextSafety.cs `
tests/HS.DeviceControl.Application.Tests/PluginCatalogServiceTests.cs `
tests/HS.DeviceControl.Application.Tests/PluginVerificationResultTests.cs `
tests/HS.DeviceControl.Application.Tests/PluginAuditRecordTests.cs
stage 後建議再執行:
git diff --cached --check
git status --short --branch
5. 建議 commit 訊息
新增 4D 最小 Application plugin contract
- 新增 plugin state、verification result、audit record 與安全摘要 helper
- 擴充 PluginDescriptor 與 PluginCatalogService metadata 驗證
- 補 APP-033x 錯誤碼與 Application.Tests
- 保留 Loader、DLL、config、Adapter、DB 停止線
6. 建議執行順序
- 先依本文件精準 stage 程式 repo 4D 檔案。
- 執行
git diff --cached --check與git status --short --branch。 - 確認 staged 範圍無誤後 commit。
- 使用者明確指示後再 push
poc/nmodbus-tcp。 - 程式 repo push 後,再同步文件 repo stage / commit / push 與部署查驗。
7. 結論
4D 最小 Application plugin contract 已完成程式 repo stage / commit / push,且 GitHub Actions success。下一步應同步文件 repo stage / commit / push 與部署查驗,確保文件網站反映 6f34bb9 與 4D 完成狀態。