交付流程 · 產物閱讀
MARKDOWNdocs/QUALITY-WORKFLOW-IMPLEMENTATION.md

交付品質流程:開工實作計劃

2026-10-05:QA Draft MR !67 已追加真 API 寫入測試與 CI 入口。 本機連 dev:唯讀 12 項、寫入/回讀 15 項通過,三輪測資均清理確認;遠端 CI 待登入變數與執行。 stg 才供正式 QA 驗收;部署 SHA 尚未核對,不是完整 QA/W8 驗收。

團隊導入見第 10 節;共用待辦與唯讀 MCP 的收尾/接手見第 11 節(2026-10-04)。第 9 節為歷史換機交接,不再作為待辦入口。

更新:2026-10-04。目標分支:codex/quality-workflow-plan。狀態:共用程式與隔離驗證已實作;正式產品未啟用,W8 試行待真實輸入。

本文件是 現行流程計畫 的工程分解。本分支提供版本化配置/schemas、QA庫與CI範本、隔離runner、可信收集/受控發布/通知、Gap擴充、具名QA與同源Gate/工作包/看板。操作見 使用指引。IM QA 已選 contract repo 的 qa/;既有 Runner 已有工程試行證據,完整品質政策仍未啟用,新單的部署/資料與正式權限接線另行確認。以下 W0~W8 描述完整能力與驗收要求,不是第一張跟跑單必須一次完成的清單。

1. 開工摘要

完整能力的驗證路徑:QA 測試區 → MR 臨時環境單端驗收 → 固定部署組合 E2E → CI 自動回寫 → QA 透過 Agent 具名驗收 → contract Gate。人工發現的實作 bug 沿用 Gap,轉派與解除仍由具權限的 QA 操作。

工作包交付結果相依主要負責
W0 共用設定與試點定產品設定、Agent 工作包介面、Slice/owner 及各端測試命令無PM、QA、BE/FE、CI 維護者
W1 QA 測試庫受審案例、BE API/FE 模擬 API 腳本、固定測試版本W0QA/QA Agent、技術 reviewer
W2 產品 MR CI臨時啟動本次程式與依賴,跑自驗+QA 單端測試W0;驗收需 W1BE/FE、CI 維護者
W3 故障演練指定錯誤的正常/故障/復原證據與具名確認W1、可正常跑通的 W2QA、技術 reviewer、故障作者
W4 QA 庫整合 CI人選固定 BE/FE 產物,在 dev 跑真實 E2EW1、W2;必要時 W3整合 owner、QA、CI 維護者
W5 實作缺陷 Gap新類型、重現證據、QA 轉派/重驗、非阻擋改善可與 W1/W2 並行framework 維護者、QA
W6 結果回寫與通知可信 CI 結果進 contract,成功後通知待 QA 驗收W0 的資料模型;真實驗收需 W2、W4framework/CI 維護者
W7 全角色 Agent 與 Gate各角色取得狀態/待辦/工具;QA 具名接受、失效與同源 Gate工作包骨架依 W0;完整判定依 W5、W6framework 維護者、各角色
W8 跨產品驗證與啟用雙產品隔離測試、角色續接與完整流程實測、分批導入W1~W7產品 owner、QA、CI 維護者

第一張工程 MR 建議從 W0 的共用產品設定/Agent 工作包介面與 W1 的 QA 庫骨架 開始,沿用已有必要案例檢查器。BE/FE 的功能實作與 QA 腳本化並行,不等待整套 QA 腳本寫完才開發。程式審查可以提早開始;合併時才要求必要 CI、審核及本次必要演練齊備。

2. 已確認的執行邊界

2.1 Repo 與三種執行位置

位置維護什麼/跑什麼成功的意義
contract repospec/AC、介面權威引用、QA 計畫引用、Gap、可信證據與人的驗收結論依完整政策推導交付狀態;CI 綠不直接等於 QA 接受
BE repo 的 MR CI本次 BE 程式、自驗;從 QA 庫取固定版本的 BE 驗收BE 在本次測試環境符合必要條件
FE repo 的 MR CI本次 FE 程式、自驗;從 QA 庫取固定版本的 FE 驗收,使用契約一致的模擬 API真實前端在約定回應下正確操作與呈現
QA repo 的 CIQA 維護 API/browser/跨端腳本;整合 job 對實際部署的固定 BE+FE 組合跑 E2E該部署組合的必要整合案例通過,之後交 QA 人工驗收

QA 腳本不複製維護在 BE/FE repo。產品 CI 可唯讀 checkout/下載 QA 核准版本到臨時目錄;啟動應用及測試就在同一 job 可互通的環境內執行,避免跨 pipeline 無法連到臨時網址。QA suite 用 commit/不可變套件識別;1.0.0 可作人讀 tag,但須解析並記錄其實際 commit,不能每次拿浮動分支最新值。

後續若改用 QA downstream job 執行單端測試,必須傳遞指定 MR 產物並安排可達的環境,且上游等待實際測試結果。第一輪先採產品 job 取 QA 套件,降低跨環境連線成本。

2.2 開發前與開發中分別交什麼

提供者最小輸入不足時怎麼處理
PMspec/AC/業務規則、成功與失敗預期、固定版本QA 回提歧義,由 PM 定義
BE固定 OpenAPI/Swagger、請求回應與錯誤語義、必要副作用與可查詢結果介面未定先列待決;不能用現有實作猜 expected
FE/設計畫面路由、操作與狀態表、提示與互動約定;可沿用既有設計稿補出可觀察的預期行為,不要求開發前就有完整 DOM
BE/FE開發中逐步補啟動/停止命令、ready 檢查、測試設定、資料準備/重置、可用 URL無法啟動標為環境未就緒,不填 passed
QAAC → 情境 → 必要案例 ID → 檢查點;固定測試與 mock/fixture 版本區分案例已設計、腳本已撰寫、未執行、失敗、通過

QA 可先寫案例;介面確定後逐步寫腳本,等相應程式與環境可用才執行。QA 可讀 API/畫面約定並協作測試入口;expected 依需求建立。測試作者不取得實作 diff 與開發推理來倒推答案;可執行產物的黑箱操作不等於讀實作。

2.3 跨產品共用框架與產品設定

使用者明確要求:每個採用 contract 的產品,都應透過同一套工具得到角色指引、當前流程及下一步,不依賴原始討論或某位 Agent 的記憶。共用流程能力屬 framework 正式交付範圍,第一個產品只是驗證點。

framework 共用每個產品自行設定
流程規則、狀態推導、角色權限、Gate、Gap 交接、證據與驗收 schemaproduct ID、contract/BE/FE/QA project 與 repo、ownership
Agent 工作包、命令說明、角色指引、生成器與版本相容檢查各端技術棧、啟動/測試/reset/ready 介面、Runner 與測試環境
CI/QA 庫範本、可信來源核驗與通知介面核准 suite pin、必要案例、部署產物來源、通知對象、憑證引用

