本文件適用於整個 Repository。若任務另有更小範圍的工作單,以工作單為準。
- 技術線為 .NET 10、ASP.NET Core Controller API、EF Core 10 與 SQLite。
- Solution 只有
src/WorkItems.Api與對應測試,沒有前端、登入、微服務或雲端部署。 - API 使用 DTO,不直接輸出 EF Core Entity。
DueAtUtc與CreatedAtUtc以 Unix milliseconds 儲存,維持 UTC 語意。- V2 的共同起點稱為「系列行為基準」,預定 Tag 為
series-behavior-baseline-v1。 - 舊
day-05-*Tag 與 Branch 是歷史座標,不得移動、改名或覆蓋。
系列行為基準刻意保留重複通知、通知早於資料儲存、字串狀態、字串優先序與 Controller 多重責任。這些行為由契約與 Characterization Test 固定,除非工作單明列新舊行為與驗收方式,不得順手修正。
固定時間來源、可控制通知結果與獨立 SQLite 資料庫用來維持實驗條件。它們不代表最終架構,也不能作為提前加入 Service、Repository、Outbox 或其他 Pattern 的理由。
修改前先確認並保留下列可觀察行為:
- HTTP Route、Method 與 Status Code。
- Request/Response DTO 與 JSON 欄位名稱。
- Validation Problem Details 的欄位與繁體中文訊息。
- 逾期處理的統計語意、通知次數與既有副作用順序。
工作單需要改變外部契約時,必須列出舊行為、新行為、理由與驗收方式。
- 執行環境固定為 Codex。
- 模型固定為
gpt-5.6-sol。 - Reasoning effort 固定為
high。 - 正式顯示名稱為「Codex GPT-5.6 Sol(high)」。
- 每次 Run 從指定的系列行為基準 Commit 建立隔離 Branch 或 Worktree。
- 保存執行日期、工具版本、起始 Commit SHA、完整 Prompt、原始輸出、完整 Diff、驗證輸出與人工決策。
- 無法確認模型、推理強度或起始 Commit 時,該 Run 只能作歷史試跑,不能作為正式文章證據。
- 模型不可用時停止實驗,不得自行替換成其他模型。
- 維持 Nullable Reference Types 與 TreatWarningsAsErrors。
- I/O 使用
async/await,接受並向下傳遞CancellationToken。 - 公開 API、必要型別與屬性使用繁體中文 XML 文件,不加入逐行重述程式碼的註解。
- 名稱表達領域意圖,避免只用
data、result、item等無法區分角色的名稱。 - 不因為「更 Clean」就預設新增 Layer、Interface、Service、Pattern 或套件。
- 先定位真實檔案、符號、呼叫端、資料流與副作用。
- 固定起始 Commit、允許修改範圍、保留行為與驗證方式。
- 從系列行為基準建立隔離候選後才修改檔案。
- 每個 Diff 只處理一個能說清楚的理由;發現第二個問題時另列工作單。
- 重構前先確認能描述既有行為的測試,不為了讓重構通過而改寫期待值。
在 Repository 根目錄執行:
dotnet restore .\AiCleanCode.sln --locked-mode
dotnet build .\AiCleanCode.sln --no-restore --configuration Release
dotnet test .\AiCleanCode.sln --no-build --configuration Release
dotnet format .\AiCleanCode.sln --verify-no-changes --no-restore
dotnet list .\src\WorkItems.Api\WorkItems.Api.csproj package --vulnerable --include-transitive
.\scripts\run-series-baseline-smoke.ps1- 不修改工作單未授權的 Production 檔案。
- 不提前新增高優先升級策略、第二通知 Provider、並行控制、Outbox 或最終架構。
- 不新增產品功能、資料庫 Schema、套件或架構層來完成單純重構。
- 不用 Formatter、Analyzer 或大量重新命名製造無關 Diff。
- 不把 Build、Test 或 Smoke 全綠直接解讀成需求、設計與全部行為正確。
遇到以下任一情況,停止修改並回報:
- 需求中的名詞、行為或相容性邊界無法從 Repository 與工作單確認。
- 必須超出允許檔案或改變外部契約才能完成。
- 現有測試、工作單與 Production Code 描述的行為互相矛盾。
- 正式實驗無法確認指定模型、推理強度或起始 Commit。
- 驗證失敗的原因尚未確認。