Files
awoooi/docs/security/SECURITY-MIRROR-STATUS-ROLLUP.md

18 KiB
Raw Blame History

資安鏡像狀態彙整契約

項目 內容
日期 2026-05-17
狀態 草案
Schema docs/schemas/security_mirror_status_rollup_v1.schema.json
Snapshot docs/security/security-mirror-status-rollup.snapshot.json
模式 mirror_only
runtime 執行授權 false

0. 核心結論

security_mirror_status_rollup_v1 是 AwoooP 與 Security Supply Chain Session 的共同狀態入口。

它只彙整目前框架、鏡像契約、approval queue 與下一個安全 gate不授權任何 scan、execute、repo、refs、deploy 或 secret 類動作。

1. 目前狀態

類型 狀態
整體進度估算 約 58%;框架 / 治理 / 文件 / schema / read-only evidence 約 80-85%runtime ingestion / owner response / GitHub primary / AwoooP production landing 約 35-40%
Contract manifest 35 個 contracts
Mirror readiness 32 ready、2 partial、1 contract-only、0 blocked
Approval queue 8 items7 pending approval、1 block candidate
Approval gate S3.0 已建立0 approved、7 pending、1 block candidate
Decision records S3.1 已建立;目前 0 筆決策紀錄
Review packets S3.2 已建立8 packets、7 ready for human review、1 block candidate
State transitions S3.3 已建立5 個 decision options 都有 next state且都不授權執行
Follow-up runtime gate templates S3.4 已建立8 個 templates、0 個 active runtime gates
GitHub primary readiness gate S4.0 已建立8 個 candidate repos、7 個 in-scope blocked、0 個 primary readyS4.10 已補 GitHub target owner decision response request packet、7 個 template statuses、3 個 audit event templates、5 個 redaction examples、6 個 collection checks、6 個 intake preflight checks 與收件包7 個 response templates、owner response 0 筆S4.11 已補 refs truth owner response request packet、5 個 template statuses、3 個 audit event templates、5 個 redaction examples、6 個 collection checks、6 個 intake preflight checks 與收件包5 個 response templates、owner response 0 筆、audit events emitted 0 筆S4.12 已補 workflow / secret 名稱 owner response request packet、5 個 template statuses、3 個 audit event templates、5 個 redaction examples、6 個 collection checks、6 個 intake preflight checks 與收件包5 個 response templates、owner response 0 筆、audit events emitted 0 筆S4.13 已補四包 owner response validation rollup、6 條 evidence routing rules、8 個 display sections、7 條 state transition rules、9 個 reviewer checklist items、7 條 reviewer outcome lanes、4 個 reviewer audit event templates、5 個 reviewer audit display sections、6 個 reviewer audit collection checks、5 個 reviewer audit redaction examples 與 5 條 reviewer audit retention rules22 個 templates、received / accepted / rejected 皆為 0、reviewer audit emitted 仍為 0
GitHub primary rollback ADR S4.4 已建立7 個 in-scope rollback drafts、0 個 owner approved、0 個 dry-run completed、0 個 active cutover
Gitea inventory S4.5 已補認證清冊匯出請求S4.6 已補匯入驗收契約S4.7 已補 owner coverage attestationS4.8 已把既有 Gitea queue/gate/review packet/follow-up gate 對齊 attestation 先行S4.9 已補 owner response request packet、5 個 template statuses、3 個 audit event templates、5 個 redaction examples、8 個 display sections、6 個 collection checks、owner response 收件包、6 個 intake preflight checks 與 5 個 outcome lanes目前 status=partial_waiting_authenticated_inventory、未認證公開範圍 repos 2 個、本機可見 Gitea unique repos 4 個、匯出來源選項 2 類、匯入驗收 payload 0 筆、owner attestation items 5 個、收到 attestation 0 筆、owner response 0 筆、audit events emitted 0 筆、敏感 payload 必須隔離、允許收集 token value=false
Workflow / secret name inventory S4.1 已建立S4.2 補 4 個 repos、31 個 workflow files、43 個 referenced secret names 的 local evidenceS4.3 補 7 個 repos、5 類 lanes 的 redacted export requestS4.12 補 1 個 owner response request packet、5 個 template statuses、3 個 audit event templates、5 個 redaction examples、6 個 collection checks、6 個 intake preflight checks 與 5 個 owner response templates0 個 inventory complete、audit events emitted 0 筆、禁止收集 secret value、禁止 write token
Owner response validation S4.13 已建立;四包 owner response 目前 received/accepted 皆為 04 條 missing response lanes、4 步 collection order、next collection candidate、6 條 evidence routing rules、8 個 display sections、7 條 state transition rules、9 個 reviewer checklist items、7 條 reviewer outcome lanes、4 個 reviewer audit event templates、5 個 reviewer audit display sections、6 個 reviewer audit collection checks、5 個 reviewer audit redaction examples 與 5 條 reviewer audit retention rules 可供 AwoooP 直接顯示;下一個建議收件為 S4.9 Gitea owner attestationlatest local validation 為 SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OKreviewer audit emitted 仍為 0不代表 owner response 已收到或任何執行授權
Dry-run contract_defined_not_executed;已納入 CHECK_PROGRESS_GUARDCHECK_OWNER_RESPONSE_GUARDlatest local validation 為 repo_snapshot_guard_pass,仍不代表 production ingestion
Runtime actions false
Payload ingestion false

1.1 進度判讀

目前進度不是以「強制防護開了多少」計算,而是以統帥指定的低摩擦路線拆成兩層:

  1. 框架期約 80-85%35 個主要 contract 已有 32 個 ready、2 個 partial、1 個 contract-only、0 blocked表示治理骨架、只讀 evidence、人工批准語義與 AwoooP mirror-only 接口已接近完整。
  2. 落地期約 35-40%owner responses 仍為 0、active runtime gate 為 0、payload ingestion 為 false、GitHub primary ready 為 0、AwoooP production ingestion 尚未啟用。

因此跨 Session 採用 58% 作為目前整體進度。這代表「框架健康、尚未過度收緊」,不是 runtime enforcement 或 primary cutover 授權。

1.2 為什麼 58% 看起來沒動

58% 是 headline progress只在高層 gate 真正改變時調整。最近幾輪 S4.10、S4.11、S4.12 與 S4.13 的工作確實有前進,但屬於框架細節、顯示順序與收件安全,不會直接推高 headline。

最近完成 進度軸 headline delta 為什麼整體百分比不變
S4.10 request packet framework detail 0 只顯示 owner 要回覆什麼,不代表 request sent、response received 或 approval
S4.10 template status ledger framework detail 0 只逐項顯示 7 個 target 仍為 waitingreceived / accepted 仍為 0
S4.10 audit event templates framework detail 0 event templates 仍為 template_only_not_emittedproduction ingestion 尚未啟用
S4.10 redaction examples framework detail 0 只示範安全 metadata shape不代表 owner response 已收到或可執行 repo / refs / primary 動作
S4.10 collection checks framework detail 0 只維持 request / received / accepted 狀態分離,不代表 owner response 已收到或已接受
S4.10 intake preflight checks framework detail 0 只分類可收、補證、隔離或拒收,不代表 owner response accepted 或可執行 repo / refs / primary 動作
S4.11 request packet framework detail 0 只顯示 owner 要回覆哪 5 類 refs truth 問題,不代表 request sent、response received、accepted 或 refs sync/delete/force push 授權
S4.11 template status ledger framework detail 0 只逐項顯示 5 類 refs truth response 仍為 waitingreceived / accepted 仍為 0不代表 refs sync/delete/force push 授權
S4.11 audit event templates framework detail 0 event templates 仍為 template_only_not_emittedemitted 仍為 0不代表 production ingestion 或 refs sync/delete/force push 授權
S4.11 redaction examples framework detail 0 只示範安全 metadata shape不代表 owner response received / accepted 或 refs sync/delete/force push 授權
S4.11 collection checks framework detail 0 只維持 request / received / accepted 狀態分離,不代表 owner response received / accepted 或 refs sync/delete/force push 授權
S4.11 intake preflight checks framework detail 0 只分類可審、補證、隔離、拒收或等待,不代表 owner response accepted 或 refs sync/delete/force push 授權
S4.12 request packet framework detail 0 只顯示 owner 要回覆哪 5 類 workflow / secret 名稱問題,不代表 request sent、response received、secret value collection、workflow 修改、runner 啟用或 primary 授權
S4.12 template status ledger framework detail 0 只逐項顯示 5 類 workflow / secret 名稱 response 仍為 waitingreceived / accepted 仍為 0不代表 secret value collection、workflow 修改、runner 啟用或 primary 授權
S4.12 audit event templates framework detail 0 event templates 仍為 template_only_not_emittedemitted 仍為 0不代表 production ingestion、secret value collection、workflow 修改、runner 啟用或 primary 授權
S4.12 redaction examples framework detail 0 只示範安全 metadata shape不代表 owner response received / accepted 或 secret value collection、workflow 修改、runner 啟用授權
S4.12 collection checks framework detail 0 只維持 request / received / accepted 狀態分離,不代表 owner response received / accepted、secret value collection、workflow 修改、runner 啟用或 primary 授權
S4.12 intake preflight checks framework detail 0 只分類可審、補證、隔離或拒收,不代表 owner response accepted、secret 建立、workflow 修改、runner 啟用或 primary 授權
S4.13 evidence routing rules framework detail 0 只決定 owner evidence pointer 應補證、隔離、拒收、進跨包 review 或只讀更新,不代表 owner response received / accepted、approval、runtime gate 或 execution authorization
S4.13 display sections framework detail 0 只固定 AwoooP Operator Console 的 read-only 呈現順序,不代表 owner response received / accepted、approval、runtime gate、execution queue 或 action button
S4.13 state transition rules framework detail 0 只固定 owner response validation 的 read-only 狀態語義,不代表 owner response received / accepted、approval、runtime gate、execution queue 或 action button
S4.13 reviewer checklist framework detail 0 只提供人工審查順序與只讀檢查提示,不代表 owner response received / accepted、approval、runtime gate、execution queue 或 action button
S4.13 reviewer outcome lanes framework detail 0 只把人工檢查結果分類成等待、補證、隔離、拒收、跨包 review、只讀更新候選或等待 runtime gate不代表 approval、runtime gate、execution queue 或 action button
S4.13 reviewer audit event templates framework detail 0 只定義未來可留痕的脫敏 metadata 形狀emitted 仍為 0不代表 production ingestion、approval、runtime gate 或 execution authorization
S4.13 reviewer audit display sections framework detail 0 只固定 AwoooP 顯示 audit templates、允許 metadata、禁止 payload、0 emitted 狀態與非授權邊界,不代表 production ingestion、approval、runtime gate 或 execution authorization
S4.13 reviewer audit collection checks framework detail 0 只要求 audit template 可見、metadata-only、forbidden payload blocked、emitted=0、無 runtime side effect 與 counters 不變,不代表 production ingestion、approval、runtime gate 或 execution authorization
S4.13 reviewer audit redaction examples framework detail 0 只示範 reviewer audit metadata 的安全顯示形狀,不代表 owner response、production ingestion、approval、runtime gate 或 execution authorization
S4.13 reviewer audit retention rules framework detail 0 只定義 reviewer audit metadata 可保留的安全形狀與 raw payload 拒收邊界,不代表 owner response、production ingestion、approval、runtime gate 或 execution authorization

headline 進度要再往上,至少需要下列任一高層 gate 有實質 evidence

  1. S4.9 Gitea owner attestation response 收到並接受脫敏 evidence。
  2. S4.10 GitHub target owner / visibility / canonical response 收到並接受脫敏 evidence。
  3. S4.11 refs truth owner response 收到並接受脫敏 evidence。
  4. S4.12 workflow / secret name owner response 收到並接受脫敏 evidence。
  5. redacted payload ingestion 或 active runtime gate 在人工批准後啟用。
  6. GitHub primary readiness gate 的 primary_ready_count 大於 0。

因此現在不是停住,而是進入「避免灌水」的區段:框架小步有累積,但 headline 需要 owner response / runtime gate / primary readiness 這類真正落地訊號才會跳。

只讀驗證:

python3 scripts/security/security-mirror-progress-guard.py

2. AwoooP 可做

  1. 顯示 S0 到 S4 的階段狀態。
  2. 顯示 contract readiness、approval queue summary、approval gate summary 與下一個 gate。
  3. 將彙整結果寫入 Audit evidence。
  4. 低噪音通知階段完成、blocked reason 或人工批准必要事件。
  5. 把下一步限制在 observe / approval_required / block_candidate

3. AwoooP 不可做

  1. 不把 rollup 當成 runtime authorization。
  2. 不新增 scan、execute、repo、refs、deploy、secret 類 action button。
  3. 不把 LOW / MEDIUM observation 變成 blocking gate。
  4. 不把 approval queue 接成 runner。
  5. 不把 GitHub primary、refs sync 或 Kali /execute 當成已批准。

4. 下一個安全 gate

下一步仍不是 runtime enforcement。

建議先讓 AwoooP 主線只讀消費本 rollup、security_approval_gate_v1security_approval_decision_record_v1security_approval_review_packet_v1security_approval_state_transition_v1security_followup_runtime_gate_v1source_control_primary_readiness_gate_v1source_control_primary_rollback_adr_v1source_control_workflow_secret_name_inventory_v1,並由人工依序 review

  1. redacted finding ingestion adapter。
  2. safe web crawl scope。
  3. Gitea private/internal read-only inventory先依 S4.9 收到並驗收 S4.7 owner coverage attestation response且 S4.8 已把這個先行條件接到既有 approval queue / gate / review packet / follow-up runtime gate再依 S4.5 認證匯出請求補全量清冊;收到脫敏 payload 後先依 S4.6 驗收 / 拒收 / 隔離;目前未認證公開範圍 2 個、本機可見 Gitea unique 4 個、覆蓋缺口 2 個、attestation items 5 個、owner response 0 筆,不保存 token value。
  4. GitHub target / owner / visibility / canonical先依 S4.10 request packet、template status ledger、audit event templates、redaction examples、collection checks 與 intake preflight checks 收到並驗收 7 個 owner decision response templatesreceived / accepted response 目前皆為 0不得把 request packet、template status ledger、audit event templates、redaction examples、collection checks、intake preflight checks 或 response packet 當成 repo creation、visibility change、refs sync 或 primary approval。
  5. Kali /execute 維持 block candidate。
  6. Refs truth owner response先依 S4.11 request packet、template status ledger、audit event templates、redaction examples、collection checks 與 intake preflight checks 顯示 main/dev truth、deprecated drift、release tag、GitHub-only refs 的 5 個 response templatesreceived / accepted response 目前皆為 0audit events emitted 仍為 0不得把 request packet、template status ledger、audit event templates、redaction examples、collection checks、intake preflight checks 或 response packet 當成 refs sync、delete、force push 或 primary approval。
  7. Workflow / secret 名稱 owner response先依 S4.12 request packet、template status ledger、audit event templates、redaction examples、collection checks 與 intake preflight checks 顯示 webhook、runner、deploy key、branch protection / CODEOWNERS、repository secret name parity 的 5 個 response templatesreceived / accepted response 目前皆為 0audit events emitted 仍為 0不得把 request packet、template status ledger、audit event templates、redaction examples、collection checks、intake preflight checks 或 response packet 當成 secret value 收集、workflow 修改、GitHub hosted runner 啟用或 primary approval。
  8. Owner response validation rollup先依 S4.13 顯示 S4.9/S4.10/S4.11/S4.12 四包 response packets、22 個 templates、10 個 cross-packet checks、6 條 evidence routing rules、8 個 display sections、7 條 state transition rules、9 個 reviewer checklist items、7 條 reviewer outcome lanes、4 個 reviewer audit event templates、5 個 reviewer audit display sections、6 個 reviewer audit collection checks、5 個 reviewer audit redaction examples、5 條 reviewer audit retention rules 與 quarantine rules不得把 rollup、routing、display sections、state transition rules、reviewer checklist、reviewer outcome lanes、reviewer audit templates、reviewer audit display sections、reviewer audit collection checks、reviewer audit redaction examples 或 reviewer audit retention rules 當成 approval、runtime gate、production ingestion 或 execution authorization。
  9. GitHub primary readiness blockers 與 rollback ADR 缺口。
  10. S4.4 GitHub primary rollback ADR 草案:先顯示 7 個 repo 的 rollback owner、validation window 與 triggersowner approval 前不可執行。
  11. workflow / webhook / runner / deploy key / branch protection / CODEOWNERS / secret 名稱 inventory 缺口,先看 S4.2 local evidence再依 S4.3 redacted export request 與 S4.12 owner response request packet / template status ledger / audit event templates / redaction examples / collection checks / intake preflight checks / 收件包補 webhook / runner / deploy key / branch protection / repository secret parity只保存名稱與 owner不保存 value不使用 write token。

任何批准後的執行仍需下一階段 runtime gate 與獨立 evidence不得由本 rollup 自動觸發。