共用模組不硬編產品名稱、路徑、票號前綴、GitLab project ID 或 Python/Node 等技術棧。產品透過版本化設定與 adapter 接入,不能為每個產品複製一套 dcx/Gate 邏輯。設定沿用 .delivery-contracts 的產品識別與 framework pin,新增部分需 schema 與 doctor 檢查;密鑰只留安全引用,不進 Agent 工作包。

角色啟用與職責對應依產品 ownership 宣告;整合 owner/技術 reviewer 是責任,不強加新的 CLI 角色。啟用這套完整流程時必須有人承擔 QA 驗收,不能因 QA inactive 就略過最終接受。不同產品可選測試工具及適用案例,但必要驗收、可信證據與人類確認的規則一致。

新產品的接入範本預設列出完整流程;既有產品逐一檢查、升級 pin、生成指引並啟用。分批導入是上線方式,不表示流程只提供給首個試點。保留未啟用產品的舊行為,避免未備妥環境時無預告改變關卡。

3. 共用資料與狀態設計

W0 先定以下最小資料模型,W6/W7 再實作正式 schema。欄位應重用既有角色、Stable ID、ownership 與 Run 授權資料,避免平行維護。

記錄最少內容
驗收標準ticket、AC/BR、案例 ID、層級 be/fe/integration/manual、必要性、QA suite commit、介面版本、業務與技術核准引用
測試執行execution ID、受測角色/範圍、程式 commit、產物 digest、QA suite commit、必要清單版本、runner 原始結果、GitLab project/pipeline/job ID、原始 artifacts
部署組合candidate ID、實際 BE/FE commit 與 digest、部署 ID、環境、設定/migration/fixture 版本、核對時間
QA 確認ticket、candidate/證據版本、驗收範圍、accept/reject、具名 QA 身分、理由、時間、相關 Gap
故障演練觸發理由、基底/測試版本、指定故障與應失敗案例、三次結果、隔離及復原證據、QA/技術 reviewer 結論

QA repo pipeline 的 commit 是測試程式版本,不能拿它當 BE/FE 受測版本。 W6 必須分開驗證「執行腳本版本」及「實際部署產物」。

標準核准、CI 執行結果、QA 最終驗收是三種不同紀錄。不能以測試標準核准或一般 Agent Run accepted,直接代替 QA 對交付版本的接受。

狀態採獨立欄位:自動測試 not_run/running/passed/failed/error、QA pending/accepted/rejected/stale、Gap 的生命週期與 blocks、既有角色版本狀態。看板呈現原因,不把不同狀態混成單一「完成」。完整整合通過後才顯示待 QA 驗收;必要證據不足或環境錯誤不能成為 passed。

3.1 Agent 每次開工/續接要取得的工作包

擴充既有 dcx open <ticket> --role <role> --json 與 orchestrator-mvp/run-agent.py 的 work package。現有 --stage contract-draft/ready-for-build 是呼叫者要求的契約檢查階段,不能直接當作系統已確認的整體流程進度;新流程狀態必須由有效紀錄推導。

工作包需回答內容
我在操作哪裡?product、ticket、contract root、產品 workspace/repo 對應、工具與政策版本;缺實作路徑就列待提供,不能猜
我是誰、負責什麼?已驗證身分、角色、ownership、負責 AC、寫入範圍、reviewer/交接對象
目前進度?規格/介面、QA 案例/腳本、各端 CI、適用演練、整合、QA 接受各節點的狀態與依據;含最後核對時間
現在可以做什麼?依角色列可立即執行的下一步、仍在等待的項目、缺資料原因與誰提供;多端並行不壓成單一階段
要怎麼用工具?真正可用的命令、參數、執行目錄、產品設定引用、前置條件、輸入與預期輸出、是否需人確認
什麼才算完成?必要交付、測試/證據版本、成功條件、寫回位置及交給誰;不以執行 exit 0 或 Agent 自述代替審核
出問題怎麼處理?可用的查詢/重試/Gap/轉派建議/修復提交方式;工具尚未接線時明列限制與 owner,不提供不存在的命令

狀態與下一步由同一品質評估核心供 CLI、Agent、看板使用,包含資料未知/過期/權限不足的原因。Agent 執行寫入、觸發 CI 或提出驗收前重新讀取狀態,操作入口核對版本及權限;不能依上一次聊天的舊結果放行。回寫與通知成功不取代測試及驗收紀錄。

角色/責任Agent 在適用階段收到的工作提示
PM補需求與 AC、裁定歧義、確認範圍/版本;顯示等待 PM 的問題
UI/設計(有此角色時)補畫面狀態與操作約定,交 FE/QA;無獨立 UI 時依 ownership 明定接手者
BE補 API/啟動與資料介面、實作及自驗、跑 QA BE 驗收、提交修復;判錯端只能建議 QA 轉派
FE補畫面可觀察行為/啟動介面、依契約 mock 開發及自驗、跑 QA FE 驗收、提交修復
QA先設計案例,介面可用後腳本化;看結果、人工驗收、開/轉派 Gap、重驗並具名確認
技術 reviewer/整合 owner按實際身分映射取得測試審查、演練核對、固定部署與整合任務;責任本身不自動授權

人類的業務決定與核准仍明確交人處理。這個入口提供上下文與工具導航,無須引入自動召集所有 Agent 的工作流引擎。換一個 Agent 或重開對話,也應能重新取得同一組最新且有依據的下一步。

4. 各工作包的修改與驗收

W0 — 試點、輸入範本與資料模型

先在 framework 建立產品接線填寫表與 BE/FE 測試介面範本,再由試點產品填入真值。預定位置為新增 examples/quality-qa-repo/ 的說明/範本及上述資料模型;不假裝已有正式 QA project ID。

  • 列出 contract/BE/FE/QA repo、固定 framework 版本、PM/QA/技術 reviewer/整合 owner/CI 維護者。

  • 先定共用產品設定 schema、能力宣告、Agent 工作包輸出與命令描述介面;提供兩個不同產品設定範例,讓後續各包回填相同的狀態與下一步。缺必要設定的 doctor/開工提示要有具體原因及 owner。

  • 區分單端 MR 必跑清單與部署後整合必跑清單;同一 AC 可對應不同責任,不機械複製三份案例。

  • BE Swagger 與 FE 狀態約定可以先確認,啟動命令隨實作補齊;mock 的欄位、狀態碼與業務語義引用同一契約。

  • 定義人工項目與受測範圍;必要人工驗收在 QA 階段完成,不偽裝成 JUnit passed。

  • 驗收:選定一張小 Slice,各角色知道要交什麼;未齊備資料有 owner,模型與範本經 QA/技術 reviewer 審查。

W1 — QA 獨立庫與可執行測試

先交付可複製的 QA 庫範本,再接到獨立 QA repo 或 contract repo 的 qa/。建議結構:cases/、tests/be/、tests/fe/、tests/integration/、fixtures/、adapters/、CI 設定及鎖檔;實際目錄可配合技術棧。

  • 先延用產品熟悉的 BE 測試工具;FE 範例用 Playwright 操作真實頁面並攔截瀏覽器 API。工具不影響獨立性定義。

  • FE 測例包含正確請求的 method/path/資料、成功/失敗提示、處理中狀態與防重複操作;mock 回應不能成為測試唯一斷言。

  • page.route 適用瀏覽器發出的請求;若 FE 有 SSR/BFF 的伺服器端 API 呼叫,另提供契約 mock 服務及依賴設定,不能宣稱瀏覽器攔截已覆蓋。

  • BE 測例呼叫真實測試 API,檢查回應與必要資料副作用;測試資料須可重置,依產品採 DB 或約定的觀察 API。

  • 保護 cases、mock/fixture、adapter、harness、鎖檔、CI 及必要清單。QA/產品人審業務標準,技術 reviewer 審測試程式;修改需重新核准。

  • QA suite pin 更新必須連到契約/案例影響及核准,不能由產品 MR 任選一個較寬鬆的舊版本。

  • 驗收:測試能在指定 FE/BE 產物執行;刻意錯誤的請求/畫面/資料會失敗;沒有測試的必要案例不會被當成通過。

W2 — 在 MR CI 臨時啟動產品服務

修改真實 BE/FE repo 的 CI、測試啟動與資料腳本;framework 提供接線範本,保留 現有 checker。各 job 取得本次 MR 對應程式及固定 QA suite,記錄實際測試 commit;不連共用 dev 冒充本次 MR。

FE jobBE job
安裝/建置指定程式與瀏覽器依賴安裝/建置指定程式與依賴
啟動 FE,等待 URL ready啟動隔離 DB/Redis 等必要服務,migration/seed,啟動 BE 並等待 ready
跑自驗及 QA FE 腳本,API 依契約 mock跑自驗及 QA API 腳本,核對真實資料結果
保存 JUnit、trace/截圖與 server log保存 JUnit、API/service log、必要資料檢查結果
停止臨時服務、清理本 job 資料停止臨時服務、清理本 job 資料
  • 每 job 的名稱空間、port/network、DB 與資料隔離;容器服務用正確 hostname。取消、timeout、測試失敗仍保存可得結果並執行清理,不能因清理成功蓋過失敗。

  • 單元測試與驗收 job 可分開,pipeline 必須包含全部必跑 job。零案例、skip、漏 job、缺報告、runner 非零都拒絕;必要清單不能從當次結果反向生成。

  • 測試啟動由產品/CI 維護者實作;QA 測試只接收約定 URL/設定,設定不得混入正式資料或憑證。

  • MR 可提早開、Reviewer 可同步看;合併需 CI 成功、標準/程式審核完整及適用的故障演練已接受。FE 先合併時須維持既有功能相容或用關閉的 feature flag 隔離未完成路徑。

  • 驗收:新 commit 會重新測;舊綠燈不可覆蓋新提交;一端未完成不妨礙另一端的單端測試;並行兩次 job 資料互不污染。查核站台保護設定,無法強制者明示為試行限制。

W3 — 在可跑通之後執行必要故障演練

依本地範例建立產品的演練操作說明,第一輪可由人指派隔離任務,不建自動風險決策系統。正常實作與核准測試能跑通後才進行,並於需要該演練的合併/交付關卡前完成。

  • QA Agent 提出這次是否需要演練、原因、錯誤與對應案例;QA+技術 reviewer 確認範圍。

  • 觸發:首次建立標準、重要測試/執行路徑變更、新增或改變高風險行為、漏驗缺陷。一般實作變更仍重跑正常測試,但不一律重做演練。

  • 故障作者另接任務,指定隔離 worktree/checkout、資料與服務;只改受授權的產品實作,驗收測試唯讀。可由開發 Agent 另任此職,不能自行核准。

  • 保存正常綠 → 指定業務斷言紅 → 復原綠。未啟動、編譯錯、環境失敗不能當抓到錯;需要修測試就回 W1 審新版本並重做。

  • 驗收:一個真實漏驗故障被指定檢查抓住;Agent 不能自選免做;未隔離的共享資料不可被演練改動。

W4 — 固定部署組合,在 QA 庫跑真實 E2E

第一輪由 QA/整合 owner 在 GitLab 手動啟動 QA repo pipeline,輸入候選 ID/環境/範圍/核准 suite 版本。後續 QA Agent 代呼 API 仍使用同一入口,不另造一套結果規則。

  • 合併後形成確切 BE/FE 產物;若未測 merged result,先重跑適用測試,再進交付。各端先合併不表示整個功能已可驗收。

  • 整合 owner 部署固定組合,從可信部署紀錄及實際服務核對版本;僅填參數 SHA 不是已部署的證明。

  • 測試前後核對版本;共享 dev 須有部署/測試協調鎖或隔離候選環境,否則偵測換版就作廢重跑。人工驗收期間仍須能識別換版。

  • E2E 連真正 BE/FE;BE/FE 邊界不可再 mock。必要外部第三方使用受控測試服務,報告明示範圍。

  • 保存原始結果與同一受測產物 digest;交付 QA 的環境/產物與報告必須對得上。若搬到另一驗收環境,另核對設定並執行必要部署檢查。

  • 驗收:BE/FE 單端綠但整合紅時無法進入待 QA;A 的報告不能交付 B;測途中換版會失效;只成功啟動 pipeline 不算測完。

W5 — Bug 沿用 Gap,維持原有 QA 權限

預計修改 dcx、tools/run_protocol.py、schemas/run-result.schema.json/reference、tools/board.py、dashboard 類型/顯示、Agent 指引及產生器。新類型建議名為 implementation_defect;非必要改善的類型建議 improvement。名稱需在本工作包固定,兩者都不自動升業務契約 revision。

  • Gap 記錄受影響 AC、重現步驟、預期/實際、受測 BE/FE/QA suite 版本、環境、證據。受阻角色為 QA;assign 是修復端,可先空白。

  • 責任不明由整合 owner 協調;FE 認為應交 BE 時提出理由與證據,由具權限的 QA reassign 同一筆 Gap。保留 _gap_authorization 的既有規則,不擴權給修復方。

  • 修復端 submit-fix 提交修正與測試依據;仍待 QA 依新版本重驗,具權限者再 resolve。解除一筆 Gap 不等於整體驗收接受。

  • 違反本次必要 AC/規則必須帶 blocks;未違反約定的改善可保持 open、blocks: [],不阻擋 QA Gate。不能把違反必要 AC 的 bug 直接改名改善來繞過。

  • 既有 Gap 原始內容受不可改寫限制;若需要事後調整阻擋性,新增可稽核的分類事件(名稱草案 reclassify),由原提出者/受阻角色授權人操作,附理由;涉及需求範圍須有 PM 決定及契約更新依據。不得直接覆寫 blocks,也不放寬 reassign/resolve 權限。

  • 關聯 AC 與 blocks 要分開保存,非阻擋改善也能查到相關 AC。新欄位優先向後相容,舊紀錄仍可讀。

  • 驗收:QA 可開/轉派/確認;修復方越權被拒;待確認修復仍紅;合法 advisory 可與綠燈共存;偽造 actor、修改歷史或自行清空 blocks 均拒絕。

