# 資安人工決策紀錄契約

| 項目 | 內容 |
|------|------|
| 日期 | 2026-05-13 |
| 狀態 | 草案 |
| Schema | `docs/schemas/security_approval_decision_record_v1.schema.json` |
| Snapshot | `docs/security/security-approval-decision-record.snapshot.json` |
| 模式 | `decision_record_only` |
| runtime 執行授權 | `false` |

## 0. 核心結論

`security_approval_decision_record_v1` 是 S3.1 的人工決策稽核格式。

它只保存人工決策本身，例如批准範圍、拒絕、延後、要求補 evidence 或維持 blocked。

它不是 runner，也不是授權 token。任何決策紀錄都必須維持 `execution_authorized=false`。

S3.2 的 `security_approval_review_packet_v1` 只負責把待審項目整理成封包。Review packet 不是決策；只有人工審完後，才可把結果寫入本契約。

S3.3 的 `security_approval_state_transition_v1` 只負責把本契約中的決策轉成 next state。State transition 不是 runner，也不會讓 `approve_scope` 直接變成可執行。

S3.4 的 `security_followup_runtime_gate_v1` 只負責顯示未來若要進 runtime gate 時需要的前置 evidence、preflight checks 與 rollback / disable requirement。目前沒有 active runtime gate。

## 1. 目前狀態

| 指標 | 數量 |
|------|------|
| Decision records | 0 |
| Approved scope | 0 |
| Rejected | 0 |
| Deferred | 0 |
| Request more evidence | 0 |
| Keep blocked | 0 |
| Runtime actions authorized | `false` |

## 2. AwoooP 可做

1. 對 `security_approval_gate_v1` 的 gate item 記錄人工決策。
2. 保存 reviewer、時間、evidence refs 與批准範圍。
3. 顯示哪些決策仍需要 follow-up runtime gate。
4. 將決策紀錄寫入 Audit evidence。
5. 將拒絕、延後或補 evidence 的原因顯示給 Operator。
6. 連回原始 `security_approval_review_packet_v1`，讓 Operator 可追溯決策前看到的 evidence 與限制。
7. 依 `security_approval_state_transition_v1` 顯示決策後狀態，例如 `scope_approved_waiting_runtime_gate` 或 `blocked_by_default`。
8. 依 `security_followup_runtime_gate_v1` 顯示後續 runtime gate 準備模板，但仍不執行。

## 3. AwoooP 不可做

1. 不把 decision record 當成執行命令。
2. 不因為 `approve_scope` 就自動執行。
3. 不啟動 scan、credentialed scan 或 Kali `/execute`。
4. 不建立 GitHub repo、不改 visibility、不 sync refs、不切 GitHub primary。
5. 不保存 raw secret、token、cookie、private key、credential value 或 exploit payload。

## 4. 階段定位

S3.1 只是讓人工決策可追溯。

它讓治理面更清楚，但仍然維持低摩擦：沒有 runtime enforcement，沒有自動修復，沒有把 approval queue 接成 runner。
