# 開發進度總覽

本頁用於追蹤智慧設備順序控制系統共用骨架的前導文件與後續程式碼開發進度。

百分比採雙尺度呈現：「第一階段驗收進度」只代表本階段約定交付範圍是否可驗收；「長期完整平台」則包含資料庫、WebApi、ServiceHost、WinForms Debug Tool、真實硬體與正式部署等後續成熟度。

> HTML 版儀表板由 `progress.json` 驅動；本 Markdown 為方便閱讀與備份的靜態快照。

## 開發進度儀表板

| 指標 | 百分比 / 數值 | 說明 |
|---|---:|---|
| 第一階段控制骨架 | 100% | 第一階段驗收總結已確認，第一階段正式標記完成 |
| 長期完整平台 | 100% | 第二階段 A / B、第三階段 3A 到 3D、第四階段最小 WebApi / ServiceHost / Application plugin contract 均已完成；第五階段 5A PluginLoader metadata-only、外部 DLL manual-only fake verifier、5B config schema、5C DB audit 第一批、5D auth / Swagger 最小 API key gate、5E Windows Service 最小 hosting gate 與 5F 整合驗收均已完成，程式 repo 最新基準為 `0789d35` |
| 自動測試 | 548 | 程式 repo 最新全量 `dotnet test HS.DeviceControl.sln --no-restore` 紀錄為 548 個測試；ServiceHost.Tests 19 passed、WebApi.Tests 17 passed、Application.Tests 67 passed、Infrastructure.MySql.Tests 89 passed；5F 停止線掃描未命中未授權擴張 |

## 分項進度

| 分項 | 完成度 | 說明 |
|---|---:|---|
| 文件 / 規格 / 驗證 | 100% | 第一階段文件、驗證紀錄、Cloudflare Pages 與 GitHub Actions 狀態同步已建立 |
| Core / Workflow 骨架 | 100% | Workflow、Result、StateMachine、TaskEngine 與節點歷程承接已達第一階段驗收範圍 |
| Config 系列 | 100% | Config Loader、Mapper、Validator 與 RecoveryPolicy 驗證已達第一階段驗收範圍 |
| ConsoleHost 驗證入口 | 100% | 代表流程、Adapter Data、條件轉移、錯誤輸出、多設備啟動失敗、rollback / recovery metadata 與任務摘要已可驗證 |
| Mock Adapter / Data | 100% | Mock Adapter 已可支援第一階段代表流程並回傳 Data、RawRequest、RawResponse、Metadata |
| Workflow 條件轉移 | 100% | 已支援 `ConditionTransitions`、`DefaultNextNodeId`、`FailNextNodeId`，並完成 OK / NG 驗證紀錄 |
| 測試與人工驗證 | 100% | 已補自動測試與人工驗證文件，最新全量 `dotnet test HS.DeviceControl.sln --no-restore` 通過 548 個測試 |
| Modbus TCP Adapter 第一版 | 100% | 已完成 PoC、套件選型、設定映射、第一版實作、模擬器整合驗證、錯誤處理與第一階段驗證紀錄 |
| 第二階段 A：MySQL TaskStore / Schema DryRun PoC | 100% | 已完成 Schema Attribute、SQL Generator、Dry Run、Inspector、真實 metadata 讀取、task_executions 與 node_executions 真實 DB manual-only 驗證 |
| 第二階段 B：DB Log / Trace / Apply 安全收斂 | 100% | 已完成 DB LogWriter / TraceStore 邊界設計、實作前確認、第一版程式實作、manual-only xUnit 驗證入口、真實 DB 驗證前確認清單、TaskTraceStore 查詢邊界設計、Apply 安全策略、測試 DB DDL 建表、`task_log_traces` 寫入 / 查詢 / cleanup 驗證與收斂稽核；正式 DDL Executor、Host DB 初始化與 TaskTraceStore public contract 改列第三階段前置 |

## 目前狀態