W6 — 可信 CI 結果回寫與通知

新增獨立的品質證據模組及 schema,建議 tools/quality_evidence.py;dcx 提供窄入口。JUnit 核對可重用必要案例檢查器;可信 CI 來源與部署核驗需另外實作。contract 中只存索引、狀態及必要摘要,完整報告保存於可保留的 artifact 儲存。

  • 完成事件只作觸發提示;受控收集器向 allowlist 的 GitLab project/pipeline/job 取得實際狀態、commit 與 artifacts,核對 QA suite、必要清單、受測程式/產物、部署組合。不能只信任 Agent 自報 passed 或傳入網址。

  • 產品 MR job 沒有 contract 寫入憑證。 受保護的收集器可寫的範圍僅限結果紀錄;不得改需求、驗收標準或替 QA 接受。

  • 收集器在來源測試 pipeline 完成後執行;不在同一個尚未完成的 pipeline 中要求它已成功,避免相互等待。失敗結果也可回寫診斷,只有可信完整通過才成為放行證據。

  • 以來源 project/pipeline/job+candidate+suite 版本去重;重送不重複通知,晚到的舊結果不可覆蓋新候選狀態。寫入失敗可重試,不產生假綠燈。

  • 結果提交若產生新的 contract commit,不應因純證據/通知變更使測試自我失效;用真正影響行為的契約/介面/標準內容來綁定。

  • BE/FE 單端結果可回寫進度;只有固定組合整合與必要條件通過,才通知「待 QA 驗收」。通知最少含 ticket、候選版本摘要、範圍、結果/證據連結與 QA 下一步。

  • 通知第一版走產品既有可達 QA 的入口(優先評估既有 Jira 同步能力),實際通道於 W0 指定;不假設 Agent 會自動接收推播。通知發送失敗不抹除測試結果,顯示失敗並可重試;QA 亦能主動查詢。

  • 驗收:假 artifacts、錯 project/job/commit、過期報告、舊結果重播、無權限 API、版本不符均不能使 Gate 通過;重試不多寫一份驗收結論、不重複通知。

W7 — 全角色 Agent 工作入口、QA 確認與 Gate

先依第 3.1 節實作共用工作包,讓 PM/UI/BE/FE/QA 與具名 reviewer 都能取得適合自己的狀態、工具及下一步,再接 QA 最終確認。狀態評估、命令說明與生成指引必須同步,不能只在最後加一段 QA prompt。

預計修改 dcx 的 open/next actions/role 及生成器、orchestrator-mvp/run-agent.py 的工作包/續接與輸入重驗、agents/roles/{pm,ui,be,fe,qa}.md,並同步版本化 schema、AGENTS/CLAUDE 與 .agents/.claude 生成指引。W0 定介面後即隨 W1~W6 逐步串入,最終在 W7 驗收完整流程。

新增品質查詢/驗收 CLI,底層用同一套品質評估函式提供 dcx open/gate/board。命令名稱於實作時固定,文件示意不冒充現有功能。

  • QA 在 Agent 查本單受測組合、測試結果、人工項目及 Gap;明確表示「接受這次驗收」或「退回及原因」,Agent 記錄到 contract。必要對象資訊不完整時補問,不能把含糊的聊天「好」視為指定版本驗收。

  • Agent 是操作代理,確認人是具權限的 QA 自然人。正式寫入使用可驗證的登入/GitLab 操作者身分與 ownership 對應;不信任任意 --author 字串。若寫入者是共用 bot,仍須保留並核驗原始人類授權,不能把 bot commit 當作人的同意。

  • 後台可由受控 branch/MR 或既有 bot 寫入流程驗權,但不要求 QA 手動找 MR;狀態只在正式寫入通過後生效。Agent 可呈現可追溯連結。

  • QA 接受綁定驗收範圍、候選、標準及證據;與目前候選不同或資料過期時拒絕接受。發現缺陷依 W5 開 Gap,QA 重驗後另記接受。

  • 啟用品質政策的產品,總 Gate 同時要求:既有角色/版本條件、必要單端及整合測試、適用演練、必要人工項目與 QA 接受、證據版本有效、無 blocking Gap。ready_for_qa 與 QA accepted 分開。

  • QA 完成後,程式、標準、測試執行路徑或必要環境設定有影響驗收的變更,轉 stale/待重驗。未知影響先待重驗,由 QA 決定範圍;部分沿用需明確保留依據,不能把舊報告套到新產物。

  • 第一版以候選/內容版本保守失效,證據、通知等非行為變更不自我失效。精細到檔案的自動免重驗延後,仍保留人工依影響選範圍。

  • 採顯式 opt-in 與版本化設定。未啟用的產品維持現有 Gate;啟用卻缺資料/QA 未配置時拒絕,不默默退回舊綠燈。

  • 驗收:CI 綠但 QA 未接受不能綠;舊接受遇換版失效;無權限/假身分接受被拒;advisory 不擋;CLI 與看板同結論;未啟用產品的既有行為保持相容。

W8 — 跨產品驗證、正式試行與導覽同步

先發布已驗證的 framework 版本並更新試點產品 pin/生成文件,再寫入新 Gap 類型或新驗收紀錄;舊工具不認得新類型時須明確拒絕,不能刪資料來相容。新政策顯式啟用,保留未啟用產品的既有行為。

在不含正式資料的產品測試環境跑一次完整流程:正常通過 → QA 發現 bug → Gap → 指派錯端交 QA 轉派 → 修復與重跑 → QA 解除並接受 → 更換受影響版本重新待驗;另保留一筆非阻擋改善,驗證它不造成紅燈。

另以兩個不同產品的設定/隔離 fixture 驗證相同框架:不同 ticket 前綴、repo、測試工具、環境與角色人員,不能串用另一產品的證據、Gap、通知或憑證。第一個產品完成真實 Slice 試行後,第二個產品依接入指引及配置接線,無須修改共用流程程式;不同技術棧只實作約定的 adapter。

同步 agents/roles/{pm,ui,be,fe,qa}.md 及生成器、docs/AGENT-WORKFLOW.md、流程 HTML 與範例。QA 庫分工、MR 臨時環境、整合 CI、回寫及 Gap 新類型都要說明;流程文件隨功能落地更新實作狀態。生成文件由產生器更新,不能只改產品輸出檔。

