Files
awoooi/docs/security/SOURCE-CONTROL-OWNER-RESPONSE-VALIDATION-ROLLUP.md

8.7 KiB
Raw Blame History

Source Control Owner Response Validation Rollup

項目 內容
日期 2026-05-17
狀態 草案,等待 owner responses
資料契約 docs/schemas/source_control_owner_response_validation_rollup_v1.schema.json
快照 docs/security/source-control-owner-response-validation-rollup.snapshot.json
模式 owner_response_validation_rollup_only
執行面授權 false

0. 核心結論

S4.13 補的是「四個 owner response 收件包的只讀驗收彙整」。

它彙整 S4.9 Gitea owner attestation response、S4.10 GitHub target owner decision response、S4.11 refs truth owner response、S4.12 workflow / secret name owner response。目的只是讓 AwoooP 有單一入口看到哪些 owner response 尚未收到、哪些可驗收、哪些必須拒收或隔離。

S4.13 不新增第 36 個主 contract不新增 approval item不啟用 runtime gate不新增 action button也不把任何 response 當成 repo creation、visibility change、refs sync、workflow 修改、secret 搬移、runner 啟用或 GitHub primary approval。

1. Rollup 摘要

指標
response packets 4
validation lanes 4
response templates 22
已收到 response 0
已接受 response 0
已拒收 response 0
acceptance checks 32
rejection rules 40
cross-packet checks 10
quarantine required true
primary ready count 0
runtime execution authorized false
action buttons allowed false

1.1 最新本機只讀驗證

項目 結果
日期 2026-05-18
範圍 repo_snapshot_only
指令 python3 scripts/security/source-control-owner-response-guard.py
結果 SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK
已收到 response 0
已接受 response 0
runtime actions authorized false
repo / refs actions authorized false
workflow / secret actions authorized false

這表示四包 owner response snapshot 與 S4.13 rollup 的只讀 guard 已通過;不表示 owner response 已收到,也不授權 repo、refs、workflow、secret、runner、GitHub primary 或任何 runtime 動作。

2. 四條驗收 Lane

Lane 來源 Templates 目前狀態
S4.9 Gitea owner attestation response GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE.md 5 等待 response
S4.10 GitHub target owner decision response GITHUB-TARGET-OWNER-DECISION-RESPONSE.md 7 等待 response
S4.11 refs truth owner response SOURCE-CONTROL-REF-TRUTH-OWNER-RESPONSE.md 5 等待 response
S4.12 workflow / secret name owner response SOURCE-CONTROL-WORKFLOW-SECRET-NAME-OWNER-RESPONSE.md 5 等待 response

2.1 AwoooP 可顯示的缺口摘要

Lane 缺口 下一步 仍禁止
S4.9 Gitea owner attestation 5 個 response templates 尚未收到 Owner 回覆 5 個 Gitea coverage attestation items只引用脫敏 evidence refs 不收 token value、不寫 Gitea、不 sync refs、不切 primary
S4.10 GitHub target decision 7 個 response templates 尚未收到 Owner 依 S4.10 request packet、template status ledger、audit event templates、redaction examples、collection checks 與 intake preflight checks 回覆 7 個 GitHub target 的 owner / visibility / canonical disposition 不建 repo、不改 visibility、不 sync refs、不切 primary
S4.11 refs truth 5 個 response templates 尚未收到 Owner 依 S4.11 request packet 與 template status ledger 回覆 refs truth、deprecated drift、release tags 與 GitHub-only refs disposition 不 fetch / push / delete refs、不 force push、不切 primary
S4.12 workflow / secret name 5 個 response templates 尚未收到 Owner 回覆 webhook、runner、deploy key、branch protection / CODEOWNERS、secret name parity 的脫敏狀態 不收 secret value、不改 workflow、不啟用 runner、不切 primary

2.2 建議收件順序

順序 Lane 為什麼先後這樣排
1 S4.9 Gitea owner attestation 先確認 Gitea 覆蓋範圍與 canonical owner避免後續 GitHub target / refs 判定建立在不完整 inventory 上
2 S4.10 GitHub target decision 再確認 GitHub target owner / visibility / canonical避免 not_found_or_private 被誤解成可直接建立 repo
3 S4.11 refs truth GitHub target owner / visibility 明確後,再判定 branch / tag 真相來源,避免 refs sync 或 delete 被提前誤用
4 S4.12 workflow / secret name 最後補 workflow / webhook / runner / deploy key / branch protection / CODEOWNERS / secret 名稱 parity避免 secret 或 runner 變更早於 source truth

