diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 930ca26b3..af80ce23e 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,21 @@ +## 2026-06-05|S4.9 Owner Response Gate 現況缺口稽核 + +**背景**:`P1-001 runtime surface inventory` 已由另一個 AwoooP Session 推進中;本視窗為避免同檔案衝突,改推平行安全的 P0:S4.9 owner response gate 現況缺口稽核。這是 committed snapshot / 文件只讀稽核,不收 owner response、不送 request、不改 Gitea / GitHub、不碰 refs / workflow / secret / runner / runtime。 + +**本輪完成**: +- 新增 `docs/security/S4-9-OWNER-RESPONSE-GATE-CURRENT-GAP-AUDIT.md`:列出 S4.9 已符合、仍不符合、需新增、需調整、五題 owner response 與驗收前必須維持的 `0 / false` 邊界。 +- 更新 `docs/workplans/2026-06-04-iwooos-security-governance-p0.md`:最新 `gitea/main=f1bad81d`、P1-305 / P1-306 正式基準、P1-001 平行 Session 狀態與 P0-2c S4.9 current gap audit。 + +**完成度更新**: +- S4.9 current gap audit:`100%`。 +- S4.9 owner response gate:仍 `0%`;`request_sent=false`、received `0`、accepted `0`、rejected `0`。 +- IwoooS 整體:維持 `64%`;active runtime gate 維持 `0`。 +- 本輪不調高 GitHub primary readiness、不調高 runtime landing、不新增 action button。 + +**下一步**: +- S4.9 真正能往前的下一步仍是 owner 以脫敏 metadata 回覆 5 題:public-only/local gap、org/user endpoint、110 adjacent scope、repo owner/canonical、legacy/inaccessible disposition。 +- `P1-001 runtime surface inventory` 由另一個 AwoooP Session 繼續;本視窗推送後需同步 `gitea/main`,避免 LOGBOOK / workplan 衝突。 + ## 2026-06-05|P1-305 / P1-306 任務批准邊界與進度彙總正式上線 **背景**:接續 P1-106 異地 / Escrow 準備度,本段收斂 AI Agent 自動化盤點的兩個可視化缺口:每個任務的批准邊界與 deterministic 進度百分比。這是 committed snapshot / API / 前台治理頁的只讀顯示,不是 runtime 執行授權、部署授權、owner response 接受或 active gate 提升。 diff --git a/docs/security/S4-9-OWNER-RESPONSE-GATE-CURRENT-GAP-AUDIT.md b/docs/security/S4-9-OWNER-RESPONSE-GATE-CURRENT-GAP-AUDIT.md new file mode 100644 index 000000000..d1e8636f0 --- /dev/null +++ b/docs/security/S4-9-OWNER-RESPONSE-GATE-CURRENT-GAP-AUDIT.md @@ -0,0 +1,91 @@ +# S4.9 Owner Response Gate 現況缺口稽核 + +| 項目 | 內容 | +|------|------| +| 日期 | 2026-06-05 | +| 基準 | `gitea/main=f1bad81d docs(logbook): 記錄 P1-305 P1-306 正式驗證 [skip ci]` | +| 範圍 | S4.9 Gitea owner attestation response gate 與 S4.13 owner response validation rollup | +| 模式 | 只讀 committed snapshot / 文件稽核 | +| 不可誤讀 | 不是 request sent、不是 owner response received、不是 accepted、不是 repo / refs / workflow / secret / runtime 授權 | + +## 1. 核心結論 + +S4.9 的基礎規範已存在,且已能被 `source-control-owner-response-guard.py` 檢查:1 個 request packet、5 個 response templates、6 個 intake preflight checks、5 個 intake outcome lanes、8 個 acceptance checks、10 個 rejection rules 都已固定。 + +真正尚未完成的是「owner 回覆本身」。目前 `request_sent=false`、`received=0`、`accepted=0`、`rejected=0`,所以 S4.9 owner response gate 仍是 `0%`。任何 UI、request template、AwoooP 顯示、reviewer checklist 或 LOGBOOK 文字都不得把這個 gate 拉高。 + +## 2. 已符合目前要求 + +| 類別 | 現況 | 依據 | +|------|------|------| +| 五題 response templates | 已固定 5 題:public-only/local gap、org/user endpoint、110 adjacent scope、repo owner/canonical、legacy/inaccessible disposition | `gitea-inventory-owner-attestation-response.snapshot.json` | +| 必填 owner 欄位 | 已要求 owner role/team、decision、decision reason、affected scope、evidence refs、followup owner | `preflight-required-owner-fields` | +| 脫敏 evidence refs | 已要求只收 repo 文件、snapshot、ticket / hash / metadata pointer | `preflight-redacted-evidence-only` | +| 執行要求拒收 | 已拒收 repo write、repo create、visibility change、refs sync/delete/force-push、workflow/secret/runner、scan、runtime action | `preflight-no-execution-request` | +| 五題齊備才可 accepted | 已要求 5 個 response templates 都收到可驗收回覆,部分回覆只能 waiting 或 request_more_evidence | `preflight-all-five-items-before-accepted` | +| 四包收件順序 | S4.9 -> S4.10 -> S4.11 -> S4.12 已固定 | `source-control-owner-response-validation-rollup.snapshot.json` | +| 安全旗標 | token、secret、repo write、refs sync、GitHub primary、action button 全部 `false` | owner response guard | + +## 3. 目前仍不符合最新推進要求 + +| 缺口 | 影響 | 下一步 | +|------|------|--------| +| P0 主控總帳的同步基線仍停在較舊 commit | 新 Session 可能誤用舊 `gitea/main` 或舊 P1 狀態 | 將總帳更新到 `f1bad81d`,並標註 P1-001 由另一 Session 進行中 | +| S4.9 gate 仍只有 request-ready,沒有 owner response | IwoooS 64% 不能因規範存在而往前解鎖 | 維持 `0%`,只準備收件缺口,不調高 progress | +| request packet 的欄位名稱存在同義詞 | `affected_repos`、`affected_sources`、`affected_repos_or_sources_or_namespace`、`evidence_refs` 與使用者要求的 `affected_scope`、`redacted_evidence_refs` 容易在 UI / handoff 中混用 | 後續顯示層以六欄 canonical envelope 呈現;source templates 可保留細分欄位 | +| 沒有實際 dispatch / received audit event | 目前 audit event templates 仍是 template-only,不能證明已送件或已收件 | 等人工送件後才增加 request_sent metadata;未送前所有 count 維持 0 | +| 尚未有 owner response reviewer outcome | reviewer checklist 存在,但沒有任何可分類 response | 等脫敏 metadata 進來後,才能進補件、隔離、拒收、只讀更新候選 | +| 部分文件仍可能把 P1-305 / P1-306 或 P1-001 當下一步文字混用 | 平行 Session 正在推 P1-001,S4.9 仍是獨立 P0 gate | 後續 LOGBOOK / workplan 每次都標註平行 Session 與最新基線 | + +## 4. 需要新增或強化的規範 + +| 規範 | 內容 | 狀態 | +|------|------|------| +| Canonical owner response envelope | 對外與 AwoooP 顯示固定六欄:`owner_role_or_team`、`decision`、`decision_reason`、`affected_scope`、`redacted_evidence_refs`、`followup_owner` | 需在下一個 UI / handoff 切片統一 | +| Source template alias 規則 | 允許 source template 保留 `affected_repos`、`affected_sources`、`canonical_namespace` 等細分欄位,但必須映射回 `affected_scope` | 需新增顯示層 mapping | +| Request sent 與 received 分離 | request packet 顯示、人工送件、owner response received、accepted 必須是四個獨立狀態 | 已有規範,需在後續 audit metadata 實作時保持 | +| Quarantine-first 收件 | 疑似 token、secret、private key、cookie、session、authorization header、private URL credential、未脫敏截圖先隔離,不渲染 raw payload | 已有規範,需維持 | +| 平行 Session 衝突規則 | 任一 Session 推送前必須 fetch / fast-forward 到最新 `gitea/main`,並同步 commit / run / production evidence / gate 0 false | 已執行,需持續 | + +## 5. 下一個 owner response 需要補的五題 + +| 順序 | Template | Owner 必須回覆 | 不得夾帶 | +|------|----------|----------------|----------| +| 1 | `response-public-only-vs-local-gitea-gap` | `wooo/clawbot-v5`、`wooo/wooo-aiops` 是否屬本輪 inventory / migration scope | repo 建立、refs sync、token value | +| 2 | `response-org-user-endpoint-identity` | `wooo` 應以 user、org 或兩者盤點,canonical endpoint 是什麼 | write/admin token、未脫敏 API response | +| 3 | `response-internal-110-adjacent-scope` | `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否 in scope | fetch / push / delete refs | +| 4 | `response-repo-owner-canonical-scope` | in-scope repo 的 owner、canonical source、GitHub target candidate、visibility review owner | repo visibility change、GitHub repo creation | +| 5 | `response-legacy-or-inaccessible-disposition` | legacy / inaccessible / external repo 的 disposition、理由與後續 owner | archive/delete/disable Gitea repo | + +## 6. 驗收前必須維持 0 / false + +| 欄位 | 必須維持 | +|------|----------| +| `request_sent` / `request_sent_count` | `false / 0`,直到有人工送件 audit metadata | +| `received_response_count` | `0`,直到收到完整且脫敏的 owner response metadata | +| `accepted_response_count` | `0`,直到 5 題皆通過 preflight、reviewer checklist 與 cross-packet consistency | +| `rejected_response_count` | `0`,直到實際有不合格 response 被分類 | +| `token_value_collection_allowed` / `secret_value_collection_allowed` | `false` | +| `repo_write_allowed` / `refs_sync_allowed` / `force_push_authorized` | `false` | +| `workflow_modification_authorized` / `runner_enablement_authorized` | `false` | +| `github_primary_switch_authorized` | `false` | +| `runtime_execution_authorized` / `action_buttons_allowed` | `false` | + +## 7. 驗證規則 + +| 情境 | 必跑 | +|------|------| +| 更新本文件 / 總帳 | `git diff --check`、`python3 scripts/security/source-control-owner-response-guard.py --root .` | +| 更新 IwoooS projection 或 security mirror snapshot | 加跑 `python3 scripts/security/security-mirror-progress-guard.py --root .` | +| 改前端顯示 | i18n parse、typecheck、build、desktop / mobile Browser smoke | +| 宣稱 production 狀態 | 必須實際開 production 頁面,確認 `horizontalOverflow=0`、無 action button、gate 仍 `0 / false` | + +## 8. 本輪完成度 + +| 工作 | 完成度 | 說明 | +|------|--------|------| +| S4.9 現況缺口稽核 | 100% | 已列出已符合、仍不符合、需新增、需調整、五題回覆與 0 / false 邊界 | +| S4.9 owner response gate | 0% | 沒有收到 owner response,不得調高 | +| IwoooS 整體 | 維持 64% | 只讀稽核不改 runtime readiness | +| active runtime gate | 0 | 不變 | + diff --git a/docs/workplans/2026-06-04-iwooos-security-governance-p0.md b/docs/workplans/2026-06-04-iwooos-security-governance-p0.md index 1e891283e..20ce2d4c6 100644 --- a/docs/workplans/2026-06-04-iwooos-security-governance-p0.md +++ b/docs/workplans/2026-06-04-iwooos-security-governance-p0.md @@ -9,7 +9,7 @@ | 工作視窗 | IwoooS / AWOOOI 資安治理 P0 | | 本次乾淨 worktree | `/Users/ogt/awoooi` | | 本次分支 | `codex/iwooos-i18n-d2-visible-literals-20260605` | -| 最新觀察到的 `gitea/main` | `c2e327a6 docs(logbook): 補充 P1-106 最新正式驗證 [skip ci]` | +| 最新觀察到的 `gitea/main` | `f1bad81d docs(logbook): 記錄 P1-305 P1-306 正式驗證 [skip ci]` | | 最新 P2-D0 繁中文案基準 | code `cd2275a2`、deploy marker `1920bd08`、code-review `2565`、CD `2564` | | 最新 P2-D1 本地掃描基準 | `VISIBLE_LITERAL_TARGET_SCAN_OK files=221`;全站 TS / TSX 中文 literal 盤點 `35` 檔 / `752` 行;註解語氣 backlog `32` 筆 | | 最新 P2-D1 正式部署基準 | code `f9bf8a28`、deploy marker `879b0a36`、CD `2578`、code-review `2579` | @@ -17,6 +17,8 @@ | 最新 P2-D2 AIOps 範例資料基準 | code `d5ce17c7`、deploy marker `305b8175`;AIOps sample/mock 字串、GenUI 測試語氣與 `sampleBadge` 已正式驗證 | | 最新 P2-D2 Code Review 候選分類基準 | code `292cfec9`、deploy marker `4cfe5ff7`、CD `2586`、code-review `2587`;Code Review route 可見文案已搬到 `codeReview` i18n namespace,四類候選分類與人工批准流程已正式驗證 | | 最新 P2-D2 AwoooP Runs fallback 文案基準 | code `7f6028c3`、deploy marker `bf016e91`、CD `2590`、code-review `2591`;Runs / Callback / Source Flow fallback 文案已正式驗證 | +| 最新 AI Agent automation P1-305 / P1-306 基準 | code `4f0787f8`、deploy marker `af3a9d48`、CD `2592`、code-review `2593`;任務批准邊界與進度彙總已正式驗證;backlog `70%`、done `16/23`、下一步 `P1-001` | +| 目前平行 Session | AwoooP thread `019e9154-7d5e-7b72-85be-c9d97e43ecc9` 正在推 `P1-001 runtime surface inventory`;本視窗避免修改同一批 runtime surface schema / API / UI 檔 | | 前一個正式 IwoooS 候選基準 | code `7b8fc093`、deploy marker `45c63488`、LOGBOOK `02cadee6` | | 最新導航 IA 基準 | code `973fc7a4`、LOGBOOK `2555c811`、deploy marker `0260ec89` | | 禁止事項 | 不 force push、不 destructive git、不 SSH 修改主機、不 active scan、不收 secrets 明文、不把 AwoooP approval 當資安批准、不把 UI 可見當 runtime 授權 | @@ -44,9 +46,10 @@ |------|------|--------|--------|----------| | P0-0 | 跨 Session 同步與乾淨 worktree | 100% | 每次改檔前重新 `git fetch gitea` 與檢查 `gitea/main` | `git status --short --branch`、`git log --oneline -8 gitea/main` | | P0-1 | IwoooS 狀態總帳 | 100% | 本文件已落地;後續每階段只更新同一總帳與 LOGBOOK | Markdown 檢查、guard、不調高 0 / false gate | -| P0-2 | S4.9 owner response gate | 100% | 欄位、預檢、收件、驗收、拒收與補件條件已固定成人類可讀規範 | `source-control-owner-response-guard.py --root .` 通過 | +| P0-2 | S4.9 owner response 收件規範 | 100% | 欄位、預檢、收件、驗收、拒收與補件條件已固定成人類可讀規範;真正 owner response gate 仍維持 0% | `source-control-owner-response-guard.py --root .` 通過 | | P0-2a | S4.9 current intake readiness | 100% | 五題缺口、合格封套、結果分流與只讀更新邊界已補進收件包與 S4.13 rollup;owner response gate 仍 0% | JSON parse、owner response guard、progress guard | | P0-2b | S4.9 request dispatch preflight 交接包 | 100% | 送件前檢查、交接封套欄位與送後不變條件已固定;dispatch authorized 仍 false | JSON parse、owner response guard、progress guard | +| P0-2c | S4.9 current gap audit | 100% | 已新增 `S4-9-OWNER-RESPONSE-GATE-CURRENT-GAP-AUDIT.md`,列出已符合、仍不符合、需新增、需調整、五題回覆與 0 / false 邊界;owner response gate 仍 0% | owner response guard、progress guard、diff check | | P0-3 | AwoooP 同步封包 | 100% | 已送至 AwoooP 平行工作 thread `019e9154-7d5e-7b72-85be-c9d97e43ecc9`;後續仍需每次推版前重新 fetch / fast-forward | 本文件、thread send readback、mirror checklist readback | | P0-4 | production live sanity 節點 | 100% | desktop / mobile / 展開區塊 / overflow / action href 檢查已完成 | Playwright production sanity 通過 | | P0-5 | LOGBOOK 與完成度更新 | 100% | D2 comments-only、D2 AIOps sample、D2 Code Review 候選分類與 D2 AwoooP Runs fallback 皆已回填;可見 / bundle 變更皆已補 local / production desktop + mobile smoke | `docs/LOGBOOK.md` readback |