驗收:正常路徑及約定拒絕路徑有真實紀錄;人能從 contract 找回原始報告與版本;QA 不必手動搬報告/找 MR;產品 owner 確認實際權限及旁路限制後啟用。功能旗標與回復方案先備妥;停用必須具名記錄,不能因某張單紅燈而自動停用,且歷史證據保留。

5. 工程驗證清單

以下是開工後的必要測試範圍,不代表本次已執行。

工作包必驗反例/既有測試落點
W1/W2BE 未做完時 FE 單端可跑;錯請求不能被 mock 放過;臨時 DB 隔離;服務啟動失敗;MR 新提交;必要 job 消失/案例漏跑/skip/原 runner 非零。沿用 tests/test_required_cases.py,產品各自測 CI 行為
W3正常綠/指定斷言紅/復原綠;故障仍綠、編譯錯、資料串用均不接受
W4單端綠但跨端紅;部署產物不符;測中換版;QA suite commit 與產品 commit 不同仍可正確核驗
W5tests/test_agent_workflow.py、test_ci_ownership.py、test_run_protocol.py、test_gap_basis.py、board/dashboard 測試;新增 kind 與 schema 一致,舊紀錄仍可讀
W6新證據核驗測試;偽造結果/舊候選重播/重複事件/回寫衝突/artifact 失效/通知失敗
W7新 Agent 僅依工作包即可定位產品/角色/待辦/工具;並行狀態、續接、換版、未接線命令與執行前重驗;test_agent_workflow.py/test_run_protocol.py。Gate 接受/拒絕/失效狀態與權限測試;QA inactive 與品質 opt-in 衝突;既有 test_roles_inactive.py、test_legacy_validation.py、test_r2_revalidation_feedback.py;看板同源判斷
W8雙產品資料/身分/通知隔離、相同政策一致、配置缺失、工具版本與生成文件同步、新對話角色接手;第二產品只靠配置與 adapter 接入。產品 GitLab 實際權限與完整交接驗證;tests/test_quality_docs.py、quality-workflow.test.mjs 及生成檔檢查

實作每一包先跑相關測試;改到共用 CLI/schema/授權後,再跑 repo 既有 CI 必要檢查。文案與計劃更新本身不新增鏡像測試。

6. 開始接真實產品前需補的資料

本節是完整品質政策的接線清單;逐步跟跑先依第 10 節及團隊教學,只補選定範圍實際需要的資訊。

2026-10-02 使用者決定:首個試點產品為 IM,採用下一張新工單。 工單建立後再確認 Slice 編號與範圍;不以既有 IM-1421 作為本次試點。 試行 QA 負責人由 Leo(@ptp_leo)暫代,負責確認驗收標準及對指定候選作最終接受/退回。 技術 reviewer 由 Dino(@ptp_dino,既有 GitLab ID 211)擔任,負責審查測試程式與故障演練。 QA Leo 的既有 GitLab ID 為 201;兩位身分對應已從 IM ownership 核對。 整合 owner 也由 Leo(@ptp_leo)暫代,負責協調 BE/FE 測試環境部署、核對固定候選版本並交付驗收。 小團隊試行採職責兼任,不要求每項職責由不同的人擔任,也不另設專職 CI 維護者、UI 或替補。 CI/Runner 接線由 Agent 協助實作與檢查,整合 owner 協調必要的帳號權限與部署資源; PM/BE/FE 沿用既有 ownership;IM-1421 本輪後台範例不需設計稿,由 FE 依 PM 規格補畫面行為。 替補依實際需要再補,不作本輪試行前置條件。 QA 與技術 reviewer 也可由同一人兼任,不限定 QA 組長或額外人力;業務與技術審查須以 review_role 分別留下紀錄。 同人兼任會明示於看板及查詢,不視為獨立第二人審查,也不代替 QA 最終接受。IM 仍沿用已選定的 Leo/Dino 分工,未自動改派。後續先查既有 repo/CI 設定,只向使用者詢問查不到的資訊或需人決定的事項。

2026-10-02 使用者確認:IM 測試放在 im-delivery-contracts/qa/,不另建 QA repo。QA 與 contract 使用同一 project ID/URL,suite_path=qa;先完成 framework 支援,正式接線仍待新工單、Runner 與部署資料。

2026-10-05 補充:設計稿由 PM 逐張 Jira 判斷是否需要;前台 App 也非每單必備。 UI 維持手動畫 Figma,PM 暫代固定版本與畫面的交接窗口;無稿的單由 FE 依 AC 與既有畫面規則實作。 IM 釘選 v0.6.17 的 roles_inactive.ui 是產品級停用,尚無逐單設計稿適用設定。 待補能力是逐單判斷與對應檢查,以及 PM 兼任交接時所需的角色權限;不能直接全面啟用 UI 代替。 跟跑先在原 Jira 記錄判定與設計連結,這次只調整文件,未修改 IM 的契約、ownership 或 CI。

以下是其餘接線輸入,不妨礙 framework/範本工作先開工;未提供時不能聲稱產品試行完成。

待填負責人最晚使用點
新工單的 Slice、contract/BE/FE/QA repo 與 GitLab project ID產品 owner/PMW0;W1 建真實庫前
BE 技術棧、FE 是否含 SSR、測試/啟動命令、DB/依賴及 mock 邊界BE/FEW1/W2 接線前
Runner executor、可用映像、跨 repo 讀權限、GitLab 版本/保護能力Agent 查核;整合 owner 協調權限W2 接線前
dev 部署入口、可核對的產物識別、測試資料與環境鎖整合 ownerW4 前
contract 受控寫入身分、QA 具名操作身分與 ownership 對應framework/產品維護者W6/W7 正式寫入前
通知目的地與接收人、artifact 保存期QA/產品 ownerW6 試行前

共用框架須支援所有採用 contract 的產品,透過產品設定與 adapter 導入。暫不做:自動判定免演練/免驗收、每張 MR 部署完整跨端預覽站、Jira 唯一入口改造、全產品同時強制遷移。QA Agent 自動觸發 pipeline 是手動入口穩定後的薄層擴充;本期必須完成的是結果自動回寫與 QA 具名確認。

7. 技術依據

官方文件核對日期:2026-10-01。公司 GitLab 版本、授權與實際 Runner 能力仍須依第 6 節查核。

8. 本地實作交付紀錄

工作包本地交付正式產品尚待
W0version 1配置/schema/doctor、實際命令與工作包、兩產品範例owner/Slice/repo與身分定案
W1QA測試區骨架、固定suite與受審標準、真browser/HTTP fixture產品QA測試區/測試腳本及兩項審查核准
W2臨時服務/資料隔離harness、timeout/cancel清理、原始runner/JUnit、單端GateBE/FE CI接線、Runner及必要job保護
W3適用性兩項審查確認、下載核對三段原始CI/JUnit、指定業務斷言/復原正式隔離演練與具名核准
W4固定部署model、QA手動pipeline範本、GitLab部署與live probe前後核對dev部署/鎖/digest與實際E2E
W5implementation_defect/improvement、完整重現、reclassify稽核、原權限保留產品Gap試行
W6allowlist完成pipeline/必要job/原始artifact收集、去重、錯誤診斷、只追加結果的MRpublisher、通知重試寫入身分/保護設定/通知adapter及目的地
W7CLI/Runner/看板同源、五角色/生成器、具名QA、scope/manual/失效與總GateQA登入/正式MR授權與團隊接手
W8雙產品不同ID/票號/人員/工具的隔離全流程、換Agent續接發布framework pin、正式產品完整試行、owner確認旁路

