From e826d2a4b1b5bd50c42fe59f6fc66c7c3e0aee9b Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:19:15 +0800 Subject: [PATCH 01/10] docs(case0003): correct obsolete execution and Drive review guidance --- ...21\347\264\204\346\233\264\346\255\243.md" | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 "docs/2026-08-20-Case0003-\347\217\276\350\241\214DirectWork-go-tool-Drive\345\257\251\346\237\245\345\245\221\347\264\204\346\233\264\346\255\243.md" diff --git "a/docs/2026-08-20-Case0003-\347\217\276\350\241\214DirectWork-go-tool-Drive\345\257\251\346\237\245\345\245\221\347\264\204\346\233\264\346\255\243.md" "b/docs/2026-08-20-Case0003-\347\217\276\350\241\214DirectWork-go-tool-Drive\345\257\251\346\237\245\345\245\221\347\264\204\346\233\264\346\255\243.md" new file mode 100644 index 0000000000..15bf455ec9 --- /dev/null +++ "b/docs/2026-08-20-Case0003-\347\217\276\350\241\214DirectWork-go-tool-Drive\345\257\251\346\237\245\345\245\221\347\264\204\346\233\264\346\255\243.md" @@ -0,0 +1,139 @@ +# Case 0003 現行 DirectWork / go-tool / Google Drive / ChatGPT 審查契約更正 + +- 更新時間:2026-08-20(Asia/Taipei) +- 適用案例:Case 0003 玉井橋 +- 性質:現行操作契約更正;用來覆蓋舊案例文件中的過時操作方式 + +## 1. 為什麼需要更正 + +Case 0003 的歷史文件保存了大量 REAL 執行、Blender 回修、Drive publication 與 ChatGPT review 證據,這些歷史證據仍有效;但其中部分「怎麼執行下一步」的描述已被新版 DirectWork / go-tool 架構取代。 + +歷史證據不得刪除或改寫成沒發生過;過時的是操作方法,不是歷史事實。 + +## 2. 2026-08-20 起的現行權威鏈 + +```text +ChatGPT / LLM + -> 先問 go-tool:查 capability、required inputs、guidance、negative knowledge + -> DirectWork:建立/驅動 durable work + -> 本機 executor / localexec:執行 owning capability + -> durable evidence:received / queued / claimed / running / completed 或 blocked + -> REAL artifact + -> 需要 ChatGPT 審查時:drive.chatgpt.review.publish + -> drive.file.publish-verified + -> Google Drive 真實 upload + independent remote verification + -> exact Drive revision identity + -> ChatGPT 審查 + -> review receipt / decision + -> PASS 才可進 delivery gate +``` + +### 權威判斷 + +- GitHub Actions workflow success 不是 business completion authority。 +- Runner online 只證明 listener 在線,不等於 durable work 已完成。 +- Google Drive Desktop 本機同步資料夾不是 publication authority。 +- HTTP 200、檔案存在、非空 ZIP/PNG 都不能單獨代表審查閉環完成。 +- 真正完成要看 durable work lifecycle、REAL artifact、Drive remote verification、exact Drive revision identity,以及需要時的 ChatGPT review receipt。 + +## 3. Case0003 舊文件中必須視為歷史、不可再照做的項目 + +### 3.1 `runs-on: [self-hosted, Windows, X64, UL7]` 作為 business scheduler + +這是歷史 REAL workflow 的證據與故障排查資料,保留;但新工作不應把 GitHub runner label 當 canonical business scheduler。 + +現行方式:DirectWork durable work -> 指定本機 executor / localexec。機器約束仍需 fail-closed 驗證,例如 Case0003 固定 UL7 / `DESKTOP-UL7V2VV` 時,executor 必須核對實際 host。 + +### 3.2 「一次只跑一個 business action」 + +此規則已過時。新版架構允許 DirectWork 把可安全並行、依賴已滿足的工作拆成多個 durable works,由多 executor 並行;同一不可重入 action 仍不得重複競跑。 + +正確語意是: + +```text +可並行的不同 work -> 可併發 +同一不可重入 work -> single active claim / lease +依賴未滿足 -> 不得提前執行 +``` + +### 3.3 「修 owning repo 後優先 rerun 原 GitHub job」 + +只保留為歷史 workflow 重現手段,不再是 canonical recovery。 + +現行 recovery:修 owning repo -> go-tool 重新取得現行 capability contract -> DirectWork 建立新的可追溯 durable work / retry -> executor 執行 -> durable evidence。 + +### 3.4 `openworker.review.publish` / 舊 `drive.review.publish` 作為一般成果上傳預設答案 + +過時。 + +一般「把成果上傳 Google Drive 給 ChatGPT 審查」的現行高層能力: + +```text +drive.chatgpt.review.publish +``` + +其 canonical primitive: + +```text +drive.file.publish-verified +``` + +目標是讓同一 durable work 完成: + +1. 本機成果檢查; +2. Google Drive upload; +3. independent remote metadata verification; +4. 回傳 exact Drive revision identity; +5. 再交給 ChatGPT 審查。 + +舊 `drive.review.publish` 僅保留 legacy compatibility / 特殊治理型 bundle 情境,不是普通成果審查的預設路徑。 + +### 3.5 案例自行研究 OAuth / 寫 uploader / rclone / Drive Desktop copy + +全部不是現行預設方法。 + +Case0003 已有 REAL 成功經驗,後續案例應重用 go-tool 公布的 Drive capability,不應讓 LLM 每次重新發明上傳方式。憑證由 runtime/capability contract 管理;不得把 token 寫入案例文件、receipt、log 或 Git。 + +## 4. Case0003 歷史證據仍然有效 + +以下類型資料仍應完整保留: + +- DTM / AOI / Consumer / Blender / SceneX / OS 的 REAL run/job/commit 記錄; +- Blender 空白畫面與 camera / transform root cause; +- `BLENDER_VISIBILITY_OK` 等品質 gate 的形成過程; +- 已經真正存在的 artifact SHA256; +- 已完成的 REAL Google Drive publication 與可見 revision folder 證據; +- ChatGPT 實際做過的 visual/semantic review 結果; +- 失敗教訓與 negative knowledge。 + +這些是知識庫,不因架構升級而刪除。 + +## 5. 文件閱讀規則 + +讀取 `2026-08-17-1605-Case0003-玉井橋全流程操作手冊與Blender品質回修紀錄.md` 時: + +- 歷史 run/job/SHA/root-cause/evidence:照原文視為歷史紀錄; +- 涉及「現在應如何 dispatch / rerun / upload / review」:以本文件與 go-tool 現行 capability contract 為準; +- 若舊文件與 go-tool 現行 guidance 衝突,以 go-tool 現行 guidance 為準; +- 不得因舊文件仍出現 OpenWorker workflow / GitHub Actions 路徑,就讓 LLM 回退舊架構。 + +## 6. 給大模型的最短操作提示 + +```text +先問 go-tool,不猜工具。 +業務執行走 DirectWork durable work,不把 GitHub Actions success 當完成。 +成果要給 ChatGPT 審查時,用 drive.chatgpt.review.publish,底層走 drive.file.publish-verified。 +必須取得 remote verification + exact Drive revision identity,才交給 ChatGPT 審查。 +歷史案例文件只保留證據;操作方式若與現行 capability 衝突,以 go-tool 現行 contract 為準。 +``` + +## 7. 後續案例文件治理 + +Case0002、0004、0005 以及後續案例若仍存在相同舊語意,也應依同一原則修正: + +- 不刪歷史證據; +- 明確標註 deprecated operational guidance; +- 將 canonical execution 改成 DirectWork durable work; +- 將工具選擇交給 go-tool; +- 將普通成果 Drive 審查統一為 `drive.chatgpt.review.publish -> drive.file.publish-verified`; +- completion 以 durable evidence / REAL artifact / remote verification 為準。 From 3a88d9b7b0efb2dc26abf74fac1f486636201412 Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:22:36 +0800 Subject: [PATCH 02/10] docs(case0002): migrate review guidance to DirectWork contract --- ...ChatGPT-Review\351\227\255\347\216\257.md" | 150 ++++++++++-------- 1 file changed, 84 insertions(+), 66 deletions(-) diff --git "a/docs/2026-08-17-1025-CASE0002-\351\230\277\346\213\211\344\270\201-Drive-ChatGPT-Review\351\227\255\347\216\257.md" "b/docs/2026-08-17-1025-CASE0002-\351\230\277\346\213\211\344\270\201-Drive-ChatGPT-Review\351\227\255\347\216\257.md" index 9428db092f..30ebdfadf8 100644 --- "a/docs/2026-08-17-1025-CASE0002-\351\230\277\346\213\211\344\270\201-Drive-ChatGPT-Review\351\227\255\347\216\257.md" +++ "b/docs/2026-08-17-1025-CASE0002-\351\230\277\346\213\211\344\270\201-Drive-ChatGPT-Review\351\227\255\347\216\257.md" @@ -1,46 +1,74 @@ -# CASE 0002 阿拉丁 — Google Drive → ChatGPT 成果审查闭环 +# CASE 0002 阿拉丁 — Google Drive → ChatGPT 成果審查閉環 -时间:2026-08-17 10:25(Asia/Taipei) -状态:IMPLEMENTED;OpenWorker CI VERIFYING;真实阿拉丁 Review Bundle 待 Studio/ComfyX/OpenMAIC 同工作目录成果完成后 handoff +時間:2026-08-17 10:25(Asia/Taipei) +現行契約更正:2026-08-20(Asia/Taipei) -## 目标 +> **2026-08-20 現行操作規則**:本文 2026-08-17 的 run、commit、失敗/成功證據保留為歷史事實;涉及「現在怎麼 dispatch、handoff、上傳 Drive、判斷完成」時,一律以 **go-tool + DirectWork durable work** 為準。OpenWorker 舊腳本、Drive Desktop atomic copy、GitHub Action success 都不再是 canonical business path。 -让 Case 0002 不再以 Action `success`、文件非空或 SHA 一致作为最终质量结论。机械验证继续负责 provenance / reopen / decode / SHA;OpenWorker 将不可变成果包复制到 Google Drive 临时审查区,再由 ChatGPT 实际查看图片、PPTX、影片和 evidence,返回结构化 PASS / TUNE / TOOL_GAP / FAIL。 +## 目標 -Google Drive 只作为临时 review exchange;`WorkLedger` 仍是 revision / artifact SHA / review verdict / parameter delta / owning-repo rework 的 durable authority。 +Case 0002 不以 Action `success`、文件非空或 SHA 一致作為最終品質結論。機械驗證仍負責 provenance / reopen / decode / SHA;需要 ChatGPT 審查時,先由 go-tool 選擇現行 capability,再由 DirectWork 建 durable work,把成果透過 Google Drive 真實發布與遠端驗證後交給 ChatGPT 審查,返回 PASS / TUNE / TOOL_GAP / FAIL。 -## 新增接口 +## 現行權威鏈 + +```text +ChatGPT / LLM + -> go-tool 查 capability / inputs / guidance / negative knowledge + -> DirectWork durable work + -> 本機 executor / localexec + -> REAL storyboard / PPTX / video / evidence + -> drive.chatgpt.review.publish + -> drive.file.publish-verified + -> Google Drive upload + independent remote verification + -> exact Drive revision identity + -> ChatGPT physical artifact inspection + -> review receipt / decision + -> PASS 才可 delivery +``` + +Google Drive 只作 review exchange;durable work/evidence、artifact SHA、review verdict、parameter delta 與 owning-repo rework 必須可追溯。GitHub Actions 若被使用,只能作短密語/transport,不是 business scheduler 或 completion authority。 + +## 2026-08-17 歷史實作(保留作證據,不作現行預設操作) ### `scripts/case0002_review_handoff.py` +歷史 wrapper: + - work code:`CASE-0002-ALADDIN` - assigned host:`DESKTOP-ODAQN0D` - 支持 `--phase storyboard|final` -- 默认 Drive root 来自 `OPENWORKER_REVIEW_DRIVE_ROOT` -- 使用通用 `ReviewCycle`,不复制 Case 0003 的核心实现 +- storyboard 要求 PPTX、manifest、視覺資產與 evidence +- final phase 強制至少一個非空 `.mp4` + +歷史流程曾使用 immutable bundle、WorkLedger 與 Drive sync folder atomic copy。這些紀錄保留用來解釋當時的證據與治理設計;**新執行不得把 Drive Desktop/sync copy 當 publication authority**。 + +## 現行 Drive / ChatGPT Review 規則 + +普通成果要交給 ChatGPT 審查時,模型不得重新研究 OAuth、另寫 uploader、猜 rclone、或把檔案複製到 Drive Desktop 後就宣稱完成。 + +現行高層 capability: -Storyboard phase 必需: +```text +drive.chatgpt.review.publish +``` -- `presentation/storyboard-request.bound.json` -- `presentation/storyboard.pptx` -- `presentation/storyboard.manifest.json` -- 至少一张 `visual-assets/**/*.png|jpg|jpeg` -- `evidence/*.json` 自动加入 bundle +canonical primitive: -Final phase 在上述基础上强制至少一个非空 `.mp4`。 +```text +drive.file.publish-verified +``` -Handoff 前: +完成至少要求: -1. 每个物理文件先登记到 WorkLedger。 -2. 创建 required `LLM Semantic Review = pending` check。 -3. ReviewCycle 建 immutable bundle。 -4. bundle 内每个 artifact 记录 SHA256 / size。 -5. atomic copy 到 Drive sync folder。 -6. copy 后整棵文件树重新 SHA 比对。 -7. revision 进入 `blocked / WAITING_LLM_REVIEW`。 -8. accepted/delivered pointer 都保持空。 +1. source artifact 存在且符合案例 gate; +2. DirectWork durable work 有 received / queued / claimed / running / completed 或 blocked 證據; +3. Google Drive 真實 upload; +4. independent remote metadata verification; +5. exact Drive revision/file identity; +6. ChatGPT 審查的是該 exact revision; +7. review receipt 綁定該成果身份。 -## 审查维度 +## 審查維度 - story / storyboard semantic correctness - Aladdin / Genie character consistency @@ -53,9 +81,9 @@ Handoff 前: - parameter tuning opportunities - real tool gaps requiring owning-repository repair -## 参数治理 +## 參數治理 -LLM 只能对 allowlist 参数返回 TUNE: +LLM 只能對 allowlist 參數返回 TUNE: - `video.duration_sec` - `video.width` @@ -64,66 +92,56 @@ LLM 只能对 allowlist 参数返回 TUNE: - `video.seed` - `presentation.image_scale` -模型路径、workflow ID、ComfyUI node、checkpoint 等不属于可自由调参项;若审查发现缺能力,应返回 TOOL_GAP 并指定 owning repo / capability / verification plan。 - -## `scripts/case0002_apply_llm_review.py` +模型路徑、workflow ID、ComfyUI node、checkpoint 等不屬於可自由調參項;若審查發現缺能力,返回 TOOL_GAP 並指定 owning repo / capability / verification plan。 -读取 ChatGPT review receipt,并经过 `review_gap.apply_review_finding(...)`: +## Review decision -- PASS → required LLM check passed → accept revision → deliver revision -- TUNE → 当前 revision blocked → 新开 tuning child revision,记录 parameter delta -- TOOL_GAP → 归一化为 governed FAIL → `REWORK_REQUIRED`,保留 owning repo / gap capability / verification plan -- FAIL → `REWORK_REQUIRED` +歷史 `scripts/case0002_apply_llm_review.py` 的 PASS/TUNE/TOOL_GAP/FAIL 語意仍可作治理參考: -因此不能用手动状态修改绕过 LLM review gate。 +- PASS → reviewed revision 才可進 delivery gate +- TUNE → 建新 revision / parameter delta,再 REAL rerun + review +- TOOL_GAP → owning repo repair + verification plan +- FAIL → REWORK_REQUIRED -## 永久测试 +但新執行應由 DirectWork durable work 驅動相應 capability,不把手動執行舊 OpenWorker wrapper 當 canonical 路徑。 -`tests/test_case0002_review.py` 锁住: +## 歷史永久測試與 commits -1. storyboard handoff 后 accepted/delivered pointer 必须仍为空。 -2. revision 必须是 blocked / waiting LLM review。 -3. Drive 目标必须实际出现 `review-request.json`。 -4. PASS receipt 才能 accept + deliver 同一 reviewed revision。 -5. final phase 没有实体 MP4 必须 fail-closed。 - -实现 commits: +以下仍是有效歷史證據: - `bf1078543e6cd01e3ede9a2795842162057eac7d` — Case 0002 Drive handoff wrapper - `ebab68bdf7f29da65791ac898e5ed1806525393b` — ChatGPT review receipt apply - `29478b8d9b0ad461c19176f4560d16f5eb9f6675` — governance regression tests +- 歷史 OpenWorker CI `31987877806` 僅代表當時 CI 狀態,不代表今天的 business completion。 -最新 OpenWorker CI:`31987877806`,当前 pytest / GUI jobs 正在执行;未提前标绿。 - -## Case 0002 正式闭环 +## Case 0002 現行閉環 ```text -Comfyx-Studio DirectorProjectPlan - ↓ -ComfyX IMAGE reference/storyboard assets +ComfyX / Studio / OpenMAIC REAL artifacts ↓ -Studio receipt revalidation + stable-ID binding +mechanical QC / reopen / SHA / provenance ↓ -OpenMAIC editable storyboard.pptx +go-tool 查現行 review publication capability ↓ -ComfyX VIDEO + final assembly +DirectWork durable work ↓ -mechanical QC / reopen / SHA / provenance +drive.chatgpt.review.publish ↓ -OpenWorker immutable Review Bundle +drive.file.publish-verified ↓ -Google Drive temporary review exchange +Google Drive remote verification + exact revision identity ↓ ChatGPT physical artifact inspection - ├─ PASS → accept/deliver - ├─ TUNE → child revision → rerun → review again + ├─ PASS → delivery gate + ├─ TUNE → child/new revision → REAL rerun → review again └─ TOOL_GAP/FAIL → owning repo repair → REAL rerun → review again ``` -## 下一步 +## 下一步規則 -1. 等 Case 0002 同工作目录至少形成一张 REAL storyboard/reference image + image-bound PPTX。 -2. 先执行 `--phase storyboard` handoff,让 ChatGPT 检查分镜与人物/场景连续性。 -3. 分镜 PASS 后才继续 VIDEO 主线;若 TUNE/TOOL_GAP,先修再生成,避免错误视觉资产扩散到所有视频镜头。 -4. final MP4、字幕、QC 完成后执行 `--phase final` 第二次审查。 -5. 只有 final review PASS 才推进 OpenWorker accepted/delivered pointer。 +1. 形成 REAL storyboard/reference image + image-bound PPTX 後,不直接跑舊 handoff script;先問 go-tool。 +2. 由 DirectWork 建立 storyboard review durable work。 +3. 使用 `drive.chatgpt.review.publish -> drive.file.publish-verified` 發布並取得 exact Drive identity。 +4. ChatGPT 審查分鏡;TUNE/TOOL_GAP 先修再擴散到影片。 +5. final MP4、字幕、QC 完成後,以同一現行 contract 做第二次審查。 +6. 只有 final review PASS 才進 delivery gate。 From 0426d545a5418f33f0e42159f4e13b6fddb2d031 Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:23:06 +0800 Subject: [PATCH 03/10] docs(cases): unify Case0002-0005 current DirectWork operating contract --- ...61\344\270\200\346\233\264\346\255\243.md" | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 "docs/2026-08-20-\346\241\210\344\276\2130002-0005-\347\217\276\350\241\214\346\223\215\344\275\234\345\245\221\347\264\204\347\265\261\344\270\200\346\233\264\346\255\243.md" diff --git "a/docs/2026-08-20-\346\241\210\344\276\2130002-0005-\347\217\276\350\241\214\346\223\215\344\275\234\345\245\221\347\264\204\347\265\261\344\270\200\346\233\264\346\255\243.md" "b/docs/2026-08-20-\346\241\210\344\276\2130002-0005-\347\217\276\350\241\214\346\223\215\344\275\234\345\245\221\347\264\204\347\265\261\344\270\200\346\233\264\346\255\243.md" new file mode 100644 index 0000000000..d58a64c261 --- /dev/null +++ "b/docs/2026-08-20-\346\241\210\344\276\2130002-0005-\347\217\276\350\241\214\346\223\215\344\275\234\345\245\221\347\264\204\347\265\261\344\270\200\346\233\264\346\255\243.md" @@ -0,0 +1,134 @@ +# Case 0002~0005 現行操作契約統一更正 + +- 更新時間:2026-08-20(Asia/Taipei) +- 適用:Case0002、Case0003、Case0004、Case0005,以及後續從這些案例複製出的操作手冊 +- 目的:避免歷史文件中的 OpenWorker / GitHub Actions / Drive Desktop 舊操作方式繼續誤導大模型 + +## 1. 統一現行架構 + +```text +ChatGPT / LLM + -> go-tool:查方法、capability、required inputs、guidance、negative knowledge + -> 必要時 GitHub Action 只送短密語 / trigger + -> DirectWork:唯一 business controller / durable authority + -> durable queue / work + -> 本機 slot / executor / localexec,可依依賴安全並行 + -> REAL artifact + durable evidence + -> 需要 ChatGPT 審查:drive.chatgpt.review.publish + -> drive.file.publish-verified + -> Google Drive upload + independent remote verification + -> exact Drive revision identity + -> ChatGPT review + -> review receipt / decision + -> PASS 才進 delivery +``` + +## 2. 全案例一律廢止作為「現行做法」的描述 + +下列內容若出現在舊案例文件,只能解讀為歷史紀錄: + +- OpenWorker 是目前總控 / business scheduler; +- GitHub Actions workflow success 代表案例完成; +- self-hosted runner label 是 business routing authority; +- 一個 GitHub job 等於一個 durable business work; +- 修好工具後應優先 rerun 原 GitHub job 作 canonical recovery; +- 所有工作必須串行,一次只能一個 action; +- 把成果 copy 到 Google Drive Desktop/sync folder 就算上傳完成; +- 每個案例自行寫 Python uploader / OAuth / rclone; +- 舊 `openworker.review.publish` 或 legacy `drive.review.publish` 是普通成果給 ChatGPT 審查的預設方法; +- HTTP 200、Action success、檔案非空、SHA 存在可單獨視為 business PASS。 + +## 3. 並行規則 + +新版 DirectWork 允許: + +- 不同 work; +- 依賴已滿足; +- 不共用不可重入資源; +- capability 明確允許; + +則由多個 slot/executor 同時 claimed/running。 + +同一不可重入 work 仍維持 single active claim/lease。不得為了追求並行而重複提交相同不可重入工作。 + +## 4. Google Drive 給 ChatGPT 審查 + +普通成果發布的預設高層 capability: + +```text +drive.chatgpt.review.publish +``` + +canonical primitive: + +```text +drive.file.publish-verified +``` + +成功標準不是「本機 Drive 資料夾看到檔案」,而是: + +```text +REAL local artifact ++ durable work completed ++ Google Drive upload ++ independent remote verification ++ exact Drive revision/file identity ++ ChatGPT 審查 exact revision ++ review receipt +``` + +Case0003 已留下多次 REAL Drive publication 的歷史成功證據;後續案例應把它視為可重用成功知識,而不是重新發明上傳方法。 + +## 5. Case0002 更正 + +舊 `case0002_review_handoff.py`、Drive sync atomic copy、OpenWorker review apply 等保留為歷史實作證據。 + +現行:REAL storyboard/PPTX/video -> go-tool -> DirectWork -> `drive.chatgpt.review.publish` -> `drive.file.publish-verified` -> exact Drive identity -> ChatGPT review。 + +## 6. Case0003 更正 + +Case0003 的 DTM/AOI/Consumer/Blender/SceneX/OS run/job/SHA、Blender camera/transform root cause、視覺 gate、REAL Drive 成功紀錄全部保留。 + +但 `runs-on UL7`、一次一個 business action、rerun 原 GitHub job、OpenWorker review action 等不再是現行 dispatch 方法。固定 UL7/`DESKTOP-UL7V2VV` 若仍是案例約束,應由 DirectWork/executor fail-closed 核對實際 host。 + +詳細見:`2026-08-20-Case0003-現行DirectWork-go-tool-Drive審查契約更正.md`。 + +## 7. Case0004 更正 + +Repo 中既有 `case-0004-*` workflows、DirectWork 055 submitted/receipt/diagnostic commits 都保留作歷史與遷移證據。 + +現行判斷 Case0004 是否真的執行,不看 workflow success,而看 DirectWork 是否產生 durable work,是否有 claimed/running executor slot,以及 completion/artifact evidence。若一條短密語可安全拆成多工作,應驗證多 slot 真實並行,而非只看到 submitted/receipt 就宣稱並行成功。 + +Drive/LLM review 同樣統一使用現行 Drive review capability,不再讓 case-specific workflow 成為 canonical uploader。 + +## 8. Case0005 更正 + +Case0005 白雪公主的目標仍是 REAL 成果閉環;歷史 bootstrap/workflow/trigger 留作證據。 + +現行主線:短密語若由 GitHub Action 傳入,只是 ingress;DirectWork 必須真正建立 durable work,控制 ODA 本機 executor 生成 REAL PPTX/影片等成果。不能以 trigger/action success 代替成果完成。 + +需要把成果交給 ChatGPT 時,走統一 Drive review contract;必須取得 exact Drive identity,再由 ChatGPT 審查,最後才進 approval/delivery gate。 + +## 9. 文件治理規則 + +所有案例文件自 2026-08-20 起採以下閱讀優先序: + +1. go-tool 現行 capability contract / guidance / negative knowledge; +2. 本統一更正文檔; +3. 各 Case 的 2026-08-20 專用更正文檔; +4. 舊案例文件中的歷史 evidence; +5. 舊案例文件中的操作步驟只供考古,不得覆蓋 1~3。 + +若衝突,以較新的現行 contract 為準,但不得改寫歷史 run/job/SHA/receipt 的事實。 + +## 10. 大模型必讀最短版 + +```text +不要從舊案例文件猜現在工具。 +先問 go-tool。 +GitHub Action 只可作短密語/transport;DirectWork 才是 business controller。 +可安全拆分的 durable works 用本機多 slot/executor 並行。 +成果給 ChatGPT 審查:drive.chatgpt.review.publish -> drive.file.publish-verified。 +必須 remote verify 並取得 exact Drive revision identity。 +舊 OpenWorker/workflow/Drive Desktop 路徑只保留作歷史證據。 +``` From 58e7023f84eb21bff4f5e4676c3fccf18fca2eec Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:37:39 +0800 Subject: [PATCH 04/10] docs(case0004): migrate worklist authority to DirectWork --- case-worklists/0004.json | 110 +++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 62 deletions(-) diff --git a/case-worklists/0004.json b/case-worklists/0004.json index 6495bc99a9..8ec8f6ed27 100644 --- a/case-worklists/0004.json +++ b/case-worklists/0004.json @@ -1,74 +1,60 @@ { - "schema_version": "openworker-case-worklist/v1", + "schema_version": "directwork-case-worklist/v2", "case_id": "0004", "workspace_root": "D:\\AI-Work\\jobs\\0004-DWG-TO-3D", "assigned_host": "DESKTOP-O87PJNR", - "revision": 149, + "revision": 150, + "contract_updated_at": "2026-08-20 Asia/Taipei", + "historical_note": "Revision 149 and earlier OpenWorker/go-tool local-supervisor fields are retained in Git history as historical evidence. They are not current execution authority.", "parallel_policy": { - "process_authority": "openworker-go-case-engine/v1", - "execution_authority": "go-tool-runtime-local-supervisor", - "queue_authority": "go-tool-runtime:8848", - "authority": "go-tool-runtime-local-supervisor", - "canonical_controller": "openworker-go-case-engine/v1", - "python_controller_allowed": false, - "queue_endpoint": "http://127.0.0.1:8848/api/execution/local-work", - "route_query_endpoint": "http://127.0.0.1:8848/api/execution/route", - "verification_endpoint": "http://127.0.0.1:8848/api/execution/local-supervisor/verification", - "status_endpoint": "http://127.0.0.1:8848/api/execution/local-supervisor/status", - "required_verification_status": "REAL_VERIFIED", - "required_supervisor_status": "OPERATIONAL", - "required_fresh_claim_slots": 4, - "required_fresh_executor_slots": 4, - "fanout_decision_owner": "openworker-go-case-engine/v1", - "fanout_plan_owner": "openworker-go-case-engine/v1", - "fanout_join_owner": "openworker-go-case-engine/v1", - "fanout_queue_owner": "go-tool-runtime:8848", - "fanout_submit_all_children_before_coordinator": true, - "openworker_business_child_jobs_allowed": false, - "openworker_role_for_fanout": "case-fanout-planner-reconciler-join-authority", - "process_kernel": "openworker-local-supervisor", - "process_kernel_endpoint": "http://127.0.0.1:8787", - "max_local_slots": 4, - "required_execution_route": "local_supervisor", + "business_authority": "directwork", + "canonical_controller": "directwork", + "tool_guidance_authority": "go-tool-runtime", + "github_actions_role": "short-secret-trigger-transport-only", "github_actions_business_execution_allowed": false, - "github_actions_fallback_allowed": false, - "approval_artifact_transport": "google-drive-api", - "approval_artifact_github_allowed": false, - "transport_non_blocking": true, - "story_viewport_review_auto_publish": true, - "story_viewport_review_consumer": "chatgpt-drive-connector", + "github_actions_completion_authority": false, + "openworker_current_authority": false, + "assigned_host": "DESKTOP-O87PJNR", + "host_verification": "fail-closed-at-executor", + "max_local_slots": 4, + "parallel_rule": "independent dependency-satisfied reentrant-safe durable works may run concurrently; the same non-reentrant work keeps a single active claim/lease", + "completion_evidence": ["work_id","events","claimed_slot","executor_identity","started_at","completed_at","exit_code","artifact_path","artifact_sha256"], + "approval_artifact_transport": "drive.chatgpt.review.publish", + "approval_artifact_primitive": "drive.file.publish-verified", + "drive_remote_verification_required": true, + "exact_drive_revision_identity_required": true, "fanout_join": [ - {"after":"0004-045","dynamic_fanout":"0004-047 and 0004-048 preserve failed attempts; 0004-0481 is the revision-149 retry after executor authority reload","join_step":"0004-0485"}, - {"after":"0004-0481","dynamic_fanout":"exact Story viewport PNGs and render manifest are automatically materialized into an immutable bounded review bundle and published through Google Drive API","join_step":"0004-049"}, - {"after":"0004-049","dynamic_fanout":"per-story query/review work may run independently for confirmed story_ids while cad.set_story_region remains governed by 0004-050","join_step":"0004-055"} + {"after":"0004-045","dynamic_fanout":"DirectWork may fan out independent story viewport durable works after dependencies are satisfied; preserve failed attempts as immutable evidence","join_step":"0004-0485"}, + {"after":"0004-0481","dynamic_fanout":"publish exact Story viewport PNGs and render manifest through the current verified Drive review capability","join_step":"0004-049"}, + {"after":"0004-049","dynamic_fanout":"per-story query/review durable works may run independently for confirmed story_ids","join_step":"0004-055"} ] }, "steps": [ - {"step_id":"0004-010","title":"Locate exact primary DWG on fixed O87 host","kind":"work","dependencies":[],"allowed_actions":["openworker.source.locate"],"acceptance":["run_id","source_path","sha256"],"status":"PASSED","evidence":{"run_id":"32008732425","source_path":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\input\\source.dwg","sha256":"aaadbd84e8a5b2e1b0b8f54c16901a69085c7501aeec602929fd994f3192f5b6"},"blocker":""}, - {"step_id":"0004-020","title":"Canonical source ingress plus OS Project Job and JobBinding","kind":"work","dependencies":["0004-010"],"allowed_actions":["openworker.source.ingress"],"acceptance":["run_id","project_id","job_id","canonical_path","sha256","job_binding_path"],"status":"PASSED","evidence":{"run_id":"32009612975","project_id":"prj_3e0dda459b582aed83e0367c755660e5","job_id":"job_f85f3e01cbe1f998c16ac2b772db4fc1","canonical_path":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\input\\source.dwg","sha256":"aaadbd84e8a5b2e1b0b8f54c16901a69085c7501aeec602929fd994f3192f5b6","os_authority_commit":"ca678a1ad47aba8e9386993173aa22eb126120e5","job_binding_path":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\.openworker\\job-binding.json","reconciliation_repair":"R-0004-020-003","reconciliation_evidence":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\evidence\\source-ingress\\local-run-32009612975.json"},"blocker":""}, - {"step_id":"0004-030","title":"Open primary DWG with latest DWG_todo authority","kind":"work","dependencies":["0004-020"],"allowed_actions":["cad.open_dwg"],"acceptance":["run_id","job_id","receipt","source_sha256"],"status":"PASSED","evidence":{"run_id":"32011733568","job_id":"job_f85f3e01cbe1f998c16ac2b772db4fc1","receipt":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\evidence\\dwg-cad-local\\case0004-open-32011733568\\receipt.json","source_sha256":"aaadbd84e8a5b2e1b0b8f54c16901a69085c7501aeec602929fd994f3192f5b6"},"blocker":""}, - {"step_id":"0004-040","title":"Model extents and raw overview render","kind":"work","dependencies":["0004-030"],"allowed_actions":["cad.get_model_extents","cad.render_png","cad.list_candidate_regions"],"acceptance":["extent_receipt","overview_png","overview_sha256"],"status":"PASSED","evidence":{"extent_receipt":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\evidence\\dwg-cad-local\\case0004-extents-32011900313\\receipt.json","overview_png":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\dwg\\exports\\default\\visual-search\\case0004-overview.png","overview_sha256":"5cee03340cbbcad51e412b46b85bda9dcaac22b193586b953bbfd5134039103e"},"blocker":""}, - {"step_id":"0004-045","title":"Build persistent Story Index from promotion-grade LLM viewport localization; preserve unresolved floors fail-closed","kind":"work","dependencies":["0004-040"],"allowed_actions":["cad.build_story_index"],"acceptance":["layout_id","story_count","stories","revision","state","evidence_root"],"status":"READY","evidence":{},"blocker":""}, - {"step_id":"0004-047","title":"First Story viewport fanout attempt; preserve terminal failure evidence if local authority execution fails","kind":"fanout","dependencies":["0004-045"],"allowed_actions":["cad.render_story_viewports"],"evidence_profile":"dwg_story_viewports","fanout_role":"story_viewport","fanout_evidence_prefix":"story_render","acceptance":["source_sha256","render_manifest","story_job_ids","rendered_story_count","story_pngs","story_png_sha256s","all_required_stories_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-048","title":"Second Story viewport fanout attempt after snapshot wrapper repair; preserve terminal failure evidence if executor still binds stale authority root","kind":"fanout","dependencies":["0004-045"],"allowed_actions":["cad.render_story_viewports"],"evidence_profile":"dwg_story_viewports","fanout_role":"story_viewport","fanout_evidence_prefix":"story_render","acceptance":["source_sha256","render_manifest","story_job_ids","rendered_story_count","story_pngs","story_png_sha256s","all_required_stories_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-0481","title":"Retry Story viewport fanout after O87 executor reloads repaired DWG authority; never overwrite 047/048 failures","kind":"fanout","dependencies":["0004-045"],"allowed_actions":["cad.render_story_viewports"],"evidence_profile":"dwg_story_viewports","fanout_role":"story_viewport","fanout_evidence_prefix":"story_render","acceptance":["source_sha256","render_manifest","story_job_ids","rendered_story_count","story_pngs","story_png_sha256s","all_required_stories_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-0485","title":"Automatically publish exact Story viewport PNGs and render manifest to bounded Google Drive review bundle","kind":"work","dependencies":["0004-0481"],"allowed_actions":["openworker.review.publish-story-viewports"],"acceptance":["review_bundle","manifest","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_file_ids","drive_file_links","chatgpt_review_ready","transport"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-049","title":"ChatGPT multimodal verify Story Index and every per-floor zoom PNG from exact Drive revision","kind":"join","dependencies":["0004-0485"],"allowed_actions":["openworker.review.apply"],"acceptance":["review_bundle","llm_review_receipt","story_index_decision","per_story_decisions","confirmed_story_ids","unresolved_story_ids","reviewed_drive_file_ids","reviewed_manifest_sha256"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-050","title":"Confirm real Story Regions from visually accepted Story Index viewports","kind":"work","dependencies":["0004-049"],"allowed_actions":["cad.query_bounds","cad.query_entities","cad.set_story_region"],"acceptance":["story_regions","region_evidence","confirmed_story_ids"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-055","title":"List and visually confirm Story column candidates","kind":"work","dependencies":["0004-050"],"allowed_actions":["cad.list_story_column_candidates"],"acceptance":["source_sha256","story_region","candidate_count","confirmed_column_handles","review_decision"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-060","title":"Structural recognition and Story Design","kind":"work","dependencies":["0004-055"],"allowed_actions":["cad.design_story_structure"],"acceptance":["design_json","design_png","design_sha256","review_decision"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-070","title":"Reviewed structural materialization","kind":"work","dependencies":["0004-060"],"allowed_actions":["cad.materialize_story_structure"],"acceptance":["materialization_receipt","reopen_query"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-080","title":"Story anchors registration and residual validation","kind":"work","dependencies":["0004-070"],"allowed_actions":["cad.set_story_anchor","cad.register_stories","cad.validate_story_registration"],"acceptance":["anchor_receipt","registration_receipt","residual_validation"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-085","title":"Validate registered Building structural authority with latest AI-OpenSees","kind":"work","dependencies":["0004-080"],"allowed_actions":["structural.ai_opensees.validate"],"acceptance":["structural_model_path","structural_model_sha256","v1_building_skeleton_path","mct_sha256","nodes","elements","result"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-090","title":"Build Building World Coordinates","kind":"work","dependencies":["0004-085"],"allowed_actions":["cad.build_building_3d"],"acceptance":["building_world_manifest","building_world_sha256"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-100","title":"Export and validate production building GLB","kind":"work","dependencies":["0004-090"],"allowed_actions":["cad.export_building_glb","cad.validate_building_3d"],"acceptance":["glb_path","glb_size","glb_sha256","glb_validation"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-110","title":"Blender 5.2 REAL reopen and render","kind":"work","dependencies":["0004-100"],"allowed_actions":["cad.blender.render"],"acceptance":["blender_version","mesh_count","render_path","render_sha256","reopen_report"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-120","title":"Build native AC1032 ACIS Solid3D DWG","kind":"work","dependencies":["0004-110"],"allowed_actions":["cad.build_building_dwg","cad.export_building_dwg","cad.validate_building_dwg"],"acceptance":["dwg_path","dwg_size","dwg_sha256","solid_count","layer_validation"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-130","title":"OpenCAD DwgReader reopen and second validation","kind":"work","dependencies":["0004-120"],"allowed_actions":["cad.validate_building_dwg"],"acceptance":["reopen_receipt","second_validation"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-140","title":"Register current artifacts in AI-Engineering-OS","kind":"work","dependencies":["0004-130"],"allowed_actions":["engineering_os.artifact.register"],"acceptance":["artifact_ids","current_revisions"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-150","title":"Build and publish bounded Drive Review Bundle","kind":"work","dependencies":["0004-140"],"allowed_actions":["openworker.review.publish"],"acceptance":["review_bundle","drive_receipt"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-160","title":"Apply ChatGPT semantic and visual review receipt","kind":"work","dependencies":["0004-150"],"allowed_actions":["openworker.review.apply"],"acceptance":["review_receipt","review_decision"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-170","title":"Create approved Delivery Revision","kind":"work","dependencies":["0004-160"],"allowed_actions":["engineering_os.delivery.publish"],"acceptance":["delivery_id","delivery_revision"],"status":"PENDING","evidence":{},"blocker":""}, - {"step_id":"0004-180","title":"Validate final delivery package and website","kind":"work","dependencies":["0004-170"],"allowed_actions":["openworker.delivery.validate"],"acceptance":["package_path","website_path","final_validation"],"status":"PENDING","evidence":{},"blocker":""} + {"step_id":"0004-010","title":"Locate exact primary DWG on fixed O87 host","kind":"work","dependencies":[],"allowed_actions":["source.locate"],"acceptance":["work_id","source_path","sha256"],"status":"PASSED","historical_evidence":{"run_id":"32008732425","source_path":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\input\\source.dwg","sha256":"aaadbd84e8a5b2e1b0b8f54c16901a69085c7501aeec602929fd994f3192f5b6"},"blocker":""}, + {"step_id":"0004-020","title":"Canonical source ingress plus OS Project Job and JobBinding","kind":"work","dependencies":["0004-010"],"allowed_actions":["source.ingress"],"acceptance":["work_id","project_id","job_id","canonical_path","sha256","job_binding_path"],"status":"PASSED","historical_evidence":{"run_id":"32009612975","project_id":"prj_3e0dda459b582aed83e0367c755660e5","job_id":"job_f85f3e01cbe1f998c16ac2b772db4fc1","canonical_path":"D:\\AI-Work\\jobs\\0004-DWG-TO-3D\\input\\source.dwg","sha256":"aaadbd84e8a5b2e1b0b8f54c16901a69085c7501aeec602929fd994f3192f5b6"},"blocker":""}, + {"step_id":"0004-030","title":"Open primary DWG with latest DWG authority","kind":"work","dependencies":["0004-020"],"allowed_actions":["cad.open_dwg"],"acceptance":["work_id","job_id","receipt","source_sha256"],"status":"PASSED","historical_evidence":{"run_id":"32011733568","source_sha256":"aaadbd84e8a5b2e1b0b8f54c16901a69085c7501aeec602929fd994f3192f5b6"},"blocker":""}, + {"step_id":"0004-040","title":"Model extents and raw overview render","kind":"work","dependencies":["0004-030"],"allowed_actions":["cad.get_model_extents","cad.render_png","cad.list_candidate_regions"],"acceptance":["work_id","extent_receipt","overview_png","overview_sha256"],"status":"PASSED","historical_evidence":{"overview_sha256":"5cee03340cbbcad51e412b46b85bda9dcaac22b193586b953bbfd5134039103e"},"blocker":""}, + {"step_id":"0004-045","title":"Build persistent Story Index from promotion-grade LLM viewport localization; preserve unresolved floors fail-closed","kind":"work","dependencies":["0004-040"],"allowed_actions":["cad.build_story_index"],"acceptance":["work_id","layout_id","story_count","stories","revision","state","evidence_root"],"status":"READY","evidence":{},"blocker":""}, + {"step_id":"0004-047","title":"Story viewport durable fanout attempt 1","kind":"fanout","dependencies":["0004-045"],"allowed_actions":["cad.render_story_viewports"],"acceptance":["work_ids","render_manifest","story_pngs","story_png_sha256s","all_required_stories_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-048","title":"Story viewport durable fanout attempt 2; preserve prior terminal evidence","kind":"fanout","dependencies":["0004-045"],"allowed_actions":["cad.render_story_viewports"],"acceptance":["work_ids","render_manifest","story_pngs","story_png_sha256s","all_required_stories_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-0481","title":"Retry Story viewport fanout through current DirectWork executor authority","kind":"fanout","dependencies":["0004-045"],"allowed_actions":["cad.render_story_viewports"],"acceptance":["work_ids","claimed_slots","executor_identities","render_manifest","story_pngs","story_png_sha256s","all_required_stories_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-0485","title":"Publish exact Story viewport PNGs and render manifest to verified Google Drive review revision","kind":"work","dependencies":["0004-0481"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_file_ids","drive_file_links","remote_verified","exact_drive_revision_identity","chatgpt_review_ready"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-049","title":"ChatGPT multimodal verify Story Index and every per-floor zoom PNG from exact Drive revision","kind":"join","dependencies":["0004-0485"],"allowed_actions":["review.apply"],"acceptance":["review_receipt","story_index_decision","per_story_decisions","confirmed_story_ids","unresolved_story_ids","reviewed_drive_file_ids","reviewed_manifest_sha256"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-050","title":"Confirm real Story Regions from visually accepted Story Index viewports","kind":"work","dependencies":["0004-049"],"allowed_actions":["cad.query_bounds","cad.query_entities","cad.set_story_region"],"acceptance":["work_id","story_regions","region_evidence","confirmed_story_ids"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-055","title":"List and visually confirm Story column candidates","kind":"work","dependencies":["0004-050"],"allowed_actions":["cad.list_story_column_candidates"],"acceptance":["work_id","source_sha256","story_region","candidate_count","confirmed_column_handles","review_decision"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-060","title":"Structural recognition and Story Design","kind":"work","dependencies":["0004-055"],"allowed_actions":["cad.design_story_structure"],"acceptance":["work_id","design_json","design_png","design_sha256","review_decision"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-070","title":"Reviewed structural materialization","kind":"work","dependencies":["0004-060"],"allowed_actions":["cad.materialize_story_structure"],"acceptance":["work_id","materialization_receipt","reopen_query"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-080","title":"Story anchors registration and residual validation","kind":"work","dependencies":["0004-070"],"allowed_actions":["cad.set_story_anchor","cad.register_stories","cad.validate_story_registration"],"acceptance":["work_id","anchor_receipt","registration_receipt","residual_validation"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-085","title":"Validate registered Building structural authority with latest AI-OpenSees","kind":"work","dependencies":["0004-080"],"allowed_actions":["structural.ai_opensees.validate"],"acceptance":["work_id","structural_model_path","structural_model_sha256","mct_sha256","nodes","elements","result"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-090","title":"Build Building World Coordinates","kind":"work","dependencies":["0004-085"],"allowed_actions":["cad.build_building_3d"],"acceptance":["work_id","building_world_manifest","building_world_sha256"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-100","title":"Export and validate production building GLB","kind":"work","dependencies":["0004-090"],"allowed_actions":["cad.export_building_glb","cad.validate_building_3d"],"acceptance":["work_id","glb_path","glb_size","glb_sha256","glb_validation"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-110","title":"Blender 5.2 REAL reopen and render","kind":"work","dependencies":["0004-100"],"allowed_actions":["cad.blender.render"],"acceptance":["work_id","blender_version","mesh_count","render_path","render_sha256","reopen_report"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-120","title":"Build native AC1032 ACIS Solid3D DWG","kind":"work","dependencies":["0004-110"],"allowed_actions":["cad.build_building_dwg","cad.export_building_dwg","cad.validate_building_dwg"],"acceptance":["work_id","dwg_path","dwg_size","dwg_sha256","solid_count","layer_validation"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-130","title":"OpenCAD DwgReader reopen and second validation","kind":"work","dependencies":["0004-120"],"allowed_actions":["cad.validate_building_dwg"],"acceptance":["work_id","reopen_receipt","second_validation"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-140","title":"Register current artifacts in AI-Engineering-OS","kind":"work","dependencies":["0004-130"],"allowed_actions":["engineering_os.artifact.register"],"acceptance":["work_id","artifact_ids","current_revisions"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-150","title":"Publish bounded final review artifacts to verified Google Drive revision","kind":"work","dependencies":["0004-140"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","manifest_sha256","drive_receipt","remote_verified","exact_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-160","title":"Apply ChatGPT semantic and visual review receipt","kind":"work","dependencies":["0004-150"],"allowed_actions":["review.apply"],"acceptance":["review_receipt","review_decision","reviewed_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-170","title":"Create approved Delivery Revision","kind":"work","dependencies":["0004-160"],"allowed_actions":["engineering_os.delivery.publish"],"acceptance":["work_id","delivery_id","delivery_revision"],"status":"PENDING","evidence":{},"blocker":""}, + {"step_id":"0004-180","title":"Validate final delivery package and website","kind":"work","dependencies":["0004-170"],"allowed_actions":["delivery.validate"],"acceptance":["work_id","package_path","website_path","final_validation"],"status":"PENDING","evidence":{},"blocker":""} ] } From 97c1d6721aa687221b8fae55cfcf9d26bfa562c4 Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:38:03 +0800 Subject: [PATCH 05/10] docs(case0005): migrate Snow White worklist to DirectWork and verified Drive review --- case-worklists/0005.json | 95 ++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/case-worklists/0005.json b/case-worklists/0005.json index e6507abfa8..6328730d47 100644 --- a/case-worklists/0005.json +++ b/case-worklists/0005.json @@ -1,64 +1,55 @@ { - "schema_version": "openworker-case-worklist/v1", + "schema_version": "directwork-case-worklist/v2", "case_id": "0005", "workspace_root": "D:\\AI-Work\\jobs\\0005-SNOW-WHITE", "assigned_host": "DESKTOP-ODAQN0D", - "revision": 16, + "revision": 17, + "contract_updated_at": "2026-08-20 Asia/Taipei", + "historical_note": "Revision 16 and earlier OpenWorker/local-supervisor fields remain in Git history as evidence only. Current execution authority is DirectWork.", "parallel_policy": { - "authority": "go-tool-runtime-local-supervisor", - "canonical_controller": "openworker-go-case-engine/v1", - "python_controller_allowed": false, - "queue_endpoint": "http://127.0.0.1:8848/api/execution/local-work", - "route_query_endpoint": "http://127.0.0.1:8848/api/execution/route", - "verification_endpoint": "http://127.0.0.1:8848/api/execution/local-supervisor/verification", - "status_endpoint": "http://127.0.0.1:8848/api/execution/local-supervisor/status", - "required_verification_status": "REAL_VERIFIED", - "required_supervisor_status": "OPERATIONAL", - "required_fresh_claim_slots": 4, - "required_fresh_executor_slots": 4, - "fanout_queue_owner": "go-tool-runtime:8848", - "fanout_submit_all_children_before_coordinator": true, - "openworker_business_child_jobs_allowed": false, - "openworker_role_for_fanout": "single-coordinator-only", - "approval_artifact_transport": "google-drive-api", - "approval_artifact_github_allowed": false, - "review_consumer": "chatgpt-drive-connector", - "review_receipt_capability": "openworker.review.await-drive", - "review_receipt_cloud_command_ingress_allowed": false, - "drive_cloud_identity_required": true, - "process_kernel": "openworker-local-supervisor", - "process_kernel_endpoint": "http://127.0.0.1:8787", - "max_local_slots": 4, - "required_execution_route": "local_supervisor", + "business_authority": "directwork", + "canonical_controller": "directwork", + "tool_guidance_authority": "go-tool-runtime", + "github_actions_role": "short-secret-trigger-transport-only", "github_actions_business_execution_allowed": false, - "github_actions_fallback_allowed": false, - "transport_non_blocking": true, + "github_actions_completion_authority": false, + "openworker_current_authority": false, + "assigned_host": "DESKTOP-ODAQN0D", + "host_verification": "fail-closed-at-executor", + "max_local_slots": 4, + "parallel_rule": "submit dependency-satisfied independent durable works before join/coordinator; same non-reentrant work keeps one active claim", + "completion_evidence": ["work_id","events","claimed_slot","executor_identity","started_at","completed_at","exit_code","artifact_path","artifact_size","artifact_sha256"], + "approval_artifact_transport": "drive.chatgpt.review.publish", + "approval_artifact_primitive": "drive.file.publish-verified", + "drive_cloud_identity_required": true, + "drive_remote_verification_required": true, + "exact_drive_revision_identity_required": true, "fanout_join": [ - {"after":"0005-027","parallel_steps":["0005-030","0005-040"],"dynamic_fanout":"submit every character/scene asset directly to :8848 durable local-work before one OpenWorker coordinator observes results","join_step":"0005-050"}, - {"after":"0005-057","dynamic_fanout":"submit every approved shot directly to :8848 durable local-work before one OpenWorker coordinator observes results","join_step":"0005-070"}, - {"after":"0005-070","parallel_steps":["0005-080","0005-082"],"dynamic_fanout":"WorkLedger revision and Engineering OS identity execute as independent local-supervisor work items","join_step":"0005-085"} + {"after":"0005-027","parallel_steps":["0005-030","0005-040"],"dynamic_fanout":"DirectWork submits character and scene durable works to available local slots before join","join_step":"0005-050"}, + {"after":"0005-057","dynamic_fanout":"DirectWork submits approved shot durable works to local slots and preserves per-shot evidence","join_step":"0005-070"}, + {"after":"0005-070","parallel_steps":["0005-080","0005-082"],"dynamic_fanout":"final revision registration and Engineering OS identity may execute as independent durable works","join_step":"0005-085"} ] }, "steps": [ - {"step_id":"0005-010","title":"Generate fresh structured Snow White Director preproduction","kind":"work","dependencies":[],"allowed_actions":["comfyx-studio.director.preproduction"],"acceptance":["run_id","director_plan","director_plan_sha256","shot_count","character_count","scene_bible_count"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-020","title":"Materialize Snow White storyboard presentation request and visual requirements","kind":"work","dependencies":["0005-010"],"allowed_actions":["comfyx-studio.storyboard.plan"],"acceptance":["storyboard_request","visual_requirements","visual_asset_count","reference_asset_ids"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-025","title":"Generate text-only Snow White storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0005-020"],"allowed_actions":["presentation.openmaic"],"input_evidence_key":"storyboard_request","output_relpath":"presentation/storyboard-text-only.pptx","evidence_profile":"storyboard-text","acceptance":["storyboard_pptx","storyboard_manifest","storyboard_pptx_sha256","slide_count","reopen_receipt","image_count"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-026","title":"Publish text-only storyboard PPTX from ODA local supervisor to Google Drive for ChatGPT/user approval","kind":"work","dependencies":["0005-025"],"allowed_actions":["openworker.case.publish-artifacts"],"artifact_evidence_keys":["storyboard_pptx","storyboard_manifest","reopen_receipt"],"acceptance":["review_bundle","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_revision_web_view_link","drive_file_ids","drive_file_links","transport","chatgpt_review_ready","github_action_used_for_artifact_transport"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-027","title":"Wait in local supervisor for bounded Drive receipt approving text-only Snow White storyboard PPTX","kind":"work","dependencies":["0005-026"],"allowed_actions":["openworker.review.await-drive"],"acceptance":["approved_storyboard_pptx_sha256","approval_decision","approval_receipt"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-030","title":"Generate REAL Snow White character master images as per-asset :8848 queue-owned fanout","kind":"fanout","dependencies":["0005-027"],"allowed_actions":["image.comfyx.storyboard-real"],"fanout_role":"character_master","fanout_evidence_prefix":"character","acceptance":["character_receipts","character_images","character_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-040","title":"Generate REAL Snow White scene concept images as per-asset :8848 queue-owned fanout","kind":"fanout","dependencies":["0005-027"],"allowed_actions":["image.comfyx.storyboard-real"],"fanout_role":"scene_concept","fanout_evidence_prefix":"scene","acceptance":["scene_receipts","scene_images","scene_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-050","title":"Join character/scene branches, then generate and bind REAL Snow White shot images","kind":"work","dependencies":["0005-030","0005-040"],"allowed_actions":["comfyx-studio.storyboard.real-bind"],"input_evidence_key":"storyboard_request","output_relpath":"presentation/storyboard-request.bound.json","acceptance":["shot_image_receipts","shot_images","shot_image_sha256","bound_storyboard_request"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-055","title":"Generate illustrated Snow White storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0005-050"],"allowed_actions":["presentation.openmaic"],"input_evidence_key":"bound_storyboard_request","output_relpath":"presentation/storyboard-illustrated.pptx","evidence_profile":"storyboard-illustrated","acceptance":["illustrated_storyboard_pptx","illustrated_storyboard_manifest","illustrated_storyboard_sha256","slide_count","reopen_receipt","bound_image_count"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-056","title":"Publish illustrated storyboard PPTX from ODA local supervisor to Google Drive for ChatGPT/user approval","kind":"work","dependencies":["0005-055"],"allowed_actions":["openworker.case.publish-artifacts"],"artifact_evidence_keys":["illustrated_storyboard_pptx","illustrated_storyboard_manifest","reopen_receipt"],"acceptance":["review_bundle","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_revision_web_view_link","drive_file_ids","drive_file_links","transport","chatgpt_review_ready","github_action_used_for_artifact_transport"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-057","title":"Wait in local supervisor for bounded Drive receipt approving illustrated Snow White storyboard PPTX","kind":"work","dependencies":["0005-056"],"allowed_actions":["openworker.review.await-drive"],"acceptance":["approved_illustrated_storyboard_sha256","approval_decision","approval_receipt"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-060","title":"Fan out every approved Snow White shot directly into :8848 durable local-work","kind":"fanout","dependencies":["0005-057"],"allowed_actions":["comfyx.production.video.real"],"acceptance":["shot_job_ids","shot_video_receipts","shot_videos","shot_video_sha256","execution_ledger","all_shots_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-070","title":"Join all shot video jobs and assemble canonical Snow White final MP4 with physical QC and contact sheet","kind":"join","dependencies":["0005-060"],"allowed_actions":["comfyx-studio.finalize"],"acceptance":["final_mp4","final_mp4_sha256","resolution","duration","subtitle_receipt","physical_qc","review_contact_sheet","review_contact_sheet_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-080","title":"Create immutable local WorkLedger revision for canonical Snow White final MP4","kind":"work","dependencies":["0005-070"],"allowed_actions":["openworker.workledger.revision"],"acceptance":["artifact_ids","revision_id","manifest_sha256","final_mp4_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-082","title":"Create or reuse durable AI-Engineering-OS project and job identity","kind":"work","dependencies":["0005-070"],"allowed_actions":["engineering_os.case0005.identity"],"acceptance":["project_id","job_id","identity_receipt"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-085","title":"Register canonical final MP4 in AI-Engineering-OS after WorkLedger and OS identity join","kind":"join","dependencies":["0005-080","0005-082"],"allowed_actions":["engineering_os.artifact.register"],"acceptance":["artifact_ids","engineering_os_receipt","project_id","job_id"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-090","title":"Upload final MP4, visual contact sheet, and immutable WorkLedger manifest directly from ODA to Google Drive for ChatGPT review","kind":"work","dependencies":["0005-085"],"allowed_actions":["openworker.case.publish-artifacts"],"acceptance":["review_bundle","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_revision_web_view_link","drive_file_ids","drive_file_links","transport","chatgpt_review_ready","github_action_used_for_artifact_transport"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-100","title":"Wait in local supervisor for bounded ChatGPT Drive review receipt over the physical final artifacts","kind":"work","dependencies":["0005-090"],"allowed_actions":["openworker.review.await-drive"],"acceptance":["review_receipt","review_decision","accepted_revision_id"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-110","title":"Create approved Snow White Delivery Revision only after ChatGPT PASS","kind":"work","dependencies":["0005-100"],"allowed_actions":["engineering_os.delivery.publish"],"acceptance":["delivery_id","delivery_revision","accepted_revision_id"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0005-120","title":"Validate final Snow White delivery package and review provenance","kind":"work","dependencies":["0005-110"],"allowed_actions":["openworker.delivery.validate"],"acceptance":["package_path","final_mp4","final_validation","review_provenance"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false} + {"step_id":"0005-010","title":"Generate fresh structured Snow White Director preproduction","kind":"work","dependencies":[],"allowed_actions":["comfyx-studio.director.preproduction"],"acceptance":["work_id","director_plan","director_plan_sha256","shot_count","character_count","scene_bible_count"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-020","title":"Materialize Snow White storyboard presentation request and visual requirements","kind":"work","dependencies":["0005-010"],"allowed_actions":["comfyx-studio.storyboard.plan"],"acceptance":["work_id","storyboard_request","visual_requirements","visual_asset_count","reference_asset_ids"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-025","title":"Generate text-only Snow White storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0005-020"],"allowed_actions":["presentation.openmaic"],"output_relpath":"presentation/storyboard-text-only.pptx","acceptance":["work_id","storyboard_pptx","storyboard_manifest","storyboard_pptx_sha256","slide_count","reopen_receipt","image_count"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-026","title":"Publish exact text-only storyboard revision to Google Drive for ChatGPT/user approval","kind":"work","dependencies":["0005-025"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_file_ids","drive_file_links","remote_verified","exact_drive_revision_identity","chatgpt_review_ready"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-027","title":"Apply ChatGPT/user approval receipt bound to the exact text-only storyboard Drive revision","kind":"work","dependencies":["0005-026"],"allowed_actions":["review.apply"],"acceptance":["approved_storyboard_pptx_sha256","approval_decision","approval_receipt","reviewed_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-030","title":"Generate REAL Snow White character master images through DirectWork durable fanout","kind":"fanout","dependencies":["0005-027"],"allowed_actions":["image.comfyx.storyboard-real"],"acceptance":["work_ids","claimed_slots","character_receipts","character_images","character_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-040","title":"Generate REAL Snow White scene concept images through DirectWork durable fanout","kind":"fanout","dependencies":["0005-027"],"allowed_actions":["image.comfyx.storyboard-real"],"acceptance":["work_ids","claimed_slots","scene_receipts","scene_images","scene_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-050","title":"Join character/scene branches, then generate and bind REAL Snow White shot images","kind":"join","dependencies":["0005-030","0005-040"],"allowed_actions":["comfyx-studio.storyboard.real-bind"],"output_relpath":"presentation/storyboard-request.bound.json","acceptance":["work_id","shot_image_receipts","shot_images","shot_image_sha256","bound_storyboard_request"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-055","title":"Generate illustrated Snow White storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0005-050"],"allowed_actions":["presentation.openmaic"],"output_relpath":"presentation/storyboard-illustrated.pptx","acceptance":["work_id","illustrated_storyboard_pptx","illustrated_storyboard_manifest","illustrated_storyboard_sha256","slide_count","reopen_receipt","bound_image_count"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-056","title":"Publish exact illustrated storyboard revision to Google Drive for ChatGPT/user approval","kind":"work","dependencies":["0005-055"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_file_ids","drive_file_links","remote_verified","exact_drive_revision_identity","chatgpt_review_ready"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-057","title":"Apply approval receipt bound to exact illustrated storyboard Drive revision","kind":"work","dependencies":["0005-056"],"allowed_actions":["review.apply"],"acceptance":["approved_illustrated_storyboard_sha256","approval_decision","approval_receipt","reviewed_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-060","title":"Fan out every approved Snow White shot through DirectWork durable local execution","kind":"fanout","dependencies":["0005-057"],"allowed_actions":["comfyx.production.video.real"],"acceptance":["work_ids","claimed_slots","executor_identities","shot_video_receipts","shot_videos","shot_video_sha256","all_shots_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-070","title":"Join all shot video works and assemble canonical Snow White final MP4 with physical QC and contact sheet","kind":"join","dependencies":["0005-060"],"allowed_actions":["comfyx-studio.finalize"],"acceptance":["work_id","final_mp4","final_mp4_sha256","resolution","duration","subtitle_receipt","physical_qc","review_contact_sheet","review_contact_sheet_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-080","title":"Create immutable durable revision record for canonical Snow White final MP4","kind":"work","dependencies":["0005-070"],"allowed_actions":["artifact.revision.register"],"acceptance":["work_id","artifact_ids","revision_id","manifest_sha256","final_mp4_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-082","title":"Create or reuse durable AI-Engineering-OS project and job identity","kind":"work","dependencies":["0005-070"],"allowed_actions":["engineering_os.case0005.identity"],"acceptance":["work_id","project_id","job_id","identity_receipt"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-085","title":"Register canonical final MP4 in AI-Engineering-OS after revision and OS identity join","kind":"join","dependencies":["0005-080","0005-082"],"allowed_actions":["engineering_os.artifact.register"],"acceptance":["work_id","artifact_ids","engineering_os_receipt","project_id","job_id"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-090","title":"Publish final MP4, contact sheet, and manifest to exact verified Google Drive revision for ChatGPT review","kind":"work","dependencies":["0005-085"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","manifest_sha256","published_artifacts","published_artifact_sha256","drive_receipt","drive_folder_id","drive_file_ids","drive_file_links","remote_verified","exact_drive_revision_identity","chatgpt_review_ready"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-100","title":"Apply ChatGPT review receipt over the exact physical final Drive revision","kind":"work","dependencies":["0005-090"],"allowed_actions":["review.apply"],"acceptance":["review_receipt","review_decision","accepted_revision_id","reviewed_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-110","title":"Create approved Snow White Delivery Revision only after ChatGPT PASS","kind":"work","dependencies":["0005-100"],"allowed_actions":["engineering_os.delivery.publish"],"acceptance":["work_id","delivery_id","delivery_revision","accepted_revision_id"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0005-120","title":"Validate final Snow White delivery package and review provenance","kind":"work","dependencies":["0005-110"],"allowed_actions":["delivery.validate"],"acceptance":["work_id","package_path","final_mp4","final_validation","review_provenance"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false} ] } From febcb91e3c6bc7001a0a2594bae0e8a5cd3f7f9a Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:41:03 +0800 Subject: [PATCH 06/10] docs(case0002): migrate worklist to DirectWork and verified Drive review --- case-worklists/0002.json | 58 +++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/case-worklists/0002.json b/case-worklists/0002.json index fee9a1818d..7faa8a91e0 100644 --- a/case-worklists/0002.json +++ b/case-worklists/0002.json @@ -1,25 +1,47 @@ { - "schema_version": "openworker-case-worklist/v1", + "schema_version": "directwork-case-worklist/v2", "case_id": "0002", "workspace_root": "D:\\AI-Example\\0002", "assigned_host": "DESKTOP-ODAQN0D", - "revision": 5, + "revision": 6, + "contract_updated_at": "2026-08-20 Asia/Taipei", + "historical_note": "Revision 5 and earlier OpenWorker approval/review actions remain in Git history as evidence only. Current execution authority is DirectWork.", + "parallel_policy": { + "business_authority": "directwork", + "canonical_controller": "directwork", + "tool_guidance_authority": "go-tool-runtime", + "github_actions_role": "short-secret-trigger-transport-only", + "github_actions_business_execution_allowed": false, + "github_actions_completion_authority": false, + "openworker_current_authority": false, + "assigned_host": "DESKTOP-ODAQN0D", + "host_verification": "fail-closed-at-executor", + "max_local_slots": 4, + "parallel_rule": "dependency-satisfied independent durable works may run concurrently; same non-reentrant work keeps one active claim", + "completion_evidence": ["work_id","events","claimed_slot","executor_identity","started_at","completed_at","exit_code","artifact_path","artifact_size","artifact_sha256"], + "approval_artifact_transport": "drive.chatgpt.review.publish", + "approval_artifact_primitive": "drive.file.publish-verified", + "drive_remote_verification_required": true, + "exact_drive_revision_identity_required": true + }, "steps": [ - {"step_id":"0002-010","title":"Generate fresh structured Director preproduction","kind":"work","dependencies":[],"allowed_actions":["comfyx-studio.director.preproduction"],"acceptance":["run_id","director_plan","director_plan_sha256","shot_count","character_count","scene_bible_count"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-020","title":"Materialize storyboard presentation request and visual requirements","kind":"work","dependencies":["0002-010"],"allowed_actions":["comfyx-studio.storyboard.plan"],"acceptance":["storyboard_request","visual_requirements","visual_asset_count","reference_asset_ids"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-025","title":"Generate text-only storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0002-020"],"allowed_actions":["presentation.openmaic"],"acceptance":["storyboard_pptx","storyboard_manifest","storyboard_pptx_sha256","slide_count","reopen_receipt","image_count"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-027","title":"Wait for user approval of text-only storyboard PPTX","kind":"approval","dependencies":["0002-025"],"allowed_actions":["openworker.user.approval"],"acceptance":["approved_storyboard_pptx_sha256","approval_decision","approval_receipt"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-030","title":"Generate REAL character master images after storyboard approval","kind":"work","dependencies":["0002-027"],"allowed_actions":["comfyx.storyboard.image.real"],"acceptance":["character_receipts","character_images","character_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-040","title":"Generate REAL scene concept image on fixed ODA host","kind":"work","dependencies":["0002-030"],"allowed_actions":["comfyx.storyboard.image.real"],"acceptance":["scene_receipt","scene_image","scene_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-050","title":"Generate and bind four REAL referenced storyboard images","kind":"work","dependencies":["0002-040"],"allowed_actions":["comfyx.storyboard.image.real","comfyx-studio.storyboard.bind"],"acceptance":["shot_image_receipts","shot_images","shot_image_sha256","bound_storyboard_request"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-055","title":"Generate illustrated storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0002-050"],"allowed_actions":["presentation.openmaic"],"acceptance":["illustrated_storyboard_pptx","illustrated_storyboard_manifest","illustrated_storyboard_sha256","slide_count","reopen_receipt","bound_image_count"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-057","title":"Wait for user approval of illustrated storyboard PPTX","kind":"approval","dependencies":["0002-055"],"allowed_actions":["openworker.user.approval"],"acceptance":["approved_illustrated_storyboard_sha256","approval_decision","approval_receipt"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-060","title":"Generate four REAL video shots through audited ComfyX production","kind":"work","dependencies":["0002-057"],"allowed_actions":["comfyx.production.video.real"],"acceptance":["shot_video_receipts","shot_videos","shot_video_sha256","execution_ledger"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-070","title":"Assemble canonical final MP4 with subtitles and physical QC","kind":"work","dependencies":["0002-060"],"allowed_actions":["comfyx-studio.finalize"],"acceptance":["final_mp4","final_mp4_sha256","resolution","duration","subtitle_receipt","physical_qc"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-080","title":"Register final artifacts and create immutable WorkLedger revision","kind":"work","dependencies":["0002-070"],"allowed_actions":["engineering_os.artifact.register","openworker.workledger.revision"],"acceptance":["artifact_ids","revision_id","manifest_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-090","title":"Build and publish bounded review bundle to Google Drive","kind":"work","dependencies":["0002-080"],"allowed_actions":["openworker.review.publish"],"acceptance":["review_bundle","drive_receipt","drive_folder_id","manifest_sha256"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-100","title":"Apply ChatGPT semantic and visual review receipt","kind":"work","dependencies":["0002-090"],"allowed_actions":["openworker.review.apply"],"acceptance":["review_receipt","review_decision","accepted_revision_id"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-110","title":"Create approved Delivery Revision only after LLM PASS","kind":"work","dependencies":["0002-100"],"allowed_actions":["engineering_os.delivery.publish"],"acceptance":["delivery_id","delivery_revision","accepted_revision_id"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false}, - {"step_id":"0002-120","title":"Validate final delivery package and review provenance","kind":"work","dependencies":["0002-110"],"allowed_actions":["openworker.delivery.validate"],"acceptance":["package_path","final_mp4","final_validation","review_provenance"],"status":"PENDING","evidence":{},"blocker":"","repair_parent_step":"","allow_skip":false} + {"step_id":"0002-010","title":"Generate fresh structured Director preproduction","kind":"work","dependencies":[],"allowed_actions":["comfyx-studio.director.preproduction"],"acceptance":["work_id","director_plan","director_plan_sha256","shot_count","character_count","scene_bible_count"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-020","title":"Materialize storyboard presentation request and visual requirements","kind":"work","dependencies":["0002-010"],"allowed_actions":["comfyx-studio.storyboard.plan"],"acceptance":["work_id","storyboard_request","visual_requirements","visual_asset_count","reference_asset_ids"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-025","title":"Generate text-only storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0002-020"],"allowed_actions":["presentation.openmaic"],"acceptance":["work_id","storyboard_pptx","storyboard_manifest","storyboard_pptx_sha256","slide_count","reopen_receipt","image_count"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-026","title":"Publish exact text-only storyboard revision to Google Drive for ChatGPT/user approval","kind":"work","dependencies":["0002-025"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","manifest_sha256","drive_receipt","remote_verified","exact_drive_revision_identity","chatgpt_review_ready"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-027","title":"Apply user/ChatGPT approval receipt bound to exact text-only storyboard Drive revision","kind":"approval","dependencies":["0002-026"],"allowed_actions":["review.apply"],"acceptance":["approved_storyboard_pptx_sha256","approval_decision","approval_receipt","reviewed_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-030","title":"Generate REAL character master images after storyboard approval","kind":"fanout","dependencies":["0002-027"],"allowed_actions":["comfyx.storyboard.image.real"],"acceptance":["work_ids","claimed_slots","character_receipts","character_images","character_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-040","title":"Generate REAL scene concept images on fixed ODA host","kind":"fanout","dependencies":["0002-027"],"allowed_actions":["comfyx.storyboard.image.real"],"acceptance":["work_ids","claimed_slots","scene_receipts","scene_images","scene_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-050","title":"Join REAL character/scene assets and bind referenced storyboard images","kind":"join","dependencies":["0002-030","0002-040"],"allowed_actions":["comfyx.storyboard.image.real","comfyx-studio.storyboard.bind"],"acceptance":["work_id","shot_image_receipts","shot_images","shot_image_sha256","bound_storyboard_request"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-055","title":"Generate illustrated storyboard PPTX through OpenMAIC","kind":"work","dependencies":["0002-050"],"allowed_actions":["presentation.openmaic"],"acceptance":["work_id","illustrated_storyboard_pptx","illustrated_storyboard_manifest","illustrated_storyboard_sha256","slide_count","reopen_receipt","bound_image_count"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-056","title":"Publish exact illustrated storyboard revision to Google Drive for ChatGPT/user approval","kind":"work","dependencies":["0002-055"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","manifest_sha256","drive_receipt","remote_verified","exact_drive_revision_identity","chatgpt_review_ready"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-057","title":"Apply user/ChatGPT approval receipt bound to exact illustrated storyboard Drive revision","kind":"approval","dependencies":["0002-056"],"allowed_actions":["review.apply"],"acceptance":["approved_illustrated_storyboard_sha256","approval_decision","approval_receipt","reviewed_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-060","title":"Generate REAL video shots through DirectWork durable fanout","kind":"fanout","dependencies":["0002-057"],"allowed_actions":["comfyx.production.video.real"],"acceptance":["work_ids","claimed_slots","executor_identities","shot_video_receipts","shot_videos","shot_video_sha256","all_shots_terminal_succeeded"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-070","title":"Join shot works and assemble canonical final MP4 with subtitles and physical QC","kind":"join","dependencies":["0002-060"],"allowed_actions":["comfyx-studio.finalize"],"acceptance":["work_id","final_mp4","final_mp4_sha256","resolution","duration","subtitle_receipt","physical_qc"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-080","title":"Register final artifacts and immutable revision identity","kind":"work","dependencies":["0002-070"],"allowed_actions":["engineering_os.artifact.register","artifact.revision.register"],"acceptance":["work_id","artifact_ids","revision_id","manifest_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-090","title":"Publish final review artifacts to verified Google Drive revision","kind":"work","dependencies":["0002-080"],"allowed_actions":["drive.chatgpt.review.publish","drive.file.publish-verified"],"acceptance":["work_id","drive_receipt","remote_verified","exact_drive_revision_identity","manifest_sha256"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-100","title":"Apply ChatGPT semantic and visual review receipt over exact Drive revision","kind":"work","dependencies":["0002-090"],"allowed_actions":["review.apply"],"acceptance":["review_receipt","review_decision","accepted_revision_id","reviewed_drive_revision_identity"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-110","title":"Create approved Delivery Revision only after LLM PASS","kind":"work","dependencies":["0002-100"],"allowed_actions":["engineering_os.delivery.publish"],"acceptance":["work_id","delivery_id","delivery_revision","accepted_revision_id"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false}, + {"step_id":"0002-120","title":"Validate final delivery package and review provenance","kind":"work","dependencies":["0002-110"],"allowed_actions":["delivery.validate"],"acceptance":["work_id","package_path","final_mp4","final_validation","review_provenance"],"status":"PENDING","evidence":{},"blocker":"","allow_skip":false} ] } From 3b077d2f1ed36b32c990a12d92ed7a20f6f744af Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:41:21 +0800 Subject: [PATCH 07/10] docs(case0003): migrate closing worklist to DirectWork review contract --- case-worklists/0003.json | 48 ++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/case-worklists/0003.json b/case-worklists/0003.json index bef5da6af3..8161524a9c 100644 --- a/case-worklists/0003.json +++ b/case-worklists/0003.json @@ -1,47 +1,62 @@ { - "schema_version": "openworker-case-worklist/v1", + "schema_version": "directwork-case-worklist/v2", "case_id": "0003", "workspace_root": "D:\\AI-Work\\jobs\\0003-YUJING-BRIDGE", "assigned_host": "DESKTOP-UL7V2VV", - "revision": 2, + "revision": 3, + "contract_updated_at": "2026-08-20 Asia/Taipei", + "historical_note": "Revision 2 OpenWorker review actions remain in Git history as historical evidence. Current business authority is DirectWork and current Drive review guidance comes from go-tool.", + "parallel_policy": { + "business_authority": "directwork", + "canonical_controller": "directwork", + "tool_guidance_authority": "go-tool-runtime", + "github_actions_role": "short-secret-trigger-transport-only", + "github_actions_business_execution_allowed": false, + "github_actions_completion_authority": false, + "openworker_current_authority": false, + "assigned_host": "DESKTOP-UL7V2VV", + "host_verification": "fail-closed-at-executor", + "completion_evidence": ["work_id","events","claimed_slot","executor_identity","started_at","completed_at","exit_code","artifact_path","artifact_size","artifact_sha256"], + "approval_artifact_transport": "drive.chatgpt.review.publish", + "approval_artifact_primitive": "drive.file.publish-verified", + "drive_remote_verification_required": true, + "exact_drive_revision_identity_required": true + }, "steps": [ { "step_id": "0003-160", - "title": "Publish immutable review bundle to Google Drive API and bind WorkLedger receipt", + "title": "Publish exact immutable review artifacts to verified Google Drive revision", "kind": "work", "dependencies": [], - "allowed_actions": ["openworker.review.publish"], - "acceptance": ["review_bundle", "drive_receipt"], + "allowed_actions": ["drive.chatgpt.review.publish", "drive.file.publish-verified"], + "acceptance": ["work_id", "review_bundle", "manifest_sha256", "drive_receipt", "remote_verified", "exact_drive_revision_identity", "drive_file_ids", "drive_file_links"], "status": "PENDING", "evidence": {}, "blocker": "", - "repair_parent_step": "", "allow_skip": false }, { "step_id": "0003-170", - "title": "ChatGPT semantic and visual review of the exact published Drive revision", + "title": "ChatGPT semantic and visual review of the exact verified Drive revision", "kind": "work", "dependencies": ["0003-160"], - "allowed_actions": ["openworker.review.inspect_drive"], - "acceptance": ["drive_revision_folder_id", "review_receipt", "review_decision"], + "allowed_actions": ["review.inspect_drive"], + "acceptance": ["reviewed_drive_revision_identity", "review_receipt", "review_decision", "reviewed_drive_file_ids", "reviewed_manifest_sha256"], "status": "PENDING", "evidence": {}, "blocker": "", - "repair_parent_step": "", "allow_skip": false }, { "step_id": "0003-180", - "title": "Apply ChatGPT review receipt to WorkLedger", + "title": "Apply ChatGPT review receipt to current durable revision state", "kind": "work", "dependencies": ["0003-170"], - "allowed_actions": ["openworker.review.apply"], - "acceptance": ["review_receipt", "ledger_status", "review_decision"], + "allowed_actions": ["review.apply"], + "acceptance": ["review_receipt", "review_status", "review_decision", "reviewed_drive_revision_identity"], "status": "PENDING", "evidence": {}, "blocker": "", - "repair_parent_step": "", "allow_skip": false }, { @@ -49,12 +64,11 @@ "title": "Create and validate approved Delivery Revision", "kind": "work", "dependencies": ["0003-180"], - "allowed_actions": ["engineering_os.delivery.publish", "openworker.delivery.validate"], - "acceptance": ["delivery_revision", "delivery_validation"], + "allowed_actions": ["engineering_os.delivery.publish", "delivery.validate"], + "acceptance": ["work_id", "delivery_revision", "delivery_validation", "review_provenance"], "status": "PENDING", "evidence": {}, "blocker": "", - "repair_parent_step": "", "allow_skip": false } ] From f4c39cf3098834cff6abc76ad2470efdfbeb6969 Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:42:38 +0800 Subject: [PATCH 08/10] docs(cases): add current-contract override index for legacy case manuals --- ...06\350\223\213\347\264\242\345\274\225.md" | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 "docs/2026-08-20-\350\210\212\346\241\210\344\276\213\346\226\207\344\273\266\351\226\261\350\256\200\350\210\207\347\217\276\350\241\214\345\245\221\347\264\204\350\246\206\350\223\213\347\264\242\345\274\225.md" diff --git "a/docs/2026-08-20-\350\210\212\346\241\210\344\276\213\346\226\207\344\273\266\351\226\261\350\256\200\350\210\207\347\217\276\350\241\214\345\245\221\347\264\204\350\246\206\350\223\213\347\264\242\345\274\225.md" "b/docs/2026-08-20-\350\210\212\346\241\210\344\276\213\346\226\207\344\273\266\351\226\261\350\256\200\350\210\207\347\217\276\350\241\214\345\245\221\347\264\204\350\246\206\350\223\213\347\264\242\345\274\225.md" new file mode 100644 index 0000000000..d8c0487d8f --- /dev/null +++ "b/docs/2026-08-20-\350\210\212\346\241\210\344\276\213\346\226\207\344\273\266\351\226\261\350\256\200\350\210\207\347\217\276\350\241\214\345\245\221\347\264\204\350\246\206\350\223\213\347\264\242\345\274\225.md" @@ -0,0 +1,85 @@ +# 舊案例文件閱讀與現行契約覆蓋索引 + +- 更新:2026-08-20(Asia/Taipei) +- 適用 repo:`liuxb99/openworker` +- 狀態:CURRENT CONTRACT INDEX + +## 目的 + +本 repo 保留大量 2026-08-15~2026-08-19 的 REAL 案例紀錄。這些文件中的 run/job/commit/SHA/root-cause/receipt 是重要歷史證據,不應刪除;但當時的 OpenWorker、GitHub Actions、local-supervisor、Drive Desktop 操作方式已不是目前 canonical path。 + +大模型讀舊文件時必須先套用本索引。 + +## 現行權威 + +```text +LLM / ChatGPT + -> go-tool 查 capability / guidance / negative knowledge + -> GitHub Action(若需要遠端 ingress)只送短密語 + -> DirectWork durable work + -> queue / slot / executor / localexec + -> REAL artifact + durable evidence + -> drive.chatgpt.review.publish + -> drive.file.publish-verified + -> Google Drive remote verification + exact revision identity + -> ChatGPT review receipt + -> delivery gate +``` + +## 舊名詞的現行解讀 + +| 舊文件文字 | 現行解讀 | +|---|---| +| OpenWorker 是總控 / Case Engine | 歷史架構;現行 business authority 是 DirectWork | +| go-tool local supervisor / :8848 queue authority | 歷史執行架構;現行 go-tool 是工具/方法/contract 查詢層 | +| GitHub runner label / workflow dispatch | 可保留為歷史 run 證據;現行 GitHub Action 只能是短密語 transport,不是 business authority | +| workflow success | 不能代表 business completion | +| WorkLedger 是目前唯一 durable authority | 歷史資料治理概念保留;現行完成判斷以 DirectWork durable work/evidence 為主,既有 ledger/revision 可作 provenance evidence | +| Drive Desktop sync handoff | 歷史失敗/過渡方法;不能作 cloud publication authority | +| openworker.review.publish / case.publish-artifacts | legacy;普通 ChatGPT 審查改用 drive.chatgpt.review.publish | +| drive.review.publish | legacy compatibility;普通單次成果審查優先 drive.chatgpt.review.publish | +| 自行 OAuth / Python uploader / rclone | 非預設;先問 go-tool,使用既有 verified Drive capability | +| 一次只能一個 business action | 過時;不同且依賴滿足、可重入安全的 durable works 可由 DirectWork 多 slot/executor 並行 | + +## 完成證據 + +現行 business completion 至少應依工作類型取得: + +- `work_id` +- accepted/queued/claimed/running/completed 或 blocked events +- claimed slot +- executor identity / PID(適用時) +- exit code +- artifact path / size / SHA256 +- Drive review 時另需 remote verification + exact Drive revision/file identity +- ChatGPT review 時另需綁定 exact revision 的 review receipt + +## 文件優先序 + +1. go-tool 現行 capability contract; +2. `2026-08-20-案例0002-0005-現行操作契約統一更正.md`; +3. 各案例 `case-worklists/*.json` 的 `directwork-case-worklist/v2` revision; +4. 各案例 2026-08-20 專用更正文檔; +5. 舊文件中的 REAL 歷史 evidence; +6. 舊文件中的操作步驟僅供考古,不得覆蓋 1~4。 + +## 已直接升級的 worklist + +- Case0002:DirectWork schema;Drive approval 先 verified publish,再綁 exact revision approval。 +- Case0003:DirectWork schema;Case3 成功 Drive 路徑固化為 verified publication + exact revision review。 +- Case0004:DirectWork schema;fanout 必須有 work_ids / slots / executor evidence。 +- Case0005:DirectWork schema;白雪公主 storyboard / illustrated PPTX / final MP4 全部統一 verified Drive review contract。 + +## 對舊詳細手冊的規則 + +例如 `2026-08-17-1605-Case0003-玉井橋全流程操作手冊與Blender品質回修紀錄.md` 中的固定機器、workspace、run/job/commit/SHA、Blender root cause 等仍有效;但其中把 GitHub Runner Label、WorkLedger/OpenWorker、舊 review action 當現行操作 authority 的段落,必須按本索引重新解讀。 + +同理,`2026-08-17-1324-OpenWorker-Google-Drive成果發布與ChatGPT品質審查缺口.md` 中「Drive Desktop copy 不能證明雲端發布」這個教訓仍完全有效;只是解法已從 OpenWorker 自建 publish path 演進成 go-tool 指引的 `drive.chatgpt.review.publish -> drive.file.publish-verified`。 + +## 禁止模型做的事 + +- 不得因舊文件出現 OpenWorker 名稱就恢復 OpenWorker 作新 business controller。 +- 不得因舊文件有 workflow run id 就把 GitHub Actions 當 completion authority。 +- 不得因本機 Drive sync folder 有檔案就宣稱已供 ChatGPT 審查。 +- 不得跳過 go-tool 而重新發明上傳工具。 +- 不得把歷史 evidence 刪掉或改寫成沒發生過。 From 6f2a33eb05184c5b3dcfa11bb6e13bd8d2e49e9e Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:44:20 +0800 Subject: [PATCH 09/10] docs(drive): mark legacy OpenWorker publication design as historical --- ...51\346\237\245\347\274\272\345\217\243.md" | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git "a/docs/2026-08-17-1324-OpenWorker-Google-Drive\346\210\220\346\236\234\347\231\274\345\270\203\350\210\207ChatGPT\345\223\201\350\263\252\345\257\251\346\237\245\347\274\272\345\217\243.md" "b/docs/2026-08-17-1324-OpenWorker-Google-Drive\346\210\220\346\236\234\347\231\274\345\270\203\350\210\207ChatGPT\345\223\201\350\263\252\345\257\251\346\237\245\347\274\272\345\217\243.md" index 626ddc36f1..19240b4f71 100644 --- "a/docs/2026-08-17-1324-OpenWorker-Google-Drive\346\210\220\346\236\234\347\231\274\345\270\203\350\210\207ChatGPT\345\223\201\350\263\252\345\257\251\346\237\245\347\274\272\345\217\243.md" +++ "b/docs/2026-08-17-1324-OpenWorker-Google-Drive\346\210\220\346\236\234\347\231\274\345\270\203\350\210\207ChatGPT\345\223\201\350\263\252\345\257\251\346\237\245\347\274\272\345\217\243.md" @@ -1,9 +1,17 @@ # OpenWorker Google Drive 成果發布與 ChatGPT 品質審查缺口 +> **2026-08-20 CURRENT CONTRACT OVERRIDE — HISTORICAL EVIDENCE ONLY** +> +> 本文件以下內容保留為 2026-08-17 的歷史設計、失敗教訓與 REAL 演進證據。**不得再把 OpenWorker、WorkLedger、Drive Desktop 或本文件內的舊 publish implementation 當成現行操作 authority。** +> +> 現行做法:先問 go-tool;business execution 由 DirectWork 建 durable work;普通成果給 ChatGPT 審查使用 `drive.chatgpt.review.publish`,其 canonical primitive 為 `drive.file.publish-verified`。完成必須包含 Google Drive upload、independent remote verification、exact Drive revision/file identity,再由 ChatGPT 審查該 exact revision。 +> +> 本文件中「Drive Desktop copy 不能證明雲端 publication」以及「需要 cloud identity / SHA / idempotency / exact revision」等教訓仍然有效;已被吸收到現行 verified Drive capability contract。 + - 日期:2026-08-17 13:24(Asia/Taipei) - Repo:`liuxb99/openworker` -- 狀態:IMPLEMENTING -- 優先級:P0 / P1 邊界,案例正式驗收前必須閉環 +- 狀態:HISTORICAL DESIGN / SUPERSEDED OPERATION +- 優先級:歷史 P0 / P1 缺口;現行替代路徑已由 go-tool + DirectWork contract 接管 ## 1. 結論 @@ -62,6 +70,8 @@ WorkLedger 是 durable authority;Google Drive 只是 review transport。正確 ## 4. 目標架構 +> **歷史架構,已 superseded。** 現行請使用文件頂部 CURRENT CONTRACT OVERRIDE。 + 正式鏈路定義為: ```text @@ -105,6 +115,8 @@ ChatGPT reads exact Drive revision ## 5. 正式 Review Publish Contract +> **以下 schema 為歷史 OpenWorker contract,保留作 migration/provenance 參考;不是現行 capability ID。** + `review-publish-receipt.json` schema:`openworker-review-publish-receipt/v1` 必要欄位: @@ -154,6 +166,8 @@ ChatGPT reads exact Drive revision 2. Google Application Default Credentials:正式服務優先。 3. `OPENWORKER_GOOGLE_DRIVE_SCOPE` 可顯式設定 scope;預設使用可操作專用 review folder 的 Drive scope。 +> 上述環境變數/認證方式是歷史 OpenWorker 實作細節。現行大模型不得自行依此重建 uploader 或 OAuth 流程;先問 go-tool 使用 verified Drive capability。 + ### 6.2 大檔案 成果可能是 MP4 / GLB / PDF,因此不可把 512 MB bundle 全部讀進記憶體。Drive transport 使用 resumable upload,檔案以 stream 傳輸。 @@ -181,6 +195,8 @@ ChatGPT reads exact Drive revision 只有 API publish receipt 能證明 OpenWorker 已取得雲端 file/folder identity。 +> **2026-08-20 更正**:Drive Desktop sync 現在只允許當歷史/compatibility evidence;普通成果審查的現行 publication authority 是 `drive.chatgpt.review.publish -> drive.file.publish-verified` 的 remote verification 結果。 + ## 8. WorkLedger 規則 Google Drive 不是 durable authority。正式 durable evidence 仍在 WorkLedger。 @@ -199,6 +215,8 @@ Google Drive 不是 durable authority。正式 durable evidence 仍在 WorkLedge LLM receipt 是唯一允許進入 PASS/TUNE/FAIL 後續治理的入口。 +> **2026-08-20 更正**:上段是歷史資料治理模型。現行 business completion authority 是 DirectWork durable work/evidence;既有 WorkLedger/receipt 可保留為 provenance evidence,但不得凌駕 DirectWork current contract。 + ## 9. 本批實作 本批新增 `coworker/review_drive.py`: @@ -251,4 +269,6 @@ LLM receipt 是唯一允許進入 PASS/TUNE/FAIL 後續治理的入口。 3. publish receipt 進入 WorkLedger durable evidence。 4. ChatGPT 對真實 Drive revision 完成一次 review,review receipt 回到 WorkLedger 並驅動 PASS/TUNE/FAIL。 +> **2026-08-20 CURRENT completion 定義**:不要再以 OpenWorker receipt/WorkLedger 作唯一完成條件。現行要求為 DirectWork durable work completed + REAL artifact + Drive upload + independent remote verification + exact Drive revision identity + ChatGPT review receipt(需要審查時)。 + 在 REAL gate 完成前,代碼狀態只能是 **IMPLEMENTED — WAITING FOR REAL DRIVE VERIFICATION**,不能寫成完全閉環。 From 8fa6acb0205b4d17872acf66387fe67a1fc52e4d Mon Sep 17 00:00:00 2001 From: liuxb99 <121744662+liuxb99@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:44:49 +0800 Subject: [PATCH 10/10] docs(cases): mark legacy CaseWorklist controller design as historical --- ...17\350\210\252\347\274\272\345\217\243.md" | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git "a/docs/2026-08-17-1411-\346\241\210\344\276\213\345\237\267\350\241\214\345\267\245\344\275\234\346\270\205\345\226\256\345\244\261\346\216\247\350\210\207\345\201\217\350\210\252\347\274\272\345\217\243.md" "b/docs/2026-08-17-1411-\346\241\210\344\276\213\345\237\267\350\241\214\345\267\245\344\275\234\346\270\205\345\226\256\345\244\261\346\216\247\350\210\207\345\201\217\350\210\252\347\274\272\345\217\243.md" index df9f7fd98e..3e5d3f5906 100644 --- "a/docs/2026-08-17-1411-\346\241\210\344\276\213\345\237\267\350\241\214\345\267\245\344\275\234\346\270\205\345\226\256\345\244\261\346\216\247\350\210\207\345\201\217\350\210\252\347\274\272\345\217\243.md" +++ "b/docs/2026-08-17-1411-\346\241\210\344\276\213\345\237\267\350\241\214\345\267\245\344\275\234\346\270\205\345\226\256\345\244\261\346\216\247\350\210\207\345\201\217\350\210\252\347\274\272\345\217\243.md" @@ -1,8 +1,14 @@ # OpenWorker:案例執行工作清單失控與偏航缺口 +> **2026-08-20 CURRENT CONTRACT OVERRIDE — HISTORICAL DESIGN** +> +> 本文件記錄 2026-08-17 為解決案例偏航而形成 CaseWorklist 的歷史設計。**CaseWorklist、dependency、repair-parent、acceptance gate 等治理思想仍有效;但 OpenWorker 不再是目前 controller,GitHub Actions scheduler 也不是現行 business authority。** +> +> 現行架構:go-tool 負責告訴大模型可用 capability / inputs / guidance / negative knowledge;DirectWork 是唯一 business controller / durable work authority;必要時 GitHub Action 只送短密語;不同、依賴已滿足且可安全並行的 durable works 可由多 slot/executor 併發。現行 `case-worklists/0002.json`~`0005.json` 已升級為 `directwork-case-worklist/v2`。 + 時間:2026-08-17 14:11(Asia/Taipei) -狀態:GAP CONFIRMED / DOC FIRST +狀態:HISTORICAL GAP / GOVERNANCE PRINCIPLES RETAINED ## 1. 問題 @@ -39,6 +45,8 @@ OpenWorker 目前在做 Case 0002 / 0003 / 0004 這類跨 repo REAL 案例時, 這就是案例執行偏航的根因。 +> **2026-08-20 更正**:上段的根因分析仍成立,但「authority 告訴 OpenWorker」改為「DirectWork durable work + current case worklist contract 告訴執行器」。 + ## 2. 根因 現有模組責任切得很清楚,但缺少 orchestration control plane: @@ -87,6 +95,8 @@ FAILED SKIPPED(只有 manifest 明確允許時) ``` +> **2026-08-20 更正**:結構思想保留,但實際 authority 已遷移到 `directwork-case-worklist/v2`;step execution 必須對應 DirectWork `work_id` 與 durable events/evidence。 + ## 4. 最重要的控制規則 ### 4.1 一次只能有一個 canonical next step @@ -101,6 +111,8 @@ worklist.next_step() 不能先 dispatch 再補文件。 +> **2026-08-20 更正**:這條「一次只能一個」對新版並行架構過於嚴格。現行語意是:dependency graph 決定 READY set;不同且可安全並行的 READY durable works 可以同時 dispatch。只有同一不可重入 work 保持 single active claim/lease。 + ### 4.2 不允許跳步 若 dependencies 未 PASS: @@ -109,6 +121,8 @@ worklist.next_step() assert_action_allowed() → fail closed ``` +此原則仍有效;現行由 DirectWork + case worklist contract 驗證。 + ### 4.3 blocker repair 必須綁回原 step 例如 Case 0004 的 source locator 缺 O87 label: @@ -123,6 +137,8 @@ return_to = C-010 修 infrastructure 只是 repair child,不得把 repair branch 變成新主線。 +此治理思想仍有效。 + ### 4.4 新工作必須先登記 LLM 發現一個新缺口時,不得直接開始修。 @@ -135,15 +151,19 @@ worklist.add_repair(parent_step, ...) 若不能指出 parent_step,表示它不是目前案例必要工作,禁止執行。 +現行實作應由 DirectWork/worklist contract 建立可追溯 durable repair work,而不是依賴聊天上下文。 + ### 4.5 evidence gate 一個 step 只有在 acceptance evidence 完整時才能 `PASSED`。 GitHub run `success`、artifact upload 成功、queue succeeded 都不能自動等於 step PASS。 +此原則完全保留;現行至少要結合 `work_id`、events、slot/executor、exit code、artifact path/size/SHA256,Drive review 時還需要 remote verification 與 exact Drive revision identity。 + ## 5. Case 0004 套用後的主鏈 -至少固定: +以下是歷史規劃骨架,實際現行版本以 `case-worklists/0004.json` revision 150 為準: ```text 0004-010 O87 source locator @@ -184,6 +204,8 @@ GitHub run `success`、artifact upload 成功、queue succeeded 都不能自動 - 可放進案例 evidence; - 後續可同步進 WorkLedger / ProjectKnowledge,但不讓多份資料互相爭 authority。 +> **2026-08-20 更正**:`.openworker/` 路徑與 OpenWorker authority 只保留為歷史狀態資料。新 durable execution/state authority 應歸 DirectWork;舊 workspace state 可作 migration/provenance evidence。 + ## 7. 驗收 P0 必須證明: @@ -191,18 +213,18 @@ P0 必須證明: 1. 可建立 deterministic worklist; 2. duplicate step id fail closed; 3. dependency cycle fail closed; -4. 只有唯一 READY next step; +4. READY set 可被 deterministic 計算; 5. 未完成 dependency 不可 dispatch; 6. action 不在 allowlist 不可 dispatch; 7. repair step 必須有 parent; 8. repair PASS 後回到 parent step; 9. 未有 acceptance evidence 不可標 PASSED; 10. JSON round-trip 後狀態一致; -11. Case 0004 先導入此 worklist,再繼續 consequential REAL work。 +11. 對可並行 READY works,DirectWork 能建立多個 durable work 並提供真實 slot/executor 證據。 ## 8. 架構邊界 -`CaseWorklist` 不取代: +歷史 `CaseWorklist` 不取代: - AI-Engineering-OS Job lifecycle; - WorkLedger; @@ -210,6 +232,8 @@ P0 必須證明: - case manual; - GitHub Actions scheduler。 -它只負責一件事: +> **2026-08-20 CURRENT**:GitHub Actions scheduler 不再屬於 business control plane;go-tool 是 query/guidance layer;DirectWork 才是 current orchestration / durable execution authority。 + +目前它的現行責任應理解為: -**控制 OpenWorker 做案例時的工作順序,讓每一次動作都能回答「這是不是目前 worklist 唯一允許的下一步?」** +**Case worklist 描述依賴、允許能力、acceptance 與 repair 關係;DirectWork 依這個 contract 建立與執行 durable works,讓每一步都能回答「這是不是目前允許執行的 READY work,以及證據是否足夠」。**