| 項目 | 內容 |
|---|---|
| 目前階段 | 第一階段控制骨架 100%；第二階段 A / B、第三階段 3A Trace 查詢、3B ManualApplyPreview、3C Application contract 與 3D Application contract 均已完成；第四階段標準包、4B WebApi 第一版、4C ServiceHost 第一版與 4D 最小 Application plugin contract 均已完成並 push，第四階段線上驗收已完成；第五階段 5A 到 5F 已授權最小範圍完成 |
| 文件 repo | `hs-device-control-template-docs` |
| 程式 repo | [`hs-device-control-template`](https://github.com/Hongsen-tw/hs-device-control-template) |
| 技術基底 | .NET 5.0、xUnit、ConsoleHost、Mock Adapter、Modbus TCP PoC |
| 最新更新 | 2026-06-08 |
| 最新程式版本 | `0789d35` 位於 `poc/nmodbus-tcp`，已完成 5E Windows Service 最小 hosting gate；`main` 先前合併基準為 `a8b522b` |
| 測試狀態 | 最新全量 `dotnet test HS.DeviceControl.sln --no-restore -m:1 /p:BuildInParallel=false /p:UseSharedCompilation=false` 紀錄通過 548 個測試；ServiceHost.Tests 19 passed、WebApi.Tests 17 passed、Application.Tests 67 passed、Infrastructure.MySql.Tests 89 passed |
| 下一步 | 第五階段已完成；正式部署與真實現場整合需另行授權 |

## 剩餘缺口摘要

第一階段分項已改以「本階段驗收範圍」評估；以下項目屬於第二階段或長期平台成熟度，不再列為第一階段未完成分項。詳細收尾清單請參考：[第一階段剩餘缺口與完成標準](./docs/phase-one-completion-criteria.md)。

| 缺口 | 說明 |
|---|---|
| 第一階段收尾 | 驗收總結已確認，第一階段已正式標記 100% |
| 資料持久化 | MySQL 任務持久化屬於第二階段，第一階段先維持 InMemoryTaskStore 與文件化限制 |
| 正式服務入口 | WebApi、ServiceHost、Runtime 取消 / 暫停 / 恢復 API 屬於第二階段或長期平台範圍 |
| 現場工具與硬體 | WinForms Debug Tool 與真實硬體 Adapter 現場驗證延後到第二階段依案場設備補強 |
| 技術升級 | `.NET 5.0` 已 EOL，第二階段正式化前需評估升級 |

## 進度追蹤表

| 模組 / 工作 | 狀態 | 預計完成時間 | 實際完成時間 | 對應 repo | 備註 |
|---|---|---|---|---|---|
| 前導文件整理 | 已完成 | 2026-05-20 | 2026-05-20 | 文件 repo | 架構方向、開工規格、README、docs 文件已建立 |
| 靜態網站發布 | 已完成 | 2026-05-20 | 2026-05-20 | 文件 repo | Cloudflare Pages 已發布 |
| 手機閱讀版檢查 | 已完成 | 2026-05-20 | 2026-05-20 | 文件 repo | 已確認手機寬度無水平溢出 |
| PDF 列印版檢查 | 已完成 | 2026-05-20 | 2026-05-20 | 文件 repo | 已修正首頁空白頁與 Markdown 標題重複 |
| 程式 repo 建立 | 已完成 | 2026-05-20 | 2026-05-20 | 程式 repo | GitHub：[`hs-device-control-template`](https://github.com/Hongsen-tw/hs-device-control-template) |
| .NET 5.0 Solution | 已完成 | 2026-05-20 | 2026-05-20 | 程式 repo | 已建立 Solution、Core、Adapters、ConsoleHost 與測試專案 |
| Config Loader / Mapper / Validator | 已完成 | 2026-05-21 | 2026-05-21 | 程式 repo | 設定載入、跨檔驗證、WorkflowDefinition 映射已完成 |
| ConsoleHost 設定檔啟動 | 已完成 | 2026-05-21 | 2026-05-21 | 程式 repo | 可從 `samples/config` 載入並執行代表流程 |
| Log 輸出格式 | 已完成 | 2026-05-22 | 2026-05-22 | 程式 repo | Console / File 共用單行 key-value 格式 |
| DeviceId 執行鏈路 | 已完成 | 2026-05-22 | 2026-05-22 | 程式 repo | DeviceId 已串接至 WorkflowNode、DeviceCommand 與 Log |
| 節點失敗與重試驗證 | 已完成 | 2026-05-22 | 2026-05-22 | 程式 repo | 設備離線、節點逾時、重試成功、重試耗盡失敗已驗證 |
| Adapter 分派器與生命週期 | 已完成 | 2026-05-22 | 2026-05-22 | 程式 repo | 支援 Connect、Disconnect、GetStatus 與 DeviceAdapterDispatcher |
| Adapter Data 承接 Workflow / Log | 已完成 | 2026-05-25 | 2026-05-25 | 程式 repo | WorkflowNodeResult 與 Log 可承接 Data、RawRequest、RawResponse、Metadata |
| Workflow 條件轉移 | 已完成 | 2026-05-26 | 2026-05-26 | 程式 repo | 支援 `ConditionTransitions`、`DefaultNextNodeId`、`FailNextNodeId`；OK / NG 人工驗證已補強 |
| ModbusTcpAdapter 模擬器整合驗證 | 已完成 | 2026-05-27 | 2026-05-27 | 程式 repo | P1-01 已完成，ConsoleHost 模擬器驗證節點測試通過 |
| Modbus TCP 錯誤處理與 ConsoleHost 輸出驗證 | 已完成 | 2026-05-27 | 2026-05-27 | 程式 repo | P1-02 第一輪已完成，含錯誤 metadata、ConsoleHost 錯誤輸出與人工驗證紀錄 |
| Dispatcher 連線失敗補償斷線 | 已完成 | 2026-05-27 | 2026-05-27 | 程式 repo | 多設備 Connect 中途失敗時，已成功連線 Adapter 會被補償 Disconnect |
| ConsoleHost 多設備啟動失敗人工驗證 | 已完成 | 2026-05-27 | 2026-05-27 | 程式 repo | 確認 Adapter connect failed 時會顯示主錯誤資訊，且不會繼續執行 Workflow |
| Dispatcher rollback metadata 與 ConsoleHost 顯示 | 已完成 | 2026-05-27 | 2026-05-27 | 程式 repo | Connect 失敗時可看到補償斷線 metadata，ConsoleHost 人工驗證已確認實際輸出 |
| ITaskStore / InMemoryTaskStore 任務歷程查詢 | 已完成 | 2026-05-29 | 2026-05-29 | 程式 repo | Core 已具備任務紀錄保存、依 TaskId 查詢與近期任務列表能力 |
| ConsoleHost 任務摘要輸出 | 已完成 | 2026-05-29 | 2026-05-29 | 程式 repo | ConsoleHost 已可在 Task node history 後顯示 Recent tasks，包含 TaskId、WorkflowId、Status 與 NodeCount |
| ConsoleHost 任務摘要人工驗證 | 已完成 | 2026-05-29 | 2026-05-29 | 程式 repo | 已確認使用者可從實際輸出判讀 Recent tasks、TaskId、WorkflowId、Status、NodeCount、StartedAt 與 EndedAt |
| 第一階段 Task 追蹤收尾檢查表 | 已完成 | 2026-05-29 | 2026-05-29 | 程式 repo | 已確認 Task 追蹤可作為第一階段可驗收能力收斂，並列出第二階段延後項目 |
| 第一階段最後缺口盤點與完成判斷 | 已完成 | 2026-05-29 | 2026-05-29 | 程式 repo | 判定功能主體已具備，並已完成後續驗收總結確認 |
| 第一階段驗收總結 | 已完成 | 2026-05-29 | 2026-05-29 | 程式 repo | 已整理完成範圍、測試結果、人工驗證文件、接受限制與第二階段延後項目，並已由使用者確認 |
| Schema Initializer DryRun 實作前確認 | 已完成 | 2026-05-30 | 2026-05-30 | 文件 repo | 已確認第一版只做 `SchemaInitializer` 協調層、request/result model、Core tests 與 `MockSchemaInspector`，不連 MySQL、不執行 DDL |
| Schema Initializer DryRun 第一版實作 | 已完成 | 2026-05-30 | 2026-05-30 | 程式 repo | 已完成 `SchemaInitializer` 協調層、request/result model 與 10 個 Core 測試，commit `52adfab` |
| Schema Initializer DryRun ConsoleHost 接入設計 | 已完成 | 2026-05-30 | 2026-05-30 | 文件 repo | 已確認小步接入策略：新增 initializer formatter、保留既有 dry run formatter、不改啟動方式 |
| Schema Initializer DryRun ConsoleHost 接入實作前確認 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已確認下一步只做 ConsoleHost formatter、demo request、顯示測試與人工驗證，不改啟動方式、不連 MySQL、不執行 DDL |
| Schema Initializer DryRun ConsoleHost 接入實作 | 已完成 | 2026-05-31 | 2026-05-31 | 程式 repo | ConsoleHost 已改由 `SchemaInitializer` 顯示 dry run result，新增 5 個 formatter 測試，commit `ac52376` |
| ConsoleHost Schema Initializer DryRun 人工驗證 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已整理 ConsoleHost 實際輸出，確認代表流程、initializer dry run、SQL preview 與安全警告符合預期 |
| Schema Automation 第一輪收尾檢查 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已確認 SQL Generator、Dry Run Plan、Mock Inspector、Schema Initializer、ConsoleHost 顯示與人工驗證已形成真實 MySQL Inspector 前的完成邊界 |
| 真實 MySQL Inspector 前置確認 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已整理唯讀 metadata、連線安全、`information_schema` 欄位、MySQL 5.6.2 注意事項、測試策略與停止條件 |
| MySqlSchemaInspector 實作前確認清單 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已整理實作位置、套件導入條件、query builder、row mapping、測試案例與人工驗證節點 |
| MySqlSchemaInspector Query Builder / Row Mapper 設計 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已整理參數化查詢、metadata row mapping、snapshot assembly、錯誤格式與不連 DB 的單元測試方向 |
| Query Builder / Row Mapper 實作前確認 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已列出準備新增的 class、method、測試檔、影響範圍與停止線 |
| 程式 repo 結構檢查與第一版實作範圍盤點 | 已完成 | 2026-05-31 | 2026-05-31 | 文件 repo | 已確認現有 Core Schema model、`ISchemaInspector` contract、測試位置與 helper class 策略決策點 |
| MySQL Schema Inspector 純程式 helper | 已完成 | 2026-05-31 | 2026-05-31 | 程式 repo | 已完成 internal Query Builder、metadata row mapper、snapshot assembler 與測試，commit `51cb17c` |
| MySqlSchemaInspector 真實 DB 人工驗證 | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | 真實 MySQL 5.6.2 基本 metadata inspect 已通過；`task_executions` 建立後 manual-only 測試成功 |
| MySqlSchemaInspector 成功輸出補強 | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | manual-only xUnit 已補 table、column、index、comment 摘要輸出，commit `fa665f5` |
| MySQL detailed logger 回填模板 | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | 已整理本機執行指令、貼回格式與遮蔽規則，commit `2e8f595` |
| MySQL detailed logger 驗證紀錄回填 | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | 已補齊真實 MySQL 5.6.2 `TableCount=1`、`ColumnCount=12`、`IndexCount=3`、`WarningCount=0`、table comment 與 column comment 證據，commit `48b65d5` |
| MySQL TaskStore Save / 查詢還原 PoC | 進行中 | 2026-06-01 | 2026-06-01 | 程式 repo | 已完成 Save upsert、FindById / ListRecent、internal restore、row mapper 與 fake gateway 測試，commit `1ea3dd4` |
| MySQL TaskStore 真實 DB manual-only 驗證設計 | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | 已定義 gate、ALLOW_WRITE、測試資料前綴、清除策略與驗證紀錄格式，commit `7517007` |
| MySQL TaskStore manual-only xUnit 實作前確認 | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | 已確認雙 gate、測試 DB 寫入權限、cleanup 與不進一般 CI 的安全邊界，commit `f4a6979` |
| MySQL TaskStore manual-only xUnit 驗證入口 | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | 已新增 gate 預設關閉的 Save / FindById / ListRecent manual-only 測試入口，commit `0092365` |
| MySQL TaskStore 真實 DB 驗證 Runbook | 已完成 | 2026-06-01 | 2026-06-01 | 程式 repo | 已補 manual-only gate 操作、環境變數、預期輸出與結果回填格式，commit `fbd9184` |
| MySQL TaskStore 真實 DB 驗證紀錄 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo | 已回填真實 DB Save / FindById / ListRecent / cleanup 實測結果，commit `f28050a` |
| MySQL TaskStore 第一版 PoC 完成稽核 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo | 已整理完成條件、已完成證據、真實 DB 實測證據與不可越界項目，commit `f28050a` / `6f60455` |
| 平台化需求地圖 TaskStore 狀態同步 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已將平台化需求地圖同步為 MySQL provider 已完成 manual-only metadata 驗證、TaskStore 第一版 PoC 已完成真實 DB 寫入 / 查詢，commit `6f60455` |
| TaskStore 多表紀錄邊界分析 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已整理 `node_executions`、`command_executions` 與詳細 log table 分工，commit `2160350` |
| MySQL TaskStore node_executions 實作前確認 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已固定欄位、主鍵、索引、delete-and-insert 寫入策略、fake gateway 測試與停止線，commit `1518eec` |
| MySQL TaskStore node_executions 第一版實作 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已完成 schema class、SQL builder、batch gateway transaction、fake gateway 寫入命令、schema SQL 測試與全專案測試，commit `a8bd6a0` |
| MySQL TaskStore node_executions manual-only 驗證入口 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已完成真實 DB 驗證設計、gate 預設關閉的 xUnit 入口、schema precheck、node row 查詢 helper 與 cleanup，commit `9828122` |
| MySQL TaskStore node_executions schema precheck 停止線測試 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已抽出 internal helper，補齊缺表、缺欄位、缺索引、缺 comment 與 PK 不符測試，commit `417e467` |
| MySQL TaskStore node_executions 真實 DB 驗證前確認清單 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已固定測試 DB、schema、gate、cleanup、通過條件與延後邊界，commit `eb965f6` |
| MySQL TaskStore node_executions 目標模式收斂稽核 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已整理完成證據、安全測試 59 / 391 passed、尚未完成項與延後邊界，commit `80c8e04` |
| MySQL TaskStore node_executions 真實 DB 驗證紀錄 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已完成測試 DB 建表授權、schema precheck、Save、node rows 查詢、FindById、ListRecent 與 cleanup，commit `ade8860` |
| MySQL TaskStore command_executions 實作前確認 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已整理資料來源候選、欄位草案、索引草案、寫入策略、停止線與建議結論，commit `b72bfb8` |
| MySQL DB LogWriter / TraceStore 邊界設計 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已確認診斷資料走 `LogEntry -> MySqlLogWriter -> task_log_traces`，不直接塞入 `MySqlTaskStore.Save`，commit `eefb863` |
| MySQL DB LogWriter / TraceStore 實作前確認 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已固定 `task_log_traces` 欄位與索引草案、`MySqlLogWriter` 邊界、payload sanitizer 規則、fake gateway 測試策略、manual-only 真實 DB 停止線與建議實作順序，commit `27188e9` |
| MySQL DB LogWriter / TraceStore 第一版實作 | 已完成 | 2026-06-02 | 2026-06-02 | 程式 repo / 文件 repo | 已完成 `task_log_traces` schema class、`MySqlLogWriter`、`LogEntry` mapper、payload sanitizer、fake gateway 測試與 fallback，commit `236ef9d` |
| MySQL DB LogWriter / TraceStore manual-only 驗證入口 | 已完成 | 2026-06-03 | 2026-06-03 | 程式 repo / 文件 repo | 已完成真實 DB 驗證設計、`HS_MYSQL_LOGWRITER_*` gate、schema precheck、查詢 helper、sanitizer 驗證與 cleanup helper，commit `fe2b4a3` |
| MySQL DB LogWriter 真實 DB 驗證前確認清單 | 已完成 | 2026-06-03 | 2026-06-03 | 程式 repo / 文件 repo | 已固定測試 DB 資訊遮蔽、`task_log_traces` schema 停止線、INSERT / SELECT / cleanup gate、sanitizer 通過條件與不得自動 DDL 規則，commit `cfc766c` |
| MySQL DB LogWriter `task_log_traces` 真實 DB 驗證 | 已完成 | 2026-06-03 | 2026-06-03 | 程式 repo / 文件 repo | 已在使用者授權下於測試 DB 執行 `CREATE TABLE IF NOT EXISTS task_log_traces`，並通過 manual-only 寫入 / 查詢 / cleanup 驗證，commit `84ec9a1` |
| MySQL TaskTraceStore 查詢邊界設計 | 已完成 | 2026-06-03 | 2026-06-03 | 程式 repo / 文件 repo | 已固定 trace read-side 查詢條件、回傳資料邊界、SQL 安全、不納入第一版項目與 public contract 確認點，commit `843b593` |
| MySQL Schema Apply / DDL Executor 安全策略 | 已完成 | 2026-06-03 | 2026-06-03 | 程式 repo / 文件 repo | 已整理 Apply gate、權限、備份、rollback、plan hash、高風險操作分類、MySQL 5.6.2 注意事項與停止線，commit `843b593` |
| 第二階段 B 補完清單 | 已完成 | 2026-06-02 | 2026-06-03 | 文件 repo | 已將第二階段拆為 A 已完成與 B 完成收斂，明確列出 DB LogWriter / TraceStore、task_log_traces、payload sanitizer、TaskTraceStore 與 Apply 安全策略 |
| 第二階段 B 收斂稽核 | 已完成 | 2026-06-03 | 2026-06-03 | 文件 repo | 已確認第二階段 B 可驗收完成，正式 DDL Executor、Host DB 初始化與 TaskTraceStore public contract 改列第三階段前置 |
| TaskTraceStore public 查詢介面實作前確認 | 已完成 | 2026-06-03 | 2026-06-03 | 文件 repo | 已整理 request / result model 候選、驗證規則、SQL 安全、遮罩規則、錯誤碼、測試策略與停止線，commit `95949a3` |
| 第三階段執行儀表板 | 已完成 | 2026-06-03 | 2026-06-03 | 文件 repo | 已將第三階段拆成 3A Trace 查詢、3B DB 初始化、3C Service / API、3D Plugin / 多設備單元，並同步首頁專案總攬 |
| ManualApplyPreview 實作前確認 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已整理 3B preview model、風險分類、輸出格式、測試策略、停止線與進程式 repo 前七項決策 |
| 3B ManualApplyPreview 決策確認表 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已將 3B 七項決策整理成可逐項回覆的確認表；使用者已同意七項決策，並明確保留 DDL、DB、啟動流程與 history table 停止線 |
| ManualApplyPreview 第一版安全預覽實作 | 已完成 | 2026-06-04 | 2026-06-04 | 程式 repo | commit `13c14ca` 已新增 preview model、builder、`PlanHash`、`CanApply=False`、風險分級、ConsoleHost 顯示與 manual-only read-only 驗證入口 |
| ManualApplyPreview 3B 完成稽核 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已判定 3B 第一版可驗收完成；真實 DB read-only preview、正式 Apply、3C Service / API 仍需另行確認 |
| ManualApplyPreview 3B 線上驗收紀錄 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已確認 Cloudflare Pages 首頁、3B 完成稽核頁與 `status.json` 均可線上讀取，且內容反映 `13c14ca` 與 3B 完成狀態 |
| 3C Service / API 邊界分析 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已整理 ServiceHost、WebApi、Application Service、API 類型、DTO、任務生命週期、權限、安全、DB 與驗證節點邊界；尚未新增專案、route、套件或 public method 簽章 |
| 3C Service / API 決策確認表 | 已確認 | 2026-06-04 | 2026-06-04 | 文件 repo | 使用者已同意七項決策；尚未新增 ServiceHost / WebApi、API route、套件或 public method 簽章 |
| 3C 程式 repo 結構檢查與實作前確認 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已唯讀盤點程式 repo `poc/nmodbus-tcp`、Solution 專案、既有 Core / Adapter / Infrastructure 能力、尚未存在的 Application / ServiceHost / WebApi 邊界與候選檔案；尚未修改程式 |
| 3C Application Service contract 草案 / 實作前確認表 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已整理新增 Application 專案、引用方向、Task Control、Device Status、Schema Preview、Health 與停止線七項確認；使用者已同意七項決策，尚未修改程式 |
| 3C Application contract 決策確認紀錄 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已記錄七項同意結果與仍需停止的範圍；下一步可進入 Application contract 第一版實作 |
| 3C Application contract 第一版實作 | 已完成 | 2026-06-04 | 2026-06-04 | 程式 repo | 已新增 Application / Application.Tests、Task / Device / Schema / Health contract 與薄 service；Application tests 15 passed，solution tests 453 passed |
| 3C Application contract 完成稽核 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已完成需求對照、驗證節點、停止線稽核與剩餘風險整理 |
| 3C Application contract commit / push 前確認 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已整理程式 repo 與文件 repo 的 stage 範圍、測試證據、停止線與建議 commit 訊息 |
| 3C Application contract 程式 repo push | 已完成 | 2026-06-05 | 2026-06-05 | 程式 repo | 已 push `aee6ab6` 到 `poc/nmodbus-tcp` |
| 3C Application contract 線上驗收紀錄 | 已完成 | 2026-06-05 | 2026-06-05 | 文件 repo | 已確認 Cloudflare Pages 首頁、第三階段儀表板、3C commit / push 前確認頁與 `status.json` 已反映 `aee6ab6` 與 3C 完成狀態 |
| 3D Plugin / 多設備單元邊界分析 | 已完成 | 2026-06-05 | 2026-06-05 | 文件 repo | 已整理外部 DLL、多設備單元、Resource Lock、Command Queue、設定版本、候選驗證節點與停止線；未載入 DLL、未改程式、未改 Adapter public contract |
| 3D Plugin / 多設備單元決策確認表 | 已確認 | 2026-06-05 | 2026-06-05 | 文件 repo | 使用者已同意七項決策；下一步可整理 3D contract 草案 / 實作前確認表 |
| 3D contract 草案 / 實作前確認表 | 已確認 | 2026-06-05 | 2026-06-05 | 文件 repo | 已整理多設備單元 DTO、Resource Lock、Command Queue、Plugin metadata、Adapter contract 穩定性、測試策略與停止線七項確認；尚未修改程式 |
| 3D contract 決策確認表 | 已確認 | 2026-06-05 | 2026-06-05 | 文件 repo | 使用者已同意 3D contract 七項決策；尚未修改程式 |
| 3D Plugin / 多設備單元完成稽核表 | 已完成 | 2026-06-05 | 2026-06-05 | 文件 repo | 已對照目標模式要求列出完成證據與停止線，判定 3D contract 前置節點可驗收 |
| 3D Plugin / 多設備單元線上驗收紀錄 | 已完成 | 2026-06-05 | 2026-06-05 | 文件 repo | 已確認 Cloudflare Pages 首頁、第三階段儀表板、3D 完成稽核頁、3D contract 決策頁與 `status.json` 已反映 3D contract 前置節點完成狀態 |
| 3D 程式 repo 結構檢查與實作前確認 | 已完成 | 2026-06-05 | 2026-06-05 | 文件 repo / 程式 repo 唯讀盤點 | 已確認 `HS.DeviceControl.Application` 可承接 3D 第一版 contract；尚未修改程式、未載入 DLL、未改 Adapter public contract 或 config schema |
| 3D 程式 repo 結構檢查線上驗收紀錄 | 已完成 | 2026-06-05 | 2026-06-05 | 文件 repo | 已確認 Cloudflare Pages 首頁、新結構檢查頁、第三階段儀表板與 `status.json` 已反映 3D 程式 repo 結構檢查狀態 |
| 3D Application contract 草案 / 實作前確認表 | 已確認 | 2026-06-05 | 2026-06-06 | 文件 repo | 已整理 ControlUnits、Resources、Commands、Plugins、Application error code 與測試策略七項確認；使用者已同意七項決策，尚未修改程式 |
| 3D Application contract 決策確認表 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 已記錄使用者同意 Application 層放置位置、ControlUnits、Resources、Commands、Plugins、Application error code / tests 與停止線七項決策；尚未修改程式 |
| 3D Application contract 第一版實作 | 已完成 | 2026-06-06 | 2026-06-06 | 程式 repo | commit `a158551` 已新增 ControlUnits、Resources、Commands、Plugins、`APP-03xx` 與 Application.Tests；Application tests 30 passed，solution tests 468 passed |
| 3D Application contract commit / push 前確認 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 已整理 staged 範圍、測試證據、污染掃描、commit 訊息、push 與 Actions 結果 |
| 第三階段總收斂確認表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 已集中確認 3A、3B、3C、3D 均已在核准範圍內完成，並列出停止線與非阻擋殘留項 |
| 4A WebApi / ServiceHost / Plugin Loader 邊界分析 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 已整理正式入口、背景執行入口、Plugin Loader、Application 共用協調層、部署維運與停止線，不新增正式入口 |
| 4A WebApi / ServiceHost / Plugin Loader 決策確認表 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 使用者已確認採用建議路線；4B 可先進入最小 WebApi contract 與實作，ServiceHost 留到 4C，Plugin Loader 留到 4D |
| 第四階段 4B / 4C / 4D 執行切分表 | 已建立 | 2026-06-06 | 2026-06-06 | 文件 repo | 已暫定 WebApi 在 4B、ServiceHost 在 4C、Plugin Loader 在 4D；尚未新增正式入口、route、Loader、套件或 public method 簽章 |
| 第四階段 4A / 4B 切分線上驗收紀錄 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 已確認 Cloudflare Pages 首頁、4A 決策確認表、4B / 4C / 4D 切分表、第三階段儀表板與 `progress.json` 均反映文件 commit `f071c87` |
| 第四階段標準 / 文件 / 施作範圍 / 驗收條件總表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 已整理第四階段總標準、文件清單、4A / 4B / 4C / 4D 施作範圍、驗收條件、驗證節點與停止線 |
| 第四階段目標模式完成稽核表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 已確認第四階段文件型標準包可收斂完成；尚未新增 WebApi、ServiceHost 或 Plugin Loader 程式 |
| 4B WebApi contract 草案 / 實作前確認表 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 已整理最小 WebApi route、DTO、錯誤格式、Application mapping、API 測試、DB 非破壞性測試與停止線 |
| 4B WebApi 決策確認紀錄 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 使用者確認七項建議；允許最小 WebApi 第一版與 API / DB 非破壞性驗收，仍不做 ServiceHost、Plugin Loader 或 DB DDL |
| 4B WebApi 第一版實作與 API / DB 驗收紀錄 | 已完成 | 2026-06-06 | 2026-06-06 | 程式 repo / 文件 repo | 程式 repo commit `9527773` 已新增 WebApi 專案、controller、DTO 與 WebApi tests；WebApi tests 7 passed、solution tests 475 passed、本機 API 驗收與 Actions success 均通過 |
| 4C ServiceHost contract 草案 / 實作前確認表 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 已整理 ServiceHost 背景生命週期、Adapter lifecycle、Health、Log / Trace、DB / Schema 非破壞性邊界、候選檔案、測試策略與七項確認 |
| 4C ServiceHost 決策確認紀錄 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 使用者確認七項建議；可進入程式 repo 結構檢查與最小 ServiceHost 第一版實作，仍不做 Windows Service、外部 queue、正式 DB 或真實硬體 |
| 4C ServiceHost 程式 repo 結構檢查表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo / 程式 repo | 已確認新增 `HS.DeviceControl.ServiceHost`、`HS.DeviceControl.ServiceHost.Tests` 與 solution 掛載，且不改 Core / Application public contract |
| 4C ServiceHost 第一版實作與驗收紀錄 | 已完成 | 2026-06-06 | 2026-06-06 | 程式 repo / 文件 repo | 已新增 ServiceHost runtime、state、status、options 與 tests；ServiceHost tests 7 passed、Application tests 30 passed、WebApi tests 7 passed、solution tests 482 passed，主程式 Running -> Stopped |
| 4C ServiceHost 完成稽核表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 判定 4C ServiceHost 第一版已完成並 push；程式 commit `a846212` 已通過 Actions run `27057194166` |
| 4D PluginLoader 邊界分析 | 已整理 | 2026-06-06 | 2026-06-06 | 文件 repo / 程式 repo | 已整理信任模型、metadata contract、版本相容、隔離、卸載、回復、測試策略與停止線；不建立 Loader、不掃描 plugin folder、不載入外部 DLL |
| 4D PluginLoader 決策確認表 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 使用者已同意 trust model / metadata contract、來源白名單、版本相容、Adapter contract、ServiceHost lifecycle 與停止線七項決策；可進入 contract 草案 / 實作前確認表 |
| 4D PluginLoader contract 草案 / 實作前確認表 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 使用者已同意 metadata、verification result、state、audit、候選檔案、測試策略與停止線七項 contract 決策；可進入程式 repo 唯讀結構檢查 |
| 4D PluginLoader 程式 repo 結構檢查表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo / 程式 repo 唯讀盤點 | 已確認既有 `Application.Plugins` 可承接最小 metadata / verification / state / audit contract；不新增 Loader、不建立 `IPluginLoader`、不改 Adapter public contract 或 config schema |
| 4D 最小 Application plugin contract 實作前最後確認表 | 已確認 | 2026-06-06 | 2026-06-06 | 文件 repo | 使用者已同意七項最小 contract 決策，允許只修改 Application.Plugins 與 Application.Tests |
| 4D 最小 Application plugin contract 第一版實作與驗收紀錄 | 已完成 | 2026-06-06 | 2026-06-06 | 程式 repo / 文件 repo | 程式 commit `6f34bb9` 已新增 plugin state、verification check/result、audit record、descriptor 欄位與 catalog validation；Application.Tests 40 passed，solution tests 492 passed |
| 4D PluginLoader 完成稽核表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 判定 4D 就最小 Application plugin contract 已完成 commit / push / Actions；真正 Loader、外部 DLL、config schema、Adapter contract 與 DB audit table 仍需另行確認 |
| 第四階段完成確認表 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 收斂 4A 文件切分、4B WebApi、4C ServiceHost 與 4D 最小 Application plugin contract；第四階段最小範圍已完成程式 repo commit / push |
| 4D Application plugin contract commit / push 前確認 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo / 程式 repo | 已固定 4D 程式 repo stage 範圍、測試證據、停止線與 commit 訊息；commit `6f34bb9` 已 push，Actions run `27064992270` success |
| 第四階段線上驗收紀錄 | 已完成 | 2026-06-06 | 2026-06-06 | 文件 repo | 已確認 Cloudflare Pages `status.json`、第四階段完成確認表、4D commit / push 前確認頁、程式 Actions run `27064992270` 與文件 repo 狀態同步 run `27064994842` 均通過 |
| 第四階段後續功能節點切分表 | 已建立 | 2026-06-07 | 2026-06-07 | 文件 repo | 已切分 4E 後續決策確認、5A PluginLoader、5B config schema、5C DB audit、5D WebApi auth / Swagger、5E Windows Service 與 5F 整合驗收；尚未授權程式修改 |
| 4E 後續功能節點決策確認表 | 已確認 | 2026-06-07 | 2026-06-07 | 文件 repo | 使用者已同意七項決策；已允許進入 5A PluginLoader 實作前確認 |
| 5A PluginLoader 實作前確認表 | 已確認 | 2026-06-07 | 2026-06-07 | 文件 repo | 使用者已同意七項決策；允許進入程式 repo 唯讀結構檢查與最小 PluginLoader 實作評估，尚未授權外部 DLL、config schema、DB audit、auth / Swagger 或 Windows Service |
| 第五階段 Loader 到 Service 後續範圍補齊表 | 已建立 | 2026-06-07 | 2026-06-07 | 文件 repo | 已補齊 5A 到 5F 的 Loader、外部 DLL、config schema、DB audit、auth / Swagger、Windows Service、文件交付、實作範圍與驗收範圍 |
| 5A PluginLoader 程式 repo 結構檢查 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo / 程式 repo 唯讀盤點 | 已確認 Application.Plugins 可承接 metadata-only Loader；候選新增 `IPluginLoader`、request / result / options / service 與 tests；Application.Tests 40 passed |
| 5A 最小 PluginLoader 實作前最後確認表 | 已確認 | 2026-06-07 | 2026-06-07 | 文件 repo | 使用者已確認七項；後續已完成 metadata-only PluginLoader 程式實作 |
| 5A 最小 PluginLoader 最後確認表線上驗收紀錄 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo | 已確認最後確認表 HTTP 200、首頁入口與 `status.json` 內容可追溯；後續已完成七項確認與 5A 實作 |
| 5A 最小 PluginLoader 實作測試案例與停止線稽核表 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo / 程式 repo 唯讀 refresh | 已固定 Application.Tests、solution tests、assembly loading / DLL / config / DB / auth / Windows Service 停止線掃描與 10 個 PluginLoaderServiceTests 建議案例 |
| 5A 最小 PluginLoader metadata-only 實作 | 已完成 | 2026-06-07 | 2026-06-07 | 程式 repo / 文件 repo | 程式 commit `9e7302a` 已新增 `IPluginLoader`、request / result / options / service 與 tests；Application.Tests 50 passed、solution tests 502 passed、Actions run `27084361560` success |
| 外部 DLL manual-only fake verifier | 已完成 | 2026-06-07 | 2026-06-07 | 程式 repo / 文件 repo | 程式 commit `bc3f191` 已新增 manual-only request / result / plan / options / fake verifier 與測試；Application.Tests 57 passed、solution tests 509 passed、Actions run `27085788163` success |
| 5B config schema 實作與驗收 | 已完成 | 2026-06-07 | 2026-06-07 | 程式 repo / 文件 repo | 程式 commit `1f635d6` 已新增 metadata-only appsettings schema、validator、safe sample config、Core tests 與 `docs/config-schema.md`；solution tests 516 passed、Actions run `27087431249` success |
| 5C DB audit 實作前文件包 | 已確認 | 2026-06-07 | 2026-06-07 | 文件 repo / 程式 repo 唯讀盤點 | 使用者已同意七項決策；已依此進入 audit contract / fake writer 第一批程式實作 |
| 5C DB audit 實作前文件線上驗收紀錄 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo | 已確認 5C 前置文件包與 `status.json` 可在線上追溯至 `b9cdd41`；後續已完成 5C 七項確認與第一批實作 |
| 5C DB audit 第一批實作與驗收 | 已完成 | 2026-06-07 | 2026-06-07 | 程式 repo / 文件 repo | 程式 commit `354fecd` 已新增 Application 層 audit event contract、write result、`IAuditEventWriter`、`InMemoryAuditEventWriter`、`APP-0361` 到 `APP-0363` 與測試；Application.Tests 67 passed、Infrastructure.MySql.Tests 89 passed、solution tests 526 passed、Actions run `27089597494` success |
| 5D auth / Swagger 前置文件包 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo / 程式 repo 唯讀盤點 | 已建立邊界分析、實作前確認表、程式 repo 結構檢查與實作測試案例 / 停止線稽核表；後續已依七項確認完成 5D 程式實作 |
| 5D auth / Swagger 實作前文件線上驗收紀錄 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo | 已確認 5D 邊界分析頁、實作前確認表、`status.json?check=5d` 與 `progress.json?check=5d` 可線上追溯；後續已完成 `c92342b` 實作 |
| 5D auth / Swagger 最小實作前最後確認表 | 已確認 | 2026-06-07 | 2026-06-07 | 文件 repo | 已固定 5D 第一批最小 auth gate、credential 安全、controller 保護、health 決策、Swagger gate、測試停止線與排除項目；使用者七項確認後已完成實作 |
| 5D auth / Swagger 最小實作前最後確認表線上驗收紀錄 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo | 已建立 5D 最後確認表線上驗收紀錄；確認文件 gate 可追溯，後續已完成 5D auth / Swagger 程式實作 |
| 5D auth / Swagger 實作工作包 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo / 程式 repo 驗證 | 已整理並執行預計修改檔案、實作順序、必跑測試、停止線與實作後文件；實作 commit `c92342b` 已完成 |
| 5D auth / Swagger 第一批實作與驗收 | 已完成 | 2026-06-07 | 2026-06-07 | 程式 repo / 文件 repo | 程式 commit `c92342b` 已新增最小 API key authentication handler、protected API policy、development-only Swagger gate 與測試；WebApi.Tests 17 passed、Application.Tests 67 passed、solution tests 536 passed、Actions run `27094590136` success |
| 5D auth / Swagger 線上驗收紀錄 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo | 已確認 5D 實作驗收頁與 remaining gate 頁可在線上讀取，內容包含 `c92342b` 與 `27094590136` |
| 5E Windows Service 前置文件包 | 已完成 | 2026-06-07 | 2026-06-08 | 文件 repo / 程式 repo 唯讀盤點 | 已建立邊界分析、實作前確認表、程式 repo 結構檢查、實作測試案例 / 停止線稽核表、最後確認表、工作包與現況刷新紀錄；後續已完成最小 hosting gate |
| 5E Windows Service 實作前文件線上驗收紀錄 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo | 已確認 5E 實作前確認表與首頁可線上追溯；後續已完成 `0789d35` 最小 hosting gate 實作 |
| 5E Windows Service 最小實作前最後確認表 | 已確認 | 2026-06-07 | 2026-06-08 | 文件 repo | 使用者已確認七項，並已依工作包執行最小 hosting gate 實作 |
| 5E Windows Service 最小實作前最後確認表線上驗收紀錄 | 已完成 | 2026-06-07 | 2026-06-07 | 文件 repo | 已確認 5E 最後確認表、首頁入口與 `status.json` 可線上追溯；程式 repo 目前基準為 `c92342b`，未新增 Windows Service 程式實作 |
| 5E Windows Service 實作工作包 | 已完成 | 2026-06-07 | 2026-06-08 | 文件 repo / 程式 repo 驗證 | 已依候選修改檔案、施作順序、必跑測試、停止線與完成後文件執行，未導入 OS service 安裝 |
| 5E Windows Service 實作前現況刷新紀錄 | 已完成 | 2026-06-08 | 2026-06-08 | 文件 repo / 程式 repo 驗證 | 已重跑 ServiceHost.Tests 7 passed，確認 Windows Service / 外部 DLL loading / 污染字串停止線未命中 |
| 5E Windows Service 實作與驗收紀錄 | 已完成 | 2026-06-08 | 2026-06-08 | 程式 repo / 文件 repo | 程式 commit `0789d35` 已完成非敏感 options、runner、console smoke path 保留、明確 `--windows-service` smoke path 與 tests；ServiceHost.Tests 19 passed、solution tests 548 passed、Actions run `27098568634` success |
| 5E Windows Service 線上驗收紀錄 | 已完成 | 2026-06-08 | 2026-06-08 | 文件 repo / 線上查核 | 已確認 5E 實作驗收頁、首頁、`progress.json` 與 `status.json` 可追溯 `0789d35` 與文件 commit `ec34a51` |
| 第五階段剩餘 gate 與完成條件稽核表 | 已更新 | 2026-06-07 | 2026-06-08 | 文件 repo / 程式 repo 驗證 | 已盤點 5A 到 5E 已完成證據、5F 尚未完成項目、不可越權停止線與建議執行順序；5E solution tests 548 passed、ServiceHost.Tests 19 passed |
| 5F 第五階段整合驗收計畫 | 已更新 | 2026-06-07 | 2026-06-08 | 文件 repo | 已固定 5A 到 5E 完成後的整合驗收前提、測試命令、停止線、文件同步與線上驗收條件 |
| 5F 第五階段整合驗收執行前確認表 | 已確認並已執行 | 2026-06-07 | 2026-06-08 | 文件 repo | 使用者已確認七項同意，已完成 5F 整合驗收 |
| 5F 第五階段整合驗收紀錄 | 已完成 | 2026-06-08 | 2026-06-08 | 程式 repo / 文件 repo | 已完成分項測試、全量測試 548 passed、runtime smoke、停止線掃描、污染掃描與文件鏡像檢查 |
| 第五階段完成稽核表 | 已完成 | 2026-06-08 | 2026-06-08 | 文件 repo | 已確認 5A 到 5F 均完成已授權最小範圍，正式部署 / DB / DLL / Windows Service install 仍需另行授權 |
| 第五階段線上驗收紀錄 | 已完成 | 2026-06-08 | 2026-06-08 | 文件 repo / 線上查核 | 已確認首頁、5F 驗收頁、第五階段完成稽核頁、`progress.json` 與 `status.json` 均可在線上追溯 |
| TaskTraceStore 第一版 fake gateway 查詢實作 | 已完成 | 2026-06-03 | 2026-06-03 | 程式 repo | 已新增 ITaskTraceStore、Trace 查詢 DTO、MySqlTaskTraceStore、參數化 SQL、HasMore 分頁、遮罩與錯誤測試，commit `f2958d3` |
| TaskTraceStore read-only manual 查詢驗證入口 | 已完成 | 2026-06-03 | 2026-06-03 | 程式 repo | 已新增 `MySqlTaskTraceStoreManualMySql56Tests` 與 `run-mysql-tasktrace-manual-query.ps1`，預設不連 DB、需 `AllowRead` 且禁止無條件查詢，commit `a9c9eca` |
| TaskTraceStore read-only 候選探查腳本 | 已完成 | 2026-06-04 | 2026-06-04 | 程式 repo | 已新增 `run-mysql-tasktrace-candidate-probe.ps1`，固定 `ExpectedMinRows=0` 供正式補驗前找出可用 `TaskId`，commit `2c817ec` |
| TaskTraceStore read-only 候選探查結果 | 已執行未命中 | 2026-06-04 | 2026-06-04 | 使用者手動驗證 | 已查詢 2026-01-01 至 2026-06-04，`Success=True`、`ExpectedMinRows=0`、`ItemCount=0`、`HasMore=False`、2 個 manual 測試通過 |
| TaskTraceStore 3A 完成稽核 | 已完成 | 2026-06-04 | 2026-06-04 | 文件 repo | 已整理 3A 目標要求、完成證據、read-only 候選探查、write/read/cleanup 補驗與後續停止線 |
| TaskTraceStore 真實 DB read-only 查詢驗證紀錄 | 歷史 read-only 無資料 | 2026-06-04 | 2026-06-04 | 文件 repo | 已執行 `task_log_traces` read-only SELECT，`Success=True`、`ItemCount=0`、`HasMore=False`、`ElapsedMs=387`；此為補驗前背景，後續 write/read/cleanup 已收斂 |
| TaskTraceStore write/read/cleanup 真實 DB 補驗 | 已完成 | 2026-06-04 | 2026-06-04 | 程式 repo / 文件 repo | 已在授權測試 DB 寫入下執行 `run-mysql-tasktrace-write-read-cleanup-validation.ps1`，寫入 2 筆 manual trace、查回 2 筆、`HasMore=False`、cleanup 刪除 2 筆；程式 commit `fa874f4` |
| 測試專案 | 進行中 | 持續補強 | 持續更新 | 程式 repo | 最新全量 `dotnet test` 紀錄通過 468 個測試；3D Application tests 30 passed |
| Modbus TCP Adapter 第一版 | 已完成 | 2026-05-29 | 2026-05-29 | 程式 repo | 已有 PoC、套件選型、設定映射、Adapter 第一版、模擬器整合驗證、錯誤處理、啟動補償斷線、rollback metadata、RecoveryPolicy、錯誤碼、接入點盤點與 Reason 分類驗證紀錄；真實硬體現場驗證延後第二階段 |
| TaskEngine / 狀態追蹤 | 已收斂 | 2026-05-29 | 2026-05-29 | 程式 repo | 第一階段 Task 追蹤已完成收尾檢查；資料庫、WebApi、ServiceHost 與取消 / 暫停執行入口延後到第二階段 |
| ServiceHost / WebApi / WinForms Debug Tool | 延後 | 第二階段後 | 尚未開始 | 程式 repo | 不屬於第一階段必要交付 |
| 文件同步 | 持續進行 | 每次重要開發後 | 持續更新 | 文件 repo | 程式 repo push 後自動同步 `status.json` |

## 狀態定義

| 狀態 | 說明 |
|---|---|
| 未開始 | 尚未建立或尚未進入實作 |
| 進行中 | 已開始實作，尚未完成驗收 |
| 待確認 | 已完成初步內容，等待檢查或討論 |
| 已完成 | 已完成並經過基本確認 |
| 延後 | 因範圍、依賴或決策尚未確定而延後 |

## 完成時間規則

- 預計完成時間：排定工作時填入，可使用日期或週別。
- 實際完成時間：工作完成、測試或文件確認後填入。
- 若尚未完成，填寫「尚未完成」。
- 若尚未排程，填寫「待排程」。
- 每次程式碼 repo 有重要 commit 或模組完成，應同步更新本頁。

## 下一步建議

1. 第五階段已完成，若要進入正式部署或真實現場整合，需另開新階段與授權節點。
2. 任何正式 DB 寫入、DDL / ALTER TABLE、正式 Apply、密碼使用、連線資訊保存、public method 簽章調整、外部 DLL 載入、production Swagger、正式部署設定或 Windows Service 安裝仍需停下確認。