試點產品已選 IM,將以下一張新工單試行;Slice 與其餘接線資料待定。 本地 transport 與 fixture 沒有當作正式驗收, IM保持未啟用;沒有推送、合併、正式部署或對外通知。備份分支保留。 本次實測如下;原工程驗收要求仍是正式產品試行依據。

2026-10-02 本地驗證

  • 共用實作提交:ed281a4(可信證據、具名 QA、Gap 邊界、CLI/Runner/看板與生成指引)。

  • python3 -S -m unittest discover -s tests -p 'test_*.py' -v:298 項,296 通過、2 跳過。新增品質流程 43 項涵蓋雙產品、原始 CI/JUnit 核驗、實際執行時效、候選/契約失效、具名授權、MR 手編反例、通知重試與 publisher 邊界。

  • 跳過原因:可選 PyYAML 未安裝,以及 worktree 相對路徑找不到相鄰 IM repo。後者已指定真實 IM 路徑,唯讀 git archive 到臨時目錄補驗通過;沒有修改 IM 或切換服務。

  • dashboard:30 項 Vitest、TypeScript、正式與離線建置通過;離線 HTML 已重新產生。導覽 Node 測試 4 項通過。

  • Go:go test ./... 與 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build 通過。

  • 生成器:15 份輸出一致,demo contract check 通過;git diff --check 通過。

  • 真瀏覽器 fixture:FE 契約 mock 正常綠、刻意錯請求紅、真實 FE→BE→SQLite 整合綠且付款副作用只有一次。BE 既有示範的正常/兩種業務故障/復原均符合預期。

  • 文件可讀匯出:19 頁,沒有缺失參照。這些 fixture 與模擬 API 結果只驗 framework 行為,尚非正式 GitLab、部署或人工驗收證據。

正式接線仍待第 6 節產品/人員/Runner/部署與通知輸入;未發布 framework pin、 未推送或合併本分支、未啟用正式產品、未部署或發送外部通知。主 checkout、IM repo 與既有備份分支保持原狀,後續從本分支及 操作指引 接續。

2026-10-02 小團隊兼任調整驗證

  • QA 與技術 reviewer 可同人兼任;標準、演練適用性及演練證據按 review_role 分別核准,不能用一筆審查完成兩項職責。既有分人紀錄可相容讀取,最終 QA 接受仍獨立確認。

  • 新增 5 項 Python 行為測試,涵蓋同人完整流程、演練雙職責、越權職責、手編省略職責及既有紀錄相容。品質測試共 48 項通過;完整 Python 303 項,301 通過、2 項沿用前述環境原因跳過。

  • 看板明示同人兼任/分人審查:31 項 Vitest、TypeScript、正式及離線建置通過,離線 HTML 已更新。15 份生成文件一致、demo contract check 與 diff whitespace 檢查通過。

  • IM 既定 Leo/Dino 人員配置及正式產品啟用狀態未改動;本次只完成 framework 本地調整。

2026-10-02 Contract/QA 共用 repo 驗證

  • IM 採 im-delivery-contracts/qa/;框架允許 contract/QA 共用 project ID 與 URL,明列 suite_path=qa,保留獨立 QA repo 相容性。

  • 固定乾淨 suite commit、子目錄執行與報告路徑核對;測試及收集使用不同 pipeline,明確區分 integration/collect/notify action。

  • qa/ 單獨變更也核驗 MR 作者;collector publisher 拒絕夾帶測試或標準修改。CI 憑證環境隔離仍須正式站台接線實測。

  • 新增 6 項行為測試;品質測試 54 項通過。完整 Python 309 項,307 通過、2 項沿用前述環境原因跳過。

  • 15 份生成文件及 demo check、4 項導覽 Node 測試、兩種配置 schema、CI YAML 語法與 diff whitespace 檢查通過。未執行正式 GitLab CI lint 或 Runner。

  • 本次僅完成 framework/範本本地交付;IM pin 與正式品質政策尚未更新。

2026-10-02 IM Runner/CI 本機盤點

使用者選擇本輪先整理本機結果,GitLab 即時設定查核延後。未啟動 pipeline、變更遠端設定或部署服務。

項目已核對的本機證據沿用判斷與待查
Contract/QA repoim/im-delivery-contracts,本機 f5dffa8,framework pin v0.6.17;CI tag=im-runner,註解記載 Shell executor優先評估既有 Runner;線上 Runner ID、executor、狀態、保護及容量尚未查證
後台 FEim/frontend/adminim_6t,本機 ee58052;已配置 origin,既有 SSH 唯讀 ls-remote 成功且遠端 main HEAD 一致deployment.md 的「尚無 remote」已過時;不能據此判定尚未建遠端專案。Runner/部署狀態仍未知
FE 現有檢查GitLab verify job:api:generate、generated drift、pnpm verify;Node 24.18.0、pnpm 11.13.1;dist 保存 7 日,未定義發布 job可沿用自驗命令;尚無獨立 QA 驗收 job。CI 未指定 runner tag;若接目前 im-runner,需確認 tag/untagged 規則與 Shell 主機工具版本,image 不提供 Shell 隔離
BE既有 IM-1421 manifest 的介面來源為 backend/6t-im;本機 IM 下只有 frontend 與 contracts可作後端定位線索,尚未查證正式 URL、project ID、CI、啟動/測試/DB 命令;不將 IM-1421 改作試行工單
產品 devFE sources.md 列出 6t-im-api.ljbdev.site 的 API 文件入口;部署文件無已驗證的 FE dev 域名API 文件入口不等於可驗收的固定部署。contract CI 裡的 dashboard-deploy 是交付看板,不是 IM 產品 FE/BE 環境

接線前可由 Agent 處理的具體差異:

  • Contract 目前 stages 為 validate/generated/impact/baseline/build/deploy,沒有範本的 test stage;接入時須明確增加或對應 stage,合併既有 workflow,不直接覆蓋。

  • Contract default.before_script 會建立 .ci-venv/.ci-cache。整合 job 不能直接把這份工作樹當乾淨 suite checkout;需另外取固定 commit 的乾淨 checkout,binding/profile 暫存放外面。

  • 保留既有 contract/FE 自驗,新增明確 integration/collect/notify 路徑;回寫結果與 push 不自動觸發整合。

  • 接 QA 前須核對既有 DELIVERY_BOT_TOKEN、Jira、SSH 部署憑證及新增 collector 憑證的作用範圍。檔案只看得到引用,不能宣稱已完成隔離;測試 job 不得繼承寫入或部署憑證。

