Files
awoooi/docs/security/S4-9-CANONICAL-OWNER-RESPONSE-ENVELOPE.md

9.1 KiB
Raw Blame History

S4.9 Canonical Owner Response Envelope 規範

項目 內容
日期 2026-06-15
基準 gitea/main=57df61da docs(iwooos): 記錄 AwoooP 前台脫敏正式驗證 [skip ci]
範圍 S4.9 owner response 收件信封、欄位別名、隔離規則與驗收前狀態邊界
模式 只讀文件規範,不送 request、不收 owner response、不改 API、不改 UI、不改 runtime
不可誤讀 本文件不是 request sent、不是 owner response received、不是 accepted、不是 Gitea / GitHub / refs / workflow / secret / runner / runtime 授權

1. 核心結論

S4.9 收件流程對外只接受一個 canonical owner response envelope。任何 source template、AwoooP handoff、reviewer note 或文件摘要,都可以保留細分欄位,但進入 S4.9 驗收前必須映射回六欄:

  1. owner_role_or_team
  2. decision
  3. decision_reason
  4. affected_scope
  5. redacted_evidence_refs
  6. followup_owner

沒有完成六欄映射前,不得把候選回覆視為 received沒有完成預檢、隔離檢查、跨包一致性與 reviewer checklist 前,不得視為 accepted。

2. Canonical Envelope

欄位 必填 允許格式 缺漏處理 安全邊界
owner_role_or_team 角色、團隊、責任單位;不需要個人敏感資料 request_more_evidence,不增加 received 不收個人帳號密碼、token、session、private email
decision confirmdeferrejectrequest_more_evidence 非允許值 hard_reject 不得包含執行命令或批准 runtime action
decision_reason 一段脫敏摘要;可含 ticket id、文件路徑、hash、短原因 缺漏補件;疑似敏感 payload 先隔離 不渲染 raw secret、token、cookie、authorization header、未脫敏截圖
affected_scope repo 群、endpoint、namespace、host scope、legacy disposition、canonical owner 範圍 缺漏補件 不得把 scope 回覆解讀成 repo 建立、refs sync 或 primary 切換
redacted_evidence_refs 文件路徑、snapshot id、ticket id、hash、脫敏 metadata pointer 缺漏補件;疑似 payload 隔離 不收 secret value、masked token、partial token、private key、session value
followup_owner 後續補證、審查或決策負責角色 / 團隊 缺漏補件 不等於執行批准人;不等於 runtime operator

3. Source Template Alias 映射

Source template 可以保留 domain-specific 欄位,方便 owner 回覆,但 S4.9 validator、AwoooP 顯示與 LOGBOOK 摘要必須使用 canonical 欄位。

Canonical 欄位 可接受 alias 映射規則 不可誤讀
owner_role_or_team owner_roleowner_teamreview_ownerresponsible_teamrollback_owner 合併為負責角色 / 團隊;個人資訊只保留必要角色稱謂 不代表該 owner 已批准切 primary 或執行 rollback
decision owner_decisionscope_decisionvisibility_decisioncanonical_decisiondisposition 只能轉成四個允許值;其他值需補件或拒收 confirm 只代表該題判定,不代表全包 accepted
decision_reason reasondecision_summaryowner_notereview_noterationale 只保留脫敏摘要;含 payload 的段落移入 quarantine metadata不回寫 raw text 不得把長原文、聊天內容或抱怨放進產品文案
affected_scope affected_reposaffected_sourcesaffected_repos_or_sources_or_namespacecanonical_namespacetarget_reposhost_scopelegacy_scope 以人類可讀 scope 摘要呈現;必要時列出 repo / source ids但不觸發任何 git action 不代表可建立 repo、同步 refs、改 visibility、改 workflow
redacted_evidence_refs evidence_refsredacted_refssource_refssnapshot_refsticket_refsmetadata_refs 只接受指標與脫敏 metadata任何 raw payload 先隔離 不收 token value、secret value、hash fragment、authorization header、runner token
followup_owner next_ownerfollowup_teamreviewer_ownerfallback_ownerresolution_owner 映射為後續處理負責角色 / 團隊 不代表 AwoooP approval 或 security approval 已完成

