# 第五階段剩餘 gate 與完成條件稽核表

本文件用來固定第五階段在 5F 整合驗收通過後的完成狀態。稽核目的不是縮小第五階段範圍，而是把 5A 到 5F 已完成證據與不可越權停止線整理成可追蹤清單，避免把最小 hosting gate 誤解成 OS service 安裝或正式部署完成。

## 0. 基本資訊

| 項目 | 內容 |
|---|---|
| 稽核日期 | 2026-06-08 |
| 5D 線上驗收文件 commit | `43967f4` |
| 程式 repo | `hs-device-control-template` |
| 程式 branch | `poc/nmodbus-tcp` |
| 程式基準 commit | `0789d35` |
| 稽核狀態 | 第五階段已授權最小範圍完成 |

## 1. 目前完成證據

| 節點 | 目前狀態 | 可採用證據 |
|---|---|---|
| 5A PluginLoader | 已完成 metadata-only 最小實作 | 程式 commit `9e7302a`、Application.Tests 50 passed、solution tests 502 passed、5A 實作與驗收紀錄 |
| 外部 DLL manual-only | 已完成 fake verifier | 程式 commit `bc3f191`、Application.Tests 57 passed、solution tests 509 passed、外部 DLL manual-only 實作與驗收紀錄 |
| 5B config schema | 已完成 metadata-only schema 與 validator | 程式 commit `1f635d6`、Core.Tests 196 passed、solution tests 516 passed、5B 實作與驗收紀錄 |
| 5C DB audit | 已完成 Application 層 audit contract 與 in-memory writer | 程式 commit `354fecd`、Application.Tests 67 passed、Infrastructure.MySql.Tests 89 passed、solution tests 526 passed、5C 實作與驗收紀錄 |
| 5D auth / Swagger | 已完成 WebApi 最小 API key gate、protected controller policy、development-only Swagger、推送、Actions 與線上驗收 | 程式 commit `c92342b`、Actions run `27094590136` success、WebApi.Tests 17 passed、Application.Tests 67 passed、solution tests 536 passed、5D 實作與驗收紀錄、5D 線上驗收紀錄 |
| 5E Windows Service | 已完成最小 hosting gate、非敏感 options、runner、console smoke path 保留、明確 `--windows-service` smoke path、推送、Actions 與實作驗收紀錄 | 程式 commit `0789d35`、Actions run `27098568634` success、ServiceHost.Tests 19 passed、Application.Tests 67 passed、solution tests 548 passed、5E 實作與驗收紀錄 |
| 5F 整合驗收 | 已完成七項確認、分項測試、全量測試、runtime smoke、停止線掃描、污染掃描與文件同步 | `phase-five-f-integration-acceptance-record.md`、`phase-five-final-completion-audit.md` |

## 2. 尚未完成項目

| 節點 | 缺口 | 進入條件 |
|---|---|---|
| 5E 線上驗收紀錄 | 已建立並完成線上查核 | `phase-five-e-windows-service-online-acceptance-record.md` |
| 5F 整合驗收 | 已執行 5A 到 5E 串接檢查、停止線掃描、文件同步與驗收 | `phase-five-f-integration-acceptance-record.md` |
| 第五階段完成稽核 | 已建立完成版 | `phase-five-final-completion-audit.md` |

## 3. 本輪 current-state 驗證

| 驗證項目 | 指令 | 結果 |
|---|---|---|
| 文件 repo 狀態 | `git status --short --branch` | `main...origin/main`，乾淨 |
| 程式 repo 狀態 | `git status --short --branch` | `poc/nmodbus-tcp...origin/poc/nmodbus-tcp`，乾淨 |
| 5E 程式 commit / push | `git log -1 --oneline` / `git push origin poc/nmodbus-tcp` | `0789d35 新增 5E Windows Service 最小 hosting gate`，已推送 |
| 5E ServiceHost 測試 | `dotnet test tests\HS.DeviceControl.ServiceHost.Tests\HS.DeviceControl.ServiceHost.Tests.csproj --no-restore -m:1 /p:BuildInParallel=false /p:UseSharedCompilation=false` | 19 passed / 0 failed / 0 skipped |
| 5E Application 測試 | `dotnet test tests\HS.DeviceControl.Application.Tests\HS.DeviceControl.Application.Tests.csproj --no-restore -m:1 /p:BuildInParallel=false /p:UseSharedCompilation=false` | 67 passed / 0 failed / 0 skipped |
| 5E solution 測試 | `dotnet test HS.DeviceControl.sln --no-restore -m:1 /p:BuildInParallel=false /p:UseSharedCompilation=false` | 548 passed / 0 failed / 0 skipped |
| 5E ServiceHost console smoke | `dotnet run --project src\HS.DeviceControl.ServiceHost\HS.DeviceControl.ServiceHost.csproj --no-restore` | Running -> Stopped，exit code 0 |
| 5E Windows hosting smoke | `dotnet run --project src\HS.DeviceControl.ServiceHost\HS.DeviceControl.ServiceHost.csproj --no-restore -- --windows-service` | windows-service Running -> Stopped，exit code 0 |
| 5E GitHub Actions | `gh run list --repo Hongsen-tw/hs-device-control-template --branch poc/nmodbus-tcp --limit 5` | `27098568634` completed success |

備註：上述測試出現 `.NET 5.0` EOL warning，屬既有目標框架風險，不代表本輪 gate 稽核失敗。

## 4. 不可越過的停止線

在使用者完成對應七項確認前，不得自行執行下列變更：

- 不再擴大 WebApi auth 範圍到 JWT、OAuth、OIDC、外部 IdP、角色系統或 production Swagger 設定。
- 不保存正式 API key、password、client secret、token、正式 IP、正式 port、正式 DB connection string。
- 不把 5E 最小 hosting gate 擴大成 OS service 安裝、`UseWindowsService`、service installer、安裝 / 解除安裝腳本、正式 service account 或正式 log / config path。
- 不執行 DB DDL、ALTER TABLE、DROP TABLE、formal Apply 或正式 DB 初始化。
- 不載入外部 DLL、不掃描 plugin folder、不使用 assembly loading API。
- 不修改 Adapter public contract、既有 API route、GitHub / Cloudflare secret 或外部服務設定。

## 5. 建議執行順序

1. 推送 5F 整合驗收紀錄與第五階段完成稽核表。
2. 查核線上文件後建立第五階段線上驗收紀錄。

## 6. 下一個需使用者確認的項目

5F 整合驗收已完成；建議下一步建立並推送第五階段線上驗收紀錄，確認 Cloudflare Pages 首頁、5F 驗收頁、第五階段完成稽核頁、`progress.json` 與 `status.json` 均可追溯到最新文件 commit。
