docs(security): add IwoooS S4.9 dispatch preflight [skip ci]

This commit is contained in:
Your Name
2026-06-04 19:08:10 +08:00
parent b61ee9b088
commit 6a85619b99
4 changed files with 209 additions and 16 deletions

View File

@@ -2,8 +2,8 @@
| 項目 | 內容 |
|------|------|
| 日期 | 2026-06-01 |
| 狀態 | 草稿已整理,尚未送出 |
| 日期 | 2026-06-04 |
| 狀態 | 草稿與送件前交接包已整理,尚未送出 |
| 對應階段 | S4.9 |
| 對應收件包 | `docs/security/GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE.md` |
| 快照 | `docs/security/gitea-inventory-owner-attestation-request-draft.snapshot.json` |
@@ -60,3 +60,50 @@
| runtime gate opened | false |
| action buttons allowed | false |
## 6. 2026-06-04 送件前交接包
本段把五題補件草稿提升成可交接的人工送件封套。它只代表 reviewer / AwoooP operator 可以照表核對送件內容,不代表已送出請求、不代表收件對象已確認、不代表收到 owner response也不代表任何 repo、refs、workflow、secret、GitHub primary、Kali、主機維護或 runtime execution 授權。
| 指標 | 值 |
|------|----|
| dispatch preflight package | ready |
| dispatch preflight completion | 100% |
| dispatch authorized | false |
| request sent | false |
| request sent count | 0 |
| recipients confirmed count | 0 |
| owner response received count | 0 |
| owner response accepted count | 0 |
| runtime gate opened | false |
### 6.1 送件前檢查
| 順序 | 檢查項 | 完成條件 | 目前狀態 |
|------|--------|----------|----------|
| 1 | 同步基線 | 送件前先確認 `gitea/main` 與另一個 AwoooP Session 最新 commit不使用舊 refs / 舊 deploy marker | 已定義,未送件 |
| 2 | 題目版本 | 五題 template id、必填欄位與收件包版本需一致 | 已定義,未送件 |
| 3 | 收件角色 | 收件對象只記錄 role / team不收個人敏感資料或憑證 | 已定義,未送件 |
| 4 | 證據參照 | 僅附 repo 內文件、snapshot、ticket id、hash 或脫敏 metadata ref | 已定義,未送件 |
| 5 | 禁止條款 | 明確標示此包不是 approval、不是 execution、不是 source-control mutation | 已定義,未送件 |
| 6 | 稽核紀錄 | 只有實際送件後才可記錄 request shown metadata不得預填已送出 | 已定義,未送件 |
| 7 | 計數不變 | 無實際送件證據前,`request_sent_count`、received、accepted、rejected 全部維持 0 | 已定義,未送件 |
### 6.2 交接封套欄位
| 欄位 | 內容規則 |
|------|----------|
| `request_id` | 固定對應 S4.9 Gitea owner attestation request不建立新的 runtime action id |
| `stage_id` | 固定 `S4.9` |
| `requested_templates` | 只能引用本文件第 2 節五個 template id |
| `recipient_role_or_team` | 只填 role / team不得填 token、PAT、cookie、session 或私人聯絡資訊 |
| `sender_role_or_team` | 只填送件操作角色;不得把 AwoooP approval 視為資安批准 |
| `requested_response_deadline_or_window` | 可填人工約定窗口;空值不得阻擋 0 / false gate |
| `allowed_response_format` | 只接受本文件第 3 節欄位與脫敏 evidence refs |
| `redacted_evidence_refs` | 僅指向既有文件、snapshot、ticket id、hash 或 quarantine pointer |
| `forbidden_payloads` | secrets、repo archive、DB dump、runner token、deploy key private key、git object pack 全部拒收 |
| `followup_owner` | 只記後續補證 role / team |
| `not_approval` | 必須為 `true` |
### 6.3 送件後不變條件
即使後續有人實際送出此請求,也只能在有可稽核的人工送件 metadata 後,把 `request_sent_count``0` 調整為真實數字;不得同時把 owner response received / accepted / rejected 拉高。收到回覆後仍需經過 S4.9 response preflight、敏感材料隔離、跨包一致性檢查與 reviewer 驗收,才能更新對應 read-only matrix。任何 GitHub primary、repo / refs / workflow / secret、Kali、SSH、主機維護或 runtime gate 都必須另走人工批准與 rollback / post-check。

View File