4. 五題 Template 的 Canonical 投影

順序 Template affected_scope 投影 decision 判讀 redacted_evidence_refs 最低要求
1 response-public-only-vs-local-gitea-gap public-only / local Gitea scope、候選 repo、是否納入 inventory confirmdeferrejectrequest_more_evidence public probe snapshot、local inventory ref、owner note id
2 response-org-user-endpoint-identity wooo user / org endpoint、canonical endpoint、blocked endpoint 判讀 同上 endpoint probe summary、HTTP status metadata、owner note id
3 response-internal-110-adjacent-scope 110 adjacent repo / host / namespace 是否 in scope 同上 local repo / host scope snapshot、redacted owner note
4 response-repo-owner-canonical-scope repo owner、canonical source、GitHub target candidate、visibility review owner 同上 refs truth summary、target probe summary、owner note id
5 response-legacy-or-inaccessible-disposition legacy / inaccessible / external repo disposition 與後續 owner 同上 disposition note、archive candidate summary、ticket id

5. 收件狀態分離

S4.9 必須把以下狀態分開,不得連動調高:

狀態 可為 true / 大於 0 的前提 不得連動
request_sent / request_sent_count 有人工送件 audit metadata且送件內容未夾帶執行要求 不得同步調高 received / accepted
received_response_count 收到完整六欄 canonical envelope且敏感 payload 已先隔離 不得同步視為 accepted
accepted_response_count 五題都通過 preflight、quarantine check、cross-packet consistency、reviewer checklist 不得開 runtime gate
rejected_response_count 實際回覆被 hard reject且 rejection reason 已記錄 不得自動要求 repo / host / runtime action
quarantine_response_count 疑似包含敏感 payload、執行要求或未脫敏 evidence 不得渲染 raw payload不得複製到 LOGBOOK

6. Quarantine-first 規則

以下內容一律先隔離不得進入一般文件、LOGBOOK、前端文案或 API response

類別 範例 處理
Secret / credential token、secret、private key、cookie、session、authorization header、runner token、webhook secret、database URL 隔離並記錄類型與長度,不記值
未脫敏 evidence 未遮蔽截圖、raw API response、含 private URL credential 的 log 隔離,只保留 redacted evidence ref
執行要求 建 repo、改 visibility、sync refs、delete refs、force push、改 workflow、啟 runner、Kali scan、/execute、host update hard_reject 或切出獨立人工批准流程
產品文案污染 內部對話、抱怨、Session 指令、聊天式同意 不進產品文案;只保留治理摘要

7. Reviewer Checklist

收件 reviewer 在標記 accepted 前必須逐項確認:

檢查 必須結果
六欄 canonical envelope 全部存在且可讀
五題 response templates 全部有對應回覆或明確補件狀態
Alias mapping 所有 source 欄位已映射回 canonical 欄位
Sensitive payload check raw payload 已隔離LOGBOOK / UI 只保留 redacted refs
Execution request check 沒有 repo / refs / workflow / secret / runner / scan / host / runtime 執行要求
Cross-packet consistency S4.9 / S4.10 / S4.11 / S4.12 口徑一致,沒有互相矛盾的 owner / scope / disposition
Count transition request sent、received、accepted、rejected 只依實際 audit metadata 分段更新
Gate boundary active runtime gate、GitHub primary、Kali / host maintenance、Code Review candidate automation 仍需獨立人工批准

8. 驗收前仍必須維持

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
active_runtime_gate_count=0
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

9. 本輪完成度

工作 完成度 說明
Canonical owner response envelope 100% 六欄信封、alias 映射、五題投影、quarantine-first、reviewer checklist 已文件化
S4.9 owner response gate 0% 尚未送 request、尚未收到 owner response、尚未 accepted
IwoooS 整體 維持 64% 規範完成不代表 runtime readiness 提升
active runtime gate 0 不變