仍需 GitLab/Runner 實況才能確認:project/runner ID、近期成功 jobs、保護與變數 scope、跨 repo 讀取權限、瀏覽器與 DB 隔離能力。新工單出來後再確定採用哪個 FE/BE 與候選部署;本次後台 FE 盤點不代表新工單範圍已定案。

9. 歷史換機交接(2026-10-02)

本節保留當時的查核與指令;smoke 待辦已由後續工程試行完成,接手請改看第 10 節。

使用者要求將目前進度提交並推送遠端,這次不執行 CI,之後改在另一台電腦接續 Codex。以下取代前述歷史紀錄中「尚未推送」的當前狀態;舊段落保留作為當時的查核紀錄。這次只保存進度,不觸發試行、不合併、不發布版本或啟用產品。

分支與接手入口

Repo接續分支本次交接前的程式基準先讀
ai-tool/delivery-frameworkcodex/quality-workflow-plan9b6ec0b本節、QUALITY-WORKFLOW-USAGE.md、QUALITY-WORKFLOW-PLAN.md
im/im-delivery-contractscodex/im-qa-pilotd9c725aqa/runner-smoke/README.md、.gitlab-ci.yml

兩個 repo 都使用既有 GitLab:gitlab-aha.okkia.site,SSH port 8022。新電腦可在選定的父目錄取得兩個分支:

sh
git clone --branch codex/quality-workflow-plan ssh://git@gitlab-aha.okkia.site:8022/ai-tool/delivery-framework.git
git clone --branch codex/im-qa-pilot ssh://git@gitlab-aha.okkia.site:8022/im/im-delivery-contracts.git

若已有 clone,先檢查 git status,保存自己的修改,再 fetch origin 並切換上述分支、以 fast-forward 更新;不要覆蓋另一台已有工作。把兩個 repo 加入 Codex 工作區,先讀交接文件及適用的 AGENTS.md。原電腦 worktree 路徑不是接手前置條件。

已完成與既定決策

  • framework 已實作 W0~W7 的共用流程、CLI/schemas/範本、固定 suite 與隔離 runner、可信 CI 證據收集、受控結果發布/通知、Gap 與具名 QA 接受、同源 Gate/工作包/看板;W8 有雙產品隔離 fixture,正式產品全流程仍待驗。

  • 支援 QA 獨立 repo 或 contract 共用 repo;IM 已選 im-delivery-contracts/qa/,suite_path=qa。

  • 首次正式試行等 IM 下一張新工單,不能改用既有 IM-1421。Leo(@ptp_leo,201)暫代 QA 與整合 owner;Dino(@ptp_dino,211)技術 reviewer。小團隊允許職責兼任,QA/技術審查以 review_role 分開紀錄,最終 QA 接受另行確認。

  • framework 最新完整 Python 驗證 309 項:307 通過、2 跳過,原因及補驗見第 8 節;品質測試 54 項、生成文件 15 份、Node 導覽 4 項通過。Dashboard 31 項、TypeScript 與兩種建置通過;先前 Go 測試與 Linux build 亦通過。換機保存只改文件,未重跑整套測試。

  • IM 正式 pin 仍 v0.6.17,QA 仍未啟用;未改 ownership、正式契約或產品部署。

Runner 最新證據與 IM 分支

使用者提供的 GitLab 截圖(僅證明截圖當時):

Runnertagexecutorversion當時狀態
#10im-runnershell18.6.0Online / Idle
#136t-im-dev-k8s-runnerkubernetes16.10.0Online / Idle

IM 的 d9c725a 已在前一輪推送遠端,新增 qa-runner-smoke 手動 job,指定 #13,只在 codex/im-qa-pilot 未保護分支/其 MR 出現。沿用 validate stage,覆寫 default 繼承,固定 Playwright 1.63.0 與映像 digest,先預檢再 npm ci,產生 summary.json/JUnit/截圖,artifacts 保存 7 日。既有 #10 jobs 保留。

同映像 linux/amd64 本機容器已驗:正常瀏覽器操作成功;錯斷言非零退出且 JUnit 失敗;模擬寫入 token 被拒且無值洩漏;錯 Runner 被拒;模擬正確 CI 環境成功。契約草稿與 15 份生成文件檢查通過。模擬 CI 不等於真實 Runner 證據。

尚未取得 GitLab job 結果、實際 Pod 資源或 artifacts 上傳證據;使用者尚未回報按 Play 的結果。前一輪推送可能已建立 pipeline,狀態未知。本次保存用 commit 的 [skip ci] 及 git push -o ci.skip,沒有手動啟動或取消舊 pipeline。GitLab UI/API 未登入;SSH git 存取已可用。不要把 SSH 推送成功當作 CI 成功。

未完成事項與接手順序

  1. 下一步只核對 Runner smoke。 使用者先前偏好一件一件來。接手時先詢問/查看 d9c725a 的既有 pipeline 是否已跑 qa-runner-smoke,確認 Runner #13、job 結果、Tests 與可下載 artifacts。pipeline 入口:https://gitlab-aha.okkia.site/im/im-delivery-contracts/-/pipelines?ref=codex%2Fim-qa-pilot 。這次使用者要求不觸發 CI,接手後也先查狀態,待使用者要恢復試跑時再執行。

  2. 如果需重新試跑,使用既有 d9c725a pipeline 的手動 job;若不存在,恢復試跑時再手動建立分支 pipeline。最新交接 commit 有 [skip ci],不要將 Skipped 當測試通過。未有登入時由 Leo 在自己的 GitLab 按 Play 並提供結果,不索取密碼/token。

  3. 失敗依 log 判斷:pending 查 project/tag/未保護分支可用性;pull 查 MCR;npm 查 registry 網路;Chromium 查 Pod 資源;預檢查 project/group 憑證 scope。不要為通過而放寬寫入憑證檢查或更換所有既有 job。

  4. Runner 通過後,正式接線仍待下一張新工單的 Slice/範圍、實際 BE/FE repo 與 project ID、啟動/ready/reset/DB/mock 約定、dev 部署與不可變產物核對、環境鎖、具名身分/collector 權限及通知目的地。可先查可讀設定,只向 Leo 問查不到或必須決策的事項。

  5. framework 尚待正常 MR/CI 審查、發布版本,之後才能更新 IM pin/生成文件並顯式 opt-in。不得因試行 smoke 綠燈就合併、部署或宣告 QA 接受。受保護主分支與 MR 合併由人依 repo 規則處理。

  6. 正式試行需跑正常→缺陷 Gap→轉派→修復重驗→QA 解除與具名接受→候選換版失效,並驗非阻擋改善;還要驗真實 collector/publisher/通知和跨 repo 權限。既有 fixture 不能替代這些證據。

