From a516d3f81f811e20b270f5fd0a1026471cffb4e9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 5 Jun 2026 10:59:30 +0800 Subject: [PATCH] =?UTF-8?q?docs(security):=20=E8=A3=9C=20S4.9=20owner=20re?= =?UTF-8?q?sponse=20intake=20form=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/LOGBOOK.md | 26 +++ .../S4-9-OWNER-RESPONSE-INTAKE-FORM.md | 165 ++++++++++++++++++ ...026-06-04-iwooos-security-governance-p0.md | 20 ++- 3 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 docs/security/S4-9-OWNER-RESPONSE-INTAKE-FORM.md diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 1179a3527..b8b34d1bb 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,29 @@ +## 2026-06-05|S4.9 Owner Response Intake Form + +**背景**:接續 S4.9 canonical owner response envelope,本段把六欄封套轉成 owner 可直接填寫的五題 intake form。平行 AwoooP Session 正在推 `P1-002 Gitea 工作流程與 runner 健康合約盤點`,本視窗避開 workflow / runner snapshot / API / UI 實作檔,只做 docs-only 規範,不送 request、不收 owner response、不改 Gitea / GitHub / refs / workflow / secret / runner / runtime。 + +**本輪完成**: +- 新增 `docs/security/S4-9-OWNER-RESPONSE-INTAKE-FORM.md`:固定五題可填表、六欄填寫規則、reviewer 收件欄、outcome lanes 與驗收前狀態。 +- 五題分別為 public-only / local Gitea gap、org / user endpoint identity、internal 110 adjacent scope、repo owner / canonical scope、legacy / inaccessible disposition。 +- 六欄維持 canonical envelope:`owner_role_or_team`、`decision`、`decision_reason`、`affected_scope`、`redacted_evidence_refs`、`followup_owner`。 +- Reviewer 只能做完整性、脫敏、補證、隔離、拒收與 validation readiness 分類,不得改寫 owner 原意,也不得轉成執行批准。 +- 更新 `docs/workplans/2026-06-04-iwooos-security-governance-p0.md`:同步最新 `gitea/main=37c0e171`、P1-001 正式基準、P1-002 平行 Session 邊界、P0-2e 完成度與規範分析。 + +**完成度更新**: +- S4.9 owner response intake form:`100%`。 +- S4.9 owner response gate:仍 `0%`;request / received / accepted / rejected / owner response count 全部維持 `0`。 +- IwoooS 整體:維持 `64%`;active runtime gate 維持 `0`。 +- AI Agent automation backlog 正式基準:維持 P1-001 後 `74%`、done `17/23`;下一步 `P1-002` 由另一個 AwoooP Session 推進。 + +**驗證預計 / 邊界**: +- 必跑:`git diff --check`、`source-control-owner-response-guard.py`、`security-mirror-progress-guard.py` 與高風險授權誤寫掃描。 +- 本段是純文件規範,不改前端、不改 API、不新增 deploy;不需要新的 production desktop / mobile smoke。 +- 不建立 repo、不同步 refs、不改 workflow、不收 secret value、不啟用 runner、不做 Kali scan、不 SSH、不開 runtime action button、不切 GitHub primary。 + +**下一步**: +- Owner 依表單填五題並提供脫敏 evidence refs;合格前只允許 waiting、補證、隔離、拒收或 reviewer validation readiness,不得調高 gate。 +- 推送後同步另一個 AwoooP Session,提醒它提交 P1-002 前先 fetch / fast-forward 到最新 `gitea/main`,避免 LOGBOOK / workplan 衝突。 + ## 2026-06-05|P1-001 執行面只讀矩陣正式上線 **背景**:接續同日 P1-001 本地完成,本段收斂正式環境推版與 production smoke。此正式上線只代表 committed runtime surface snapshot、只讀 API 與治理頁可見,不代表 live cluster 查詢、Secret payload 讀取、runtime execution、rollout / restart / scale / delete、active scan 或 production routing 已批准。 diff --git a/docs/security/S4-9-OWNER-RESPONSE-INTAKE-FORM.md b/docs/security/S4-9-OWNER-RESPONSE-INTAKE-FORM.md new file mode 100644 index 000000000..ecbbe91ef --- /dev/null +++ b/docs/security/S4-9-OWNER-RESPONSE-INTAKE-FORM.md @@ -0,0 +1,165 @@ +# S4.9 Owner Response Intake Form + +| 項目 | 內容 | +|------|------| +| 日期 | 2026-06-05 | +| 基準 | `gitea/main=37c0e171 docs(governance): 對齊 P1-001 最新正式 deploy marker [skip ci]` | +| 對應規範 | `docs/security/S4-9-CANONICAL-OWNER-RESPONSE-ENVELOPE.md` | +| 對應收件包 | `docs/security/GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE.md` | +| 模式 | owner response intake form only | +| 不可誤讀 | 本表單不是 request sent、不是 response received、不是 response accepted、不是 GitHub primary / repo / refs / workflow / secret / runner / runtime 授權 | + +## 1. 使用邊界 + +本表單只用來讓 owner 依 S4.9 五題提供脫敏 metadata。填表前、填表中、填表後都不得把它解讀成 source-control mutation 或 runtime execution approval。 + +允許內容: + +- owner role / team +- decision +- decision reason +- affected scope +- redacted evidence refs +- followup owner + +禁止內容: + +- token、secret、private key、cookie、session、authorization header、runner token、webhook secret +- DB dump、repo archive、git object pack、裸 repo tarball、private URL credential +- repo create、visibility change、refs sync、delete refs、force push、workflow 修改、runner 啟用 +- Kali scan、`/execute`、SSH 修改主機、host update、runtime restart / rollout / scale / delete + +## 2. 填寫規則 + +| 欄位 | 必填 | 填寫方式 | +|------|------|----------| +| `owner_role_or_team` | 是 | 填角色或團隊,不填私人帳號、密碼、token 或私人聯絡資訊 | +| `decision` | 是 | 只能填 `confirm`、`defer`、`reject`、`request_more_evidence` | +| `decision_reason` | 是 | 用短句說明判斷理由;不可貼 raw log、raw API body、未脫敏截圖 | +| `affected_scope` | 是 | 寫 repo 群、namespace、endpoint、host scope、legacy disposition 或 canonical owner 範圍 | +| `redacted_evidence_refs` | 是 | 只填文件路徑、snapshot id、ticket id、hash、脫敏 metadata pointer 或 quarantine pointer | +| `followup_owner` | 是 | 填後續補證、審查或決策負責角色 / 團隊 | + +## 3. Owner 填寫表 + +### 3.1 `response-public-only-vs-local-gitea-gap` + +| 欄位 | 請填寫 | +|------|--------| +| `owner_role_or_team` | | +| `decision` | | +| `decision_reason` | | +| `affected_scope` | | +| `redacted_evidence_refs` | | +| `followup_owner` | | + +提示:請判定 `wooo/clawbot-v5`、`wooo/wooo-aiops` 是否屬本輪 inventory / migration scope。不得附帶 repo create、refs sync 或 token value。 + +### 3.2 `response-org-user-endpoint-identity` + +| 欄位 | 請填寫 | +|------|--------| +| `owner_role_or_team` | | +| `decision` | | +| `decision_reason` | | +| `affected_scope` | | +| `redacted_evidence_refs` | | +| `followup_owner` | | + +提示:請判定 `wooo` 應以 user、org 或兩者盤點,並提供 canonical endpoint 的脫敏 evidence refs。不得要求 write / admin token。 + +### 3.3 `response-internal-110-adjacent-scope` + +| 欄位 | 請填寫 | +|------|--------| +| `owner_role_or_team` | | +| `decision` | | +| `decision_reason` | | +| `affected_scope` | | +| `redacted_evidence_refs` | | +| `followup_owner` | | + +提示:請逐項判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入本輪 scope。不得夾帶 fetch / push / delete refs 要求。 + +### 3.4 `response-repo-owner-canonical-scope` + +| 欄位 | 請填寫 | +|------|--------| +| `owner_role_or_team` | | +| `decision` | | +| `decision_reason` | | +| `affected_scope` | | +| `redacted_evidence_refs` | | +| `followup_owner` | | + +提示:請指定 in-scope repo 的 owner、canonical source、GitHub target candidate 與 visibility review owner。GitHub target candidate 不等於 repo creation approval。 + +### 3.5 `response-legacy-or-inaccessible-disposition` + +| 欄位 | 請填寫 | +|------|--------| +| `owner_role_or_team` | | +| `decision` | | +| `decision_reason` | | +| `affected_scope` | | +| `redacted_evidence_refs` | | +| `followup_owner` | | + +提示:請留下 legacy / inaccessible / external repo 的 disposition、理由與後續 owner。不得把 disposition 回覆解讀為 archive / delete / disable approval。 + +## 4. Reviewer 收件欄 + +Reviewer 只能填分類結果,不得改寫 owner 原意,也不得把表單變成執行批准。 + +| 檢查 | 結果 | 備註 | +|------|------|------| +| 五題是否全部填寫 | | | +| 六欄 canonical envelope 是否完整 | | | +| decision 是否只使用允許值 | | | +| affected scope 是否清楚 | | | +| redacted evidence refs 是否只含脫敏參照 | | | +| 是否含疑似 sensitive payload | | 疑似即送 quarantine,不渲染 raw payload | +| 是否夾帶執行要求 | | 夾帶即 hard reject 或切獨立人工批准 | +| 是否需要補證 | | | +| 是否可進 reviewer validation | | 仍非 accepted | + +## 5. 可用 outcome lane + +| Outcome | 使用時機 | Gate 影響 | +|---------|----------|-----------| +| `keep_waiting_owner_response` | 表單未回、只收到空白表、只收到口頭同意 | received / accepted 維持 0 | +| `request_more_evidence` | 欄位缺漏、scope 不清、evidence refs 不足 | 不增加 accepted | +| `quarantine_sensitive_payload` | 疑似含 token、secret、private key、cookie、session、未脫敏截圖、private URL credential | 不保存 raw payload | +| `reject_execution_request` | 夾帶 repo / refs / workflow / secret / runner / scan / host / runtime 執行要求 | 不建立 action button、不進 runtime gate | +| `ready_for_reviewer_validation` | 五題完整、證據已脫敏、無執行要求 | 只進 reviewer checklist,仍非 accepted | + +## 6. 驗收前狀態 + +```text +request_sent=false +request_sent_count=0 +received_response_count=0 +accepted_response_count=0 +rejected_response_count=0 +owner_response_received_count=0 +owner_response_accepted_count=0 +redacted_payload_ingested=false +runtime_execution_authorized=false +action_buttons_allowed=false +repo_creation_authorized=false +refs_sync_authorized=false +workflow_modification_authorized=false +github_primary_switch_authorized=false +host_update_authorized=false +active_scan_authorized=false +secret_value_collection_authorized=false +``` + +## 7. 本輪完成度 + +| 工作 | 完成度 | 說明 | +|------|--------|------| +| S4.9 owner response intake form | 100% | 五題表單、六欄填寫規則、reviewer 收件欄與 outcome lanes 已固定 | +| S4.9 owner response gate | 0% | 尚未送件、尚未收到 owner response、尚未 accepted | +| 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 40904d950..c5875eddc 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 | `/private/tmp/awoooi-p1-106-offsite-escrow-readiness-20260605` | | 本次分支 | `codex/p1-305-velero-minio-freshness` | -| 最新觀察到的 `gitea/main` | `b615bde5 docs(security): 補 S4.9 owner response 缺口稽核 [skip ci]` | +| 最新觀察到的 `gitea/main` | `37c0e171 docs(governance): 對齊 P1-001 最新正式 deploy marker [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` | @@ -18,8 +18,10 @@ | 最新 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` | +| 最新 AI Agent automation P1-001 基準 | code `de3007b7`、stability fix `fd33591c`、deploy marker `8caba233`、LOGBOOK / marker 對齊 `37c0e171`;runtime surface `22`、Secret surface `4`、live gaps `6`、backlog `74%`、done `17/23`、下一步 `P1-002` | | 最新 S4.9 canonical owner response envelope 基準 | `docs/security/S4-9-CANONICAL-OWNER-RESPONSE-ENVELOPE.md`;六欄信封、欄位 alias、五題投影、quarantine-first 與 reviewer checklist 已固定;owner response gate 仍 `0%` | -| 目前平行 Session | AwoooP thread `019e9154-7d5e-7b72-85be-c9d97e43ecc9` 正在推 `P1-001 runtime surface inventory`;本視窗避免修改同一批 runtime surface schema / API / UI 檔 | +| 最新 S4.9 owner response intake form 基準 | `docs/security/S4-9-OWNER-RESPONSE-INTAKE-FORM.md`;五題可填表、六欄填寫規則、reviewer 收件欄與 outcome lanes 已固定;owner response gate 仍 `0%` | +| 目前平行 Session | AwoooP thread `019e9154-7d5e-7b72-85be-c9d97e43ecc9` 正在推 `P1-002 Gitea 工作流程與 runner 健康合約盤點`;本視窗避免修改同一批 workflow / runner snapshot / 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 授權 | @@ -52,6 +54,7 @@ | 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-2d | S4.9 canonical owner response envelope | 100% | 已新增 `S4-9-CANONICAL-OWNER-RESPONSE-ENVELOPE.md`,固定六欄信封、source template alias mapping、五題投影、quarantine-first 與 reviewer checklist;owner response gate 仍 0% | owner response guard、progress guard、diff check | +| P0-2e | S4.9 owner response intake form | 100% | 已新增 `S4-9-OWNER-RESPONSE-INTAKE-FORM.md`,固定五題可填表、六欄填寫規則、reviewer 收件欄與 outcome lanes;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 | @@ -117,6 +120,17 @@ S4.9 是目前 IwoooS 64% 能往前的第一優先 gate。驗收前所有 count | Quarantine-first | 100% | secret、token、private key、cookie、session、authorization header、未脫敏截圖與執行要求先隔離或拒收 | 不得渲染 raw payload,不得寫入 LOGBOOK | | Reviewer checklist | 100% | 六欄、五題、alias mapping、敏感 payload、執行要求、跨包一致性、count transition、gate boundary 已列入驗收前檢查 | 不得把 AwoooP approval 或 UI 可見當資安批准 | +### 3.6 2026-06-05 Owner Response Intake Form + +本輪把 S4.9 從「canonical envelope 已固定」再推到「owner 可直接照表填五題」。這是表單準備度,不是 request sent、不代表 owner response received,也不代表 accepted;`request_sent=false`、`request_sent_count=0`、received / accepted / rejected 全部仍為 `0`。 + +| 項目 | 完成度 | 目前狀態 | 不可誤讀 | +|------|--------|----------|----------| +| 五題可填表 | 100% | `response-public-only-vs-local-gitea-gap`、`response-org-user-endpoint-identity`、`response-internal-110-adjacent-scope`、`response-repo-owner-canonical-scope`、`response-legacy-or-inaccessible-disposition` 已各有六欄填寫表 | 不代表五題已送出或已回覆 | +| 六欄填寫規則 | 100% | owner role / team、decision、decision reason、affected scope、redacted evidence refs、followup owner 已逐欄說明 | 不代表收件完成 | +| Reviewer 收件欄 | 100% | 五題完整性、decision、scope、redacted refs、sensitive payload、執行要求、補證與 reviewer validation 已列檢查欄 | 不代表 accepted | +| Outcome lanes | 100% | waiting、request_more_evidence、quarantine、reject_execution_request、ready_for_reviewer_validation 已固定 | 不得開 action button 或 runtime gate | + ## 4. 驗證節點規則 | 階段類型 | 必跑驗證 | 是否需要實際開頁 | @@ -203,6 +217,7 @@ P1 只讀重盤階段整體完成度:`70%`。它代表 freshness / inventory / | 需要調整規範 | Rollback ADR owner readiness | 舊 ADR 有 fallback / trigger / window 摘要,但缺可交接的 owner response 封套與逐 repo template | 已補 P1-5 handoff package;received / accepted / approved 仍全部 0 | | 需要調整規範 | AwoooP 同步封包 | P1 要同步 refreshed counts、blocked gates、no-run 狀態,避免另一 Session 以舊 `117` heads / `141` items 繼續推進 | 本總帳與 LOGBOOK 會作為同步封包來源 | | 需要調整規範 | S4.9 欄位同義詞混用 | `affected_repos`、`affected_sources`、`canonical_namespace`、`evidence_refs`、`review_owner` 等欄位容易和使用者要求的六欄封套混用 | 已新增 canonical owner response envelope 規範;source template 可保留細分欄位,但收件 / 顯示 / LOGBOOK 必須映射回六欄 | +| 需要新增規範 | S4.9 owner 可填表單 | 既有 request draft 與 response package 有欄位與規則,但缺一份 owner 可直接逐題填寫、reviewer 可直接分類的六欄 intake form | 已新增 `S4-9-OWNER-RESPONSE-INTAKE-FORM.md`;表單可用但 request sent / received / accepted 仍全部 0 | | 需要新增規範 | 111 / 168 開發主機 scope handoff | 原本只有 observe-only mapping,缺 owner 可審的 scope boundary、credential refusal、rollback owner、validation metrics 與維護窗口欄位 | 已新增 P1-8 handoff、snapshot 與 schema;host execution 仍 `0%` | | 需要調整規範 | 111 Ollama fallback wording | 111 是 ADR-110 local fallback evidence 範圍,不可被誤讀成可直接改 route、重啟 Ollama 或停止模型 | 已在 P1-8 固定 `fallback_route_change_authorized=false` 與 route truth observe-only | | 需要調整規範 | 168 dev origin / repo hygiene wording | repo hygiene 與 local service exposure 容易被誤讀成可掃個人資料、讀未授權目錄或改 CORS / firewall | 已在 P1-8 固定未授權目錄、個人資料、secret derivative、CORS / firewall / service change 全部拒收 / 禁止 | @@ -302,6 +317,7 @@ P1 只讀重盤階段整體完成度:`70%`。它代表 freshness / inventory / | P2-D2 Code Review 候選分類 | code `292cfec9`、deploy marker `4cfe5ff7`;`/zh-TW/code-review` 可見文案搬進 `codeReview` namespace,i18n mirror `9004` leaves;TSX 中文 literal 命中 `0`;四類候選分類、人工批准流程、禁止 runtime 轉派與 `action_buttons_allowed=false` 可見;typecheck、build、owner response guard、security mirror progress guard、diff check 通過;Gitea code-review `2587` 成功、CD `2586` tests / build-and-deploy / post-deploy-checks 全部成功;local / production desktop + mobile 均 `horizontalOverflow=0` | | P2-D2 AwoooP Runs fallback 文案 | code `7f6028c3`、deploy marker `bf016e91`;`/zh-TW/awooop/runs`、Callback Evidence、Source Flow 與 status-chain fallback 可見文案已清理;i18n mirror `9020` leaves;目標殘留詞掃描命中 `0`;typecheck、build、owner response guard、security mirror progress guard、diff check 通過;Gitea code-review `2591` 成功、CD `2590` 成功;local / production desktop + mobile 均 `horizontalOverflow=0`;截圖 `/tmp/awoooi-runs-callback-i18n-prod-desktop-bf016e91.png`、`/tmp/awoooi-runs-callback-i18n-prod-mobile-bf016e91.png` | | S4.9 canonical owner response envelope | 新增 `docs/security/S4-9-CANONICAL-OWNER-RESPONSE-ENVELOPE.md`;六欄信封、alias mapping、五題投影、quarantine-first、reviewer checklist 與驗收前 `0 / false` 邊界已固定;本段純文件,不改前端、不改 API、不新增 deploy;owner response gate 仍 `0%` | +| S4.9 owner response intake form | 新增 `docs/security/S4-9-OWNER-RESPONSE-INTAKE-FORM.md`;五題可填表、六欄填寫規則、reviewer 收件欄、outcome lanes 與驗收前 `0 / false` 邊界已固定;本段純文件,不改前端、不改 API、不新增 deploy;owner response gate 仍 `0%` | 本輪驗證後仍維持: