docs(security): add IwoooS posture projection contract

This commit is contained in:
Your Name
2026-05-19 15:18:37 +08:00
parent d8917e0d0b
commit d7e99e8ef0
25 changed files with 766 additions and 61 deletions

View File

@@ -0,0 +1,59 @@
# IwoooS 前端資安態勢投影契約
| 項目 | 內容 |
|------|------|
| 日期 | 2026-05-19 |
| 狀態 | 草案 |
| Schema | `docs/schemas/iwooos_posture_projection_v1.schema.json` |
| Snapshot | `docs/security/iwooos-posture-projection.snapshot.json` |
| 模式 | `mirror_only` |
| runtime 執行授權 | `false` |
## 1. 目的
`iwooos_posture_projection_v1` 定義 IwoooS 如何把既有資安網資料投影到前端。
它只允許顯示資安態勢、headline progress、framework / runtime landing、non-blocking lanes、evidence refs 與下一個高層 gate。它不是掃描器、不是修復器、不是 approval gate也不是 GitHub primary cutover 授權。
## 2. 來源
IwoooS 首版只讀取或對齊以下已提交 evidence
| 來源 | 用途 |
|------|------|
| `security_mirror_status_rollup_v1` | 58% headline、36 contracts、0 active runtime gates、下一個高層 gate |
| `security_rollout_policy_v1` | 7 條 low-friction non-blocking lanes |
| `source_control_owner_response_validation_rollup_v1` | owner response 仍為 0、S4.9 下一個收件候選 |
| `kali_integration_status_v1` | Kali 112 observe-only 整合態勢 |
| `/iwooos` 前端路由 | 顯示入口,不提供執行按鈕 |
## 3. 前端可顯示
1. Security Posture / Exposure 入口。
2. 58% headline progress 與框架 / runtime landing 判讀。
3. 36 個主要契約、33 ready、2 partial、1 contract-only、0 blocked。
4. 0 active runtime gates。
5. Exposure、source-control、Kali 112、approval boundary 四個面向。
6. 7 條 non-blocking lanes。
7. evidence refs 與下一個高層 gate。
## 4. 仍禁止
IwoooS 不得提供下列輸出:
1. scan / execute / repair button。
2. repo creation、visibility change、refs sync / delete / force push。
3. workflow / webhook / runner / deploy key / branch protection / repository secret 修改。
4. GitHub primary switch 或 Gitea disable。
5. production deploy 或 runtime enforcement。
6. 把 58% progress、contract count、mirror readiness 或前端可見狀態當成授權。
## 5. 驗證
只讀驗證:
```text
python3 scripts/security/security-mirror-progress-guard.py
```
這個 guard 會確認 IwoooS 投影與 rollup / rollout policy 對齊,且 `runtime_execution_authorized=false``action_buttons_allowed=false``not_authorization=true`