# 資安人工審查封包契約 | 項目 | 內容 | |------|------| | 日期 | 2026-05-17 | | 狀態 | 草案 | | Schema | `docs/schemas/security_approval_review_packet_v1.schema.json` | | Snapshot | `docs/security/security-approval-review-packet.snapshot.json` | | 模式 | `approval_review_packet_only` | | runtime 執行授權 | `false` | ## 0. 核心結論 `security_approval_review_packet_v1` 是 S3.2 的人工審查封包格式。 它把 `security_approval_queue_v1` 與 `security_approval_gate_v1` 的 8 個審查項目整理成 AwoooP 可以顯示的 review packet,讓 Operator 看得懂「現在要審什麼、由誰審、可以做哪些決策、仍然禁止哪些動作」。 它不是批准結果,也不是執行授權。真正的人工決策仍必須另外寫入 `security_approval_decision_record_v1`,而且每筆紀錄都必須維持 `execution_authorized=false`。 S3.3 開始,決策後的 next state 由 `security_approval_state_transition_v1` 定義。這讓 AwoooP 能顯示 `approve_scope` 後仍在等待 runtime gate,而不是直接執行。 S3.4 開始,等待 runtime gate 時要看哪些前置條件,由 `security_followup_runtime_gate_v1` 顯示。這仍只是準備模板,不會啟用 runtime gate。 ## 1. 目前狀態 | 指標 | 數量 | |------|------| | Review packets | 8 | | Ready for human review | 7 | | Block candidate | 1 | | Decision records created | 0 | | Runtime actions authorized | `false` | | Action buttons allowed | `false` | ## 2. Review Packet 順序 | 順序 | Packet | Review lane | 初期定位 | |------|--------|-------------|----------| | 1 | Redacted finding ingestion | `design_or_draft_review` | 只審是否可設計或建立 draft PR | | 2 | Safe web crawl | `low_noise_scan_scope_review` | 只審低噪音 scope 定義 | | 3 | Gitea owner attestation + read-only inventory | `read_only_inventory_review` | 先依 S4.9 審 S4.7 owner response,再審只讀 token 或 redacted export | | 4 | GitHub target decisions | `design_or_draft_review` | 先審 S4.10 owner response request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks / response 與 S4.12 workflow / secret 名稱 request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks / response,再審 owner / visibility / canonical 草案 | | 5 | Ref truth review | `design_or_draft_review` | 先審 S4.11 request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks / owner response 驗收,再審人工分類與 reconcile 草案 | | 6 | Credentialed scan | `manual_exception_review` | 只審 exception 設計 | | 7 | Kali full-upgrade / reboot | `manual_exception_review` | 只審維護窗口與 rollback 計畫 | | 8 | Kali `/execute` | `blocked_by_default_review` | 預設維持 block candidate | ## 3. AwoooP 可做 1. 顯示 review packet、review order、risk、review lane 與 required reviewers。 2. 顯示 requested decision、decision options、evidence refs 與 still forbidden。 3. 讓人工 reviewer 選擇 approve / reject / defer / request more evidence / keep blocked。 4. 將實際決策另寫成 `security_approval_decision_record_v1`。 5. 依 `security_approval_state_transition_v1` 顯示決策後 next state。 6. 依 `security_followup_runtime_gate_v1` 顯示後續 runtime gate 準備條件。 7. 將 packet 作為 Operator Console / Audit evidence,不新增執行按鈕。 ## 4. AwoooP 不可做 1. 不把 review packet 視為批准。 2. 不把 review packet 視為 runtime authorization。 3. 不因為 packet 存在就啟動 scan、credentialed scan 或 Kali `/execute`。 4. 不建立 GitHub repo、不改 visibility、不 sync refs、不切 GitHub primary。 5. 不保存 raw secret、token、cookie、private key、credential value 或 exploit payload。 ## 5. 階段定位 S3.2 只補上「讓人好審」的封包,不提高資安阻力。 低風險與中風險仍以 observe / warn / draft review 為主;只有不可逆或高風險動作才持續留在 approval gate,且批准後仍必須再過 runtime gate。 2026-05-17 S4.8 追加:Gitea review packet 會顯示 S4.7 的 5 個 owner attestation items、`received_attestation_count=0` 與 `accepted_attestation_count=0`。這讓 reviewer 先判斷 coverage gap 與 scope decision,不會把 read-only inventory approval 誤解成 repo migration 或 GitHub primary approval。 2026-05-17 S4.9 追加,2026-05-18 補 request packet、template status ledger、audit event templates、redaction examples、display sections 與 collection checks:Gitea review packet 會顯示 S4.9 的 1 個 owner response request packet、5 個 template statuses、3 個 audit event templates、5 個 redaction examples、8 個 display sections、6 個 collection checks、5 個 owner response templates、6 個 intake preflight checks、5 個 outcome lanes、`received_response_count=0`、8 個 acceptance checks 與 10 個 rejection rules。reviewer 應先確認 request packet 只要求脫敏回覆,template statuses 仍逐項 waiting,audit event templates 仍為 template-only 且不保存 raw payload,redaction examples 只是填寫範例,display sections 只是只讀 UI 順序,collection checks 沒有把 request sent 誤判成 received / accepted,再看 response 是否可審、需補證、需隔離、需拒收或仍需等待,最後才看 read-only inventory gate;review packet 仍不代表批准,也不授權執行。