@@ -1,24 +1,31 @@
{
"schema_version": "gitea_inventory_owner_attestation_request_draft_v1",
"status": "request_draft_ready_not_sent",
"date": "2026-06-01",
"date": "2026-06-04",
"stage_id": "S4.9",
"mode": "owner_request_draft_only",
"runtime_execution_authorized": false,
"source_packet": "docs/security/GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE.md",
"source_snapshot": "docs/security/gitea-inventory-owner-attestation-response.snapshot.json",
"summary": {
"request_draft_package_ready": true,
"request_draft_template_count": 5,
"request_draft_template_ready_count": 5,
"frontstage_package_visible": true,
"frontstage_card_count": 5,
"frontstage_detail_visible": true,
"frontstage_detail_row_count": 5,
"frontstage_required_field_total": 30,
"frontstage_forbidden_action_count": 10,
"request_sent": false,
"request_sent_count": 0,
"summary": {
"request_draft_package_ready": true,
"request_draft_template_count": 5,
"request_draft_template_ready_count": 5,
"frontstage_package_visible": true,
"frontstage_card_count": 5,
"frontstage_detail_visible": true,
"frontstage_detail_row_count": 5,
"frontstage_required_field_total": 30,
"frontstage_forbidden_action_count": 10,
"dispatch_preflight_package_ready": true,
"dispatch_preflight_completion_percent": 100,
"dispatch_preflight_check_count": 7,
"dispatch_packet_field_count": 11,
"dispatch_authorized": false,
"request_dispatch_allowed_without_human_operator": false,
"post_dispatch_count_increment_allowed_without_evidence": false,
"request_sent": false,
"request_sent_count": 0,
"recipients_confirmed_count": 0,
"owner_response_received_count": 0,
"owner_response_accepted_count": 0,
@@ -70,6 +77,97 @@
"required_fields": ["owner_role_or_team", "decision", "decision_reason", "affected_repos", "evidence_refs", "followup_owner"]
}
],
"dispatch_preflight_checks": [
{
"check_id": "dispatch-baseline-sync",
"display_order": 1,
"check": "送件前確認 gitea/main 與另一個 AwoooP Session 最新 commit不使用舊 refs 或舊 deploy marker。",
"current_status": "defined_not_dispatched",
"execution_authorized": false
},
{
"check_id": "dispatch-template-version",
"display_order": 2,
"check": "五題 template id、必填欄位與收件包版本需一致。",
"current_status": "defined_not_dispatched",
"execution_authorized": false
},
{
"check_id": "dispatch-recipient-role-only",
"display_order": 3,
"check": "收件對象只記錄 role / team不收個人敏感資料或憑證。",
"current_status": "defined_not_dispatched",
"execution_authorized": false
},
{
"check_id": "dispatch-redacted-evidence-refs",
"display_order": 4,
"check": "僅附 repo 內文件、snapshot、ticket id、hash 或脫敏 metadata ref。",
"current_status": "defined_not_dispatched",
"execution_authorized": false
},
{
"check_id": "dispatch-forbidden-action-banner",
"display_order": 5,
"check": "明確標示此包不是 approval、不是 execution、不是 source-control mutation。",
"current_status": "defined_not_dispatched",
"execution_authorized": false
},
{
"check_id": "dispatch-audit-metadata-only-after-send",
"display_order": 6,
"check": "只有實際送件後才可記錄 request shown metadata不得預填已送出。",
"current_status": "defined_not_dispatched",
"execution_authorized": false
},
{
"check_id": "dispatch-counts-remain-zero",
"display_order": 7,
"check": "無實際送件證據前request_sent_count、received、accepted、rejected 全部維持 0。",
"current_status": "defined_not_dispatched",
"execution_authorized": false
}
],
"dispatch_packet_template": {
"request_id": "s4_9_gitea_owner_attestation_response_request",
"stage_id": "S4.9",
"requested_templates": [
"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"
],
"recipient_role_or_team_required": true,
"sender_role_or_team_required": true,
"requested_response_deadline_or_window_optional": true,
"allowed_response_format": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_scope",
"redacted_evidence_refs",
"followup_owner"
],
"redacted_evidence_refs_only": true,
"forbidden_payloads": [
"secret_plaintext",
"repo_archive",
"database_dump",
"runner_registration_token",
"deploy_key_private_key",
"git_object_pack"
],
"followup_owner_required": true,
"not_approval": true,
"runtime_execution_authorized": false
},
"post_dispatch_invariants": [
"request_sent_count 只能在有可稽核人工送件 metadata 後調整。",
"送件後不得同步提高 owner_response_received_count、owner_response_accepted_count 或 owner_response_rejected_count。",
"收到回覆後仍需經過 S4.9 response preflight、敏感材料隔離、跨包一致性檢查與 reviewer 驗收。",
"任何 GitHub primary、repo / refs / workflow / secret、Kali、SSH、主機維護或 runtime gate 都必須另走人工批准與 rollback / post-check。"
],
"allowed_outputs": [
"owner role/team metadata",
"decision and decision reason",