這個順序只讓 AwoooP 顯示下一個建議收件項目,不是 approval queue、不是 execution queue也不授權任何 repo、refs、workflow、secret、runner 或 primary 動作。

2.3 下一個建議收件項目

欄位 內容
下一步 S4.9 Gitea owner attestation response
需要回覆 5 個 Gitea coverage attestation items
顯示模式 display_next_collection_item_only
目前 received / accepted 0 / 0
仍禁止 不收 token value、不寫 Gitea、不 sync refs、不切 GitHub primary

next_collection_candidate 只讓 AwoooP Operator Console 顯示「現在先收 S4.9」。它不是批准、不是執行排程,也不是後續 S4.10 / S4.11 / S4.12 已可接受的訊號。

AwoooP 顯示 S4.9 時,應同步讀取 gitea-inventory-owner-attestation-response.snapshot.json 的 1 個 owner response request packet、5 個 template statuses、3 個 audit event templates、5 個 redaction examples、8 個 display sections、6 個 collection checks、6 個 intake preflight checks 與 5 個 outcome lanesrequest packet 只提示 owner 要填什麼與不得貼什麼template statuses 只逐項顯示 waiting / request readyaudit event templates 只定義 request shown / response received metadata / outcome classified 的脫敏 metadata 欄位且目前 0 emittedredaction examples 只提供安全回覆形狀display sections 只固定只讀 UI 順序collection checks 只維持 request / received / accepted 狀態分離preflight / outcome 只分類可審、補證、隔離、拒收或等待,不代表 owner response accepted 或 AwoooP production ingestion 已啟用。

3. Cross-Packet 驗收規則

  1. 四個 source response packets 都必須可解析,且 summary 欄位存在。
  2. response template count 必須對齊來源:5 + 7 + 5 + 5 = 22
  3. received / accepted / rejected count 必須明確列出;目前皆為 0 / 0 / 0
  4. 即使未來 response 通過,也只能更新 read-only wording、matrix 或 readiness 欄位。
  5. 四個 packets 都必須保留 rejection rules總數 40。
  6. 不得收 token、secret、private key、cookie、session、partial credential 或未脫敏 payload。
  7. 不得夾帶 write token、admin API、repo write、workflow 修改、runner 啟用或 secret rotate。
  8. 不得把 response 當成 refs sync、delete refs、force push 或 GitHub primary approval。
  9. 任何不確定是否含敏感值的 response 都先 quarantine。
  10. 接受 response 後必須同步更新 source packet、validation rollup、security mirror rollup、primary readiness gate 與 LOGBOOK。

4. AwoooP 可做

  1. 顯示四個 response packets 的總覽與缺口。
  2. 顯示 22 個 response templates、32 個 acceptance checks、40 個 rejection rules。
  3. 顯示目前 received / accepted / rejected response 皆為 0。
  4. 將不完整或可疑 response 導入 mirror quarantine。
  5. 在未來 response 通過後,只更新 read-only evidence、matrix、decision table、reconcile wording 或 readiness wording。

5. AwoooP 不可做

  1. 不要求使用者貼 token、secret、private key、cookie、session、deploy key、runner token 或 webhook secret。
  2. 不使用 write token。
  3. 不建立 GitHub repo、不修改 visibility、不寫 Gitea repo。
  4. 不 sync refs、不 delete refs、不 force push。
  5. 不修改 workflow、webhook、runner、deploy key、branch protection、CODEOWNERS 或 repository secret。
  6. 不啟用 GitHub hosted runner不讓此階段消耗 GitHub Actions hosted minutes。
  7. 不切 GitHub primary。
  8. 不新增 execution action button。

6. 階段定位

S4.13 是 S4.9 到 S4.12 的彙整驗收入口。

它讓另一個 AwoooP session 可以用一份 rollup 看懂「現在缺哪些 owner response」但不改變任何 runtime 狀態。真正進入 GitHub primary、refs migration、workflow/secret parity completion 或 Kali runtime ingestion 之前,仍必須等 owner responses、redacted payload、rollback ADR、人工批准與 follow-up runtime gate 全部補齊。