原電腦 /tmp 的原始本機報告、瀏覽器截圖、node_modules 及登入/SSH 設定不隨 Git 搬移;可重跑腳本與驗證摘要已保存。新機須自行具備公司 GitLab 存取;沒有將任何憑證存進 repo。

當時的接續指令(已由第 10 節取代,不再依此重跑舊 smoke):

先讀 delivery-framework 的 docs/QUALITY-WORKFLOW-IMPLEMENTATION.md 第 9 節,以及 im-delivery-contracts 的 qa/runner-smoke/README.md。沿用 codex/quality-workflow-plan 與 codex/im-qa-pilot,核對遠端與本機狀態。先接續 IM Runner #13 smoke 的結果查核,一件一件來;尚未授權恢復 CI 時不要觸發。正式試行等下一張 IM 新工單,保留 Leo/Dino 分工,勿把本機模擬當正式 QA 驗收。

CI skip 依據:GitLab pipeline skip。Skipped 空紀錄可能仍出現在 GitLab,沒有 jobs 執行;本地 git 能驗證遠端 commit,實際 UI 狀態仍待登入查核。

10. 目前導入與接手狀態(2026-10-04)

使用者決定先讓 1~2 張小單沿既有流程跟跑,避免時程與學習成本影響交付。 先看 HTML 教學的逐步導入段落; Pipeline/Job 對照 保存工程示範的版本、位置、用途與限制。

已完成的工程示範

  • IM-1421 已跑 FE CI 30267(86 案)、BE CI 30264(313 案)、QA 真 FE+mock browser CI 30260(8 案),並完成各端 Draft MR、審查、修正與重驗。

  • contracts 最終文件版本 719d720daaa486618a0a5c26c03da6abcd09e099 的 Pipeline 30306 已通過;smoke Job 129015 為 7 案、零失敗/錯誤/跳過,summary 與 JUnit 已核對。該 pipeline 的 optional browser Job 未重跑,browser 證據仍綁定 30260。

  • FE/BE/QA 三張 MR 保持 Draft;未合併 dev/main、未部署,45 TC/18 AC 的完整產品驗收未完成。不同套件總數不相加當作 AC 覆蓋率。

  • IM pin 仍為 v0.6.17,未啟用完整品質政策或正式 QA 角色。工程示範通過不代表 collector、自動通知或正式驗收權限已接線。

下一張小單如何開始

  1. 團隊依排程選一張非緊急、AC 清楚且範圍小的單,約定試哪些操作、測試層級、協助窗口與額外時間上限。沿用原需求、MR、QA 與發布規則。

  2. Agent 先核對所選 repo/分支與既有 CI;新增試行 Job 限定範圍、手動、非阻斷,保留原必要檢查。限制執行時間與並行資源,明確列出取消方式;測真 FE+BE 時核對部署版本,涉及寫入再確認隔離資料/清理約定。

  3. 先補案例、各端單元/元件及所選 QA 測試,保存 AC → case → 固定版本 → CI/原始報告連結,標出未執行範圍。現有試行 artifacts 為 7 日,試用前確認能保留到審查與回顧;過期不能當成仍可核查的證據。

  4. 工具/權限/環境卡住超出約定時間就記錄並退回原流程;產品 bug 依既有缺陷與發布規則處理。記錄額外耗時、求助、誤報及找到的缺陷,再決定第二張是否繼續。

接手不要重做: 不因第 9 節的舊待辦重跑 smoke,不先改 framework pin/quality.enabled/ownership,也不把整套 W0~W8 視為第一張單的開工門檻。若所選範圍確實需要新能力,再另開具體改動與驗證。 IM-1421 的 qa-runner-smoke 是限該試行分支的 required manual Job;保留這份歷史設定,不能直接當成未來非阻斷跟跑的範本。 未來正常開發單依原授權交付;本次 Agent 仍不代合併、部署或修改共用分支。

11. 共用待辦與唯讀 MCP:收尾與接手(2026-10-04)

使用者已決定先實作共用待辦與唯讀 MCP,設計須可擴充多產品。 StreamX 僅是未來情境;本次沒有建立它的 repo、帳號、部署或產品設定。

已完成並可審查

  • dcx todo --json、Dashboard 與 MCP 共用相同待辦索引。分清個人指派、角色共用/待認領與團隊未指派,包含 Gap 補齊/確認、重驗及 Run 審核;非阻擋 Gap 只列提醒。dcx inbox 保留角色重驗用途。

  • Dashboard 的「我的待辦」改由已登入帳號的產品身分查詢;前端不自行把整個角色的工作當成個人指派。資料不完整或版本不一致時明確提示。

  • 可選 /mcp 提供四個唯讀工具:可見產品、本人待辦、單張狀態、來源版本。沿用 Google 身分與逐產品權限,另有明確產品同意、PKCE、15 分鐘 token 及撤銷功能。預設關閉,尚未配置真實 MCP client。

  • 每次查詢帶來源 commit、工具版本、快照時間及來源核對結果。可選的觀察器只查固定遠端 branch,檢查過期/失敗或與快照不一致時不宣稱最新;更新快照仍由契約 CI 建置部署。

  • HTML 教學恢復流程圖優先,點節點可看負責角色、Agent/MR CI 工作與下一棒;長篇參考說明折疊保留。

本機驗證紀錄:Python 回歸共 332 項(331 通過、1 項選配 PyYAML 測試略過), 前端 56 項、Go 全部測試與 race 檢查、Linux amd64 編譯、15 份生成檔同步檢查均通過。 跨 Python/Go/前端以合成多產品 fixture 核對相同結果;沒有把本機測試當成正式產品驗收。

接手只需完成的接線

  1. 先依 framework 的正常 MR/CI/發布流程審查本分支,發布新的不可變版本;不覆蓋既有 tag。產品要使用新能力時,再單獨更新 IM 的 dcx_ref 與生成文件,並由該版本建置新快照。

  2. 依 Dashboard 部署與來源更新說明 更新 IM 試行服務,保留 identity/session 設定與可回復的舊版;來源檢查器採專用唯讀 Git 身分。

  3. 依 唯讀 MCP 設定 選定實際 AI 客戶端、註冊精確 callback URI,再啟用 MCP。現階段是單程序、短期授權,重啟或 token 到期後需重新授權。

  4. 用真實 Google 帳號與所選 MCP 客戶端核對:登入/同意、IM 本人待辦與 Dashboard 一致、來源更新/逾期顯示,以及撤銷後確實拒絕。這段端到端驗證尚未執行。

上述接線不等於啟用完整品質 Gate;quality.enabled、QA 正式角色與各端部署仍依第 10 節的逐步導入決定。 本次收尾不合併受保護分支、不部署主機、不修改 IM pin/ownership,也不新增其他產品。

靜態唯讀副本 · 可直接開啟,不需伺服器;不改變核准或執行結果