# 資安鏡像隔離契約

| 項目 | 內容 |
|------|------|
| 日期 | 2026-05-13 |
| 狀態 | 草案 |
| Schema | `docs/schemas/security_mirror_quarantine_v1.schema.json` |
| Snapshot | `docs/security/security-mirror-quarantine.snapshot.json` |
| 模式 | `mirror_only` |
| runtime 執行授權 | `false` |

## 0. 核心結論

`security_mirror_quarantine_v1` 定義 AwoooP 在 mirror-only 資安資料驗收失敗時的隔離與回報方式。

它只處理「鏡像資料本身」的品質問題，不阻擋產品、不阻擋部署、不啟動修復動作。

## 1. 隔離 Lanes

| Lane | 觸發來源 | 初期處理 |
|------|----------|----------|
| `contract_count_mismatch` | `CONTRACT_COUNT_MATCH` | 隔離該批 payload，要求重新產生一致 snapshot |
| `missing_event_envelope` | `EVENT_ENVELOPE_REQUIRED` | 拒收未帶不可執行信封的 payload |
| `route_coverage_gap` | `ROUTE_GROUP_COVERAGE` | 隔離未知或未路由 contract，要求補 route |
| `redaction_failed` | `REDACTION_ONLY` | 拒收含 raw sensitive value 的 payload |
| `schema_or_json_invalid` | `SCHEMA_JSON_PARSE` | 隔離無法 parse 或 schema 不合格的 snapshot |

## 2. AwoooP 可做

1. 顯示隔離原因。
2. 顯示 owner、recovery request 與 retry gate。
3. 將隔離 metadata 寫入 Audit evidence。
4. 等新的 snapshot commit 後重新驗收。
5. 對非 runtime 風險保留 observe / warn。
6. 將隔離狀態提供給 `security_mirror_dry_run_v1` dry-run 報告與 `security_mirror_status_rollup_v1` 狀態彙整。

## 3. AwoooP 不可做

1. 不自動重試同一份失敗 payload。
2. 不猜測缺漏 contract 或 route。
3. 不把 quarantine lane 轉成 runtime blocker。
4. 不把 quarantine lane 轉成 execution queue。
5. 不保存 raw secret、token、cookie、private key 或 exploit payload。
6. 不啟動 scan、不呼叫 Kali `/execute`、不建立 repo、不 sync refs、不切 GitHub primary。

## 4. Retry 原則

重試必須等新的 snapshot commit。

同一份失敗 payload 不自動 retry；這是為了避免 AwoooP 在資料不完整或未脫敏時反覆吃進錯誤 evidence，也避免把框架期驗收問題升級成 runtime 事故。
