Files
awoooi/docs/security/SOURCE-CONTROL-REF-TRUTH-OWNER-RESPONSE.md

14 KiB
Raw Blame History

Source Control Ref Truth Owner Response 收件包

項目 內容
日期 2026-06-04
狀態 草案,等待 owner response
資料契約 docs/schemas/source_control_ref_truth_owner_response_v1.schema.json
快照 docs/security/source-control-ref-truth-owner-response.snapshot.json
來源契約 source_control_ref_truth_classification_v1
目標契約 source_control_reconcile_plan_v1
模式 owner_ref_truth_response_intake_only
執行面授權 false

0. 核心結論

S4.11 補的是「AwoooP 要怎麼請 owner 回覆,以及 owner 要怎麼回覆 current 194 個 refs review items 的真相來源、deprecated 候選、release tag retention 與 GitHub-only refs disposition」。

S4.11 不是 refs sync approval、不是 delete approval、不是 force-push approval也不是 GitHub primary approval。它只把 owner response 的欄位、可接受決策、驗收規則、拒收規則與允許輸出固定下來,讓 AwoooP 可以只讀顯示並等待人工補證。

此文件不要求貼 token不接受 raw secret不 fetch、不 push refs、不 delete refs、不 rewrite branch/tag、不建立 repo、不修改 visibility、不切 primary也不停用 Gitea。

1. Response 摘要

指標
owner response 狀態 waiting_owner_response
repos 3
ref review items 194
需要人工指定真相來源 4
deprecated / archive 候選 142
release tag 待審核 3
GitHub-only ref 待審核 20
owner response request packet 1
template status ledger 5
audit event templates 3
redaction examples 5
collection checks 6
intake preflight checks 6
response templates 5
已收到 response 0
已接受 response 0
已拒收 response 0
acceptance checks 8
rejection rules 10
授權 sync refs false
授權 delete refs false
授權 force push false
授權切換 GitHub primary false
允許收集 secret value false
允許 action button false

1.1 Owner Response Request Packet

欄位
request id s4_11_ref_truth_owner_response_request
顯示狀態 ready_to_request_owner_response
要求回覆 templates 5
顯示模式 display_owner_response_request_only
執行授權 false
是否為批准 false

這個 request packet 只讓 AwoooP 顯示「請 owner 回覆哪五類 refs truth 問題、允許填哪些欄位、evidence 要怎麼脫敏、哪些 payload 必須拒收」。它不是 request sent、不是 response received、不是 response accepted也不是 refs sync / delete / force push / primary approval。

Owner 回覆只能使用脫敏 metadata 或既有文件引用。不得貼 token、secret、private clone URL credential、git object pack、repo archive、API raw body、fetch/push/delete/force-push 指令或任何 execution request payload。

1.2 Template Status Ledger

Template 狀態 request received / accepted / rejected
response-main-branch-truth-source waiting_owner_response request_ready_not_sent 0 / 0 / 0
response-active-dev-branch-truth-source waiting_owner_response request_ready_not_sent 0 / 0 / 0
response-drift-deprecated-candidate-batch waiting_owner_response request_ready_not_sent 0 / 0 / 0
response-release-tag-retention waiting_owner_response request_ready_not_sent 0 / 0 / 0
response-github-only-ref-review waiting_owner_response request_ready_not_sent 0 / 0 / 0

Template status ledger 只讓 AwoooP 逐項顯示哪一類 refs truth response 還在等待 owner。request_ready_not_sent 不代表 request 已送出,waiting_owner_response 不代表 owner 已回覆,任何單項狀態也不代表 refs sync、delete、force push、tag rewrite、backfill 或 GitHub primary approval。

1.3 Audit Event Templates

Template 觸發點 emitted
audit-ref-truth-response-request-shown 顯示 S4.11 request packet 0
audit-ref-truth-response-received-metadata 收到脫敏 owner response metadata pointer 0
audit-ref-truth-response-outcome-classified 依 acceptance checks / rejection rules 分類 outcome 0

Audit event templates 只定義 AwoooP 未來可記錄的脫敏 metadata 欄位,全部維持 template_only_not_emittedemitted_event_count=0stored_raw_payload_allowed=false。它們不是 production ingestion不代表 owner response 已收到,也不授權 refs sync、delete、force push、backfill、tag rewrite 或 GitHub primary。

1.4 Redaction Examples

Example 用途
redaction-ref-truth-existing-doc-ref 用既有文件 / snapshot 引用 main truth evidence
redaction-main-branch-truth-metadata 用角色、短 SHA 或 snapshot ref 表示 truth source
redaction-deprecated-batch-disposition 用 ref pattern / count 表示 deprecated batch disposition
redaction-release-tag-retention-metadata 用 artifact / rollback owner metadata 表示 release tag retention
redaction-ref-truth-quarantine-pointer 不確定是否含敏感值時只留下 quarantine pointer

Redaction examples 只示範安全回覆形狀,全部維持 template_example_onlystored_raw_payload_allowed=false。它們不是 owner response received、不是 accepted也不讓 AwoooP 保存 git object pack、repo archive、API raw body、token、secret、private clone URL credential 或 execution request payload。

1.5 Collection Checks

Check 用途
collection-ref-truth-request-packet-displayed 確認只顯示 S4.11 request packet不夾帶 refs 執行要求
collection-ref-truth-read-only-submission-mode 確認 owner 只能用 read-only / redacted metadata 方式回覆
collection-five-ref-truth-template-tracking 確認五個 refs truth templates 分開追蹤 received / accepted / rejected
collection-ref-truth-redacted-evidence-only 確認只收 repo 內文件、snapshot、短 SHA 或脫敏 metadata pointer
collection-ref-truth-no-approval-language 確認 owner wording 不會升級成 refs sync / delete / force push / primary approval
collection-ref-truth-audit-metadata-only 確認只記錄脫敏 audit metadata不保存 raw payload

Collection checks 只維持 request / received / accepted 狀態分離。它們不是 owner response received、不是 owner response accepted也不授權 fetch、push、delete refs、force push、tag rewrite、backfill 或 GitHub primary。

1.6 Intake Preflight Checks

Check 用途
preflight-known-ref-truth-lane 確認 response 對應 S4.11 已知 refs truth lane
preflight-required-ref-truth-owner-fields 確認 owner、decision、repo/ref scope、truth/disposition 與 evidence_refs 完整
preflight-allowed-ref-truth-decision 確認 decision 在對應 template 允許值內
preflight-ref-truth-redacted-evidence-only 確認 evidence_refs 只含文件、snapshot、短 SHA 或脫敏 metadata pointer
preflight-no-refs-execution-request 拒收 fetch / push / delete / force push / rewrite / backfill / primary 等執行要求
preflight-all-five-ref-truth-lanes-before-accepted 確認五個 templates 全部可驗收前不得標成 accepted

Intake preflight checks 只把收到的 response 分類成可審、補證、隔離、拒收或繼續等待。Preflight pass 不是 owner response accepted也不是 refs sync、delete、force push、tag rewrite、backfill、GitHub primary、workflow / secret / runner 或 Kali scan 授權。

2. Owner Response 必填欄位

每筆 response 至少要能回答:

  1. owner_role_or_team:回覆者角色或團隊,不要求個人敏感資訊。
  2. decision:必須是該 lane template 允許的決策值。
  3. decision_reason為什麼做此真相來源、retention 或 disposition 判定。
  4. reporef_name / tag_name / ref_pattern_or_ref_list:批次回覆必須能重現範圍。
  5. truth_source_or_shabranch_dispositionretention_dispositiongithub_only_owner:依 lane 補齊。
  6. deploy_marker_ownerartifact_ownerrollback_point_ownerworkflow_owner:高風險 branch/tag 必須有 owner 或補證 owner。
  7. evidence_refs:只能指向 repo 內文件、snapshot 或 owner 提供的脫敏 metadata。

3. 五個 Response Template

Template Lane 覆蓋範圍 驗收重點
response-main-branch-truth-source main_truth_required 3 個 repo main branch 指定 truth source、deploy marker owner、production source owner、rollback point owner
response-active-dev-branch-truth-source active_branch_truth_required wooo/awoooi dev 判定 active workflow、legacy candidate 或需補 workflow owner
response-drift-deprecated-candidate-batch archive_or_deprecate_candidate wooo/awoooi 142 個 drift/adopt refs deprecated candidate 只代表人工 disposition不代表 delete approval
response-release-tag-retention release_tag_missing_on_github awoooi 2 個 release tags、clawbot-v5 1 個 tag 指定 artifact / deploy marker owner維持 tag action disabled
response-github-only-ref-review github_only_manual_review wooo-aiops 1 個 branch + 19 個 UAT tags backfill 只能是 candidate不代表 push approval

4. 可接受決策值

Lane Decision
main_truth_required choose_gitea_as_truth_candidatechoose_github_as_truth_candidatechoose_specific_sha_as_truth_candidatehold_pending_deploy_markerunknown_requires_more_evidence
active_branch_truth_required keep_active_branch_candidatemark_branch_legacy_candidatehold_pending_workflow_ownerunknown_requires_more_evidence
archive_or_deprecate_candidate mark_deprecated_candidatekeep_audit_retention_candidatesplit_batch_requires_more_evidenceunknown_requires_more_evidence
release_tag_missing_on_github keep_release_tag_candidatemark_tag_legacy_candidatehold_pending_artifact_ownerunknown_requires_more_evidence
github_only_manual_review keep_github_only_candidatebackfill_to_gitea_candidatemark_legacy_github_only_candidatehold_pending_audit_ownerunknown_requires_more_evidence

5. 驗收規則

  1. response 必須對應既有 refs truth lane。
  2. decision 必須在該 lane template 的允許值內。
  3. 必須標示 repo 與 ref scope批次回覆必須有可重現範圍。
  4. 必須說明 truth source 或 disposition未知時要明確選 hold / unknown。
  5. high-risk main branch 與 release tag 必須有 deploy、artifact、rollback 或補證 owner。
  6. 不得夾帶 fetch、push refs、delete refs、force push、mirror sync、tag rewrite 或 branch rewrite 要求。
  7. 不得夾帶 GitHub primary、repo creation、visibility change、disable Gitea 或 archive Gitea 要求。
  8. evidence_refs 必須已脫敏,不得包含 token、credential、secret value、private key、deploy key value、cookie 或 session。

6. 必須拒收

  1. token value、PAT、cookie、session、CSRF token、private key、deploy key value 或 partial credential。
  2. fetch、push refs、delete refs、force push、mirror sync、tag rewrite、branch rewrite 或 prune refs。
  3. 切 GitHub primary 或把 GitHub primary readiness 視為已完成。
  4. 建立 repo、修改 repo visibility 或改 remote URL。
  5. 把 deprecated candidate 當成 delete approval。
  6. 把 backfill candidate 當成 push approval。
  7. 缺 repo/ref/lane 或批次範圍無法重現。
  8. main / release high-risk 回覆缺 deploy marker、artifact、rollback 或補證 owner。
  9. 要求停用、刪除、封存或降級 Gitea。
  10. 任何不確定是否含敏感值、私有 URL 憑證或未脫敏截圖的回覆。

7. AwoooP 可做

  1. 顯示 1 個 owner response request packet。
  2. 顯示 5 個 template statuses逐項維持 waiting_owner_response
  3. 顯示 3 個 audit event templates全部維持 template_only_not_emittedemitted_event_count=0
  4. 顯示 5 個 redaction examples全部維持 template_example_onlystored_raw_payload_allowed=false
  5. 顯示 6 個 collection checks維持 request / received / accepted 分離。
  6. 顯示 6 個 intake preflight checks只分類可審、補證、隔離、拒收或等待。
  7. 顯示 5 個 owner response templates。
  8. 顯示 8 個 acceptance checks 與 10 個 rejection rules。
  9. 在 owner response 到來後,只更新 read-only classification、draft reconcile plan、primary readiness blocker wording 與 status rollup。
  10. 將不完整或可疑 response 放進 mirror quarantine。
  11. 持續顯示 received_response_count=0accepted_response_count=0,直到真的收到脫敏 response。

8. AwoooP 不可做

  1. 不要求使用者貼 token、secret、private key、cookie、session 或 deploy key。
  2. 不把 response 當成 refs sync approval。
  3. 不把 response 當成 delete refs approval。
  4. 不把 response 當成 force-push approval。
  5. 不把 response 當成 GitHub primary approval。
  6. 不建立 GitHub repo。
  7. 不修改 GitHub/Gitea repo。
  8. 不新增執行按鈕。

9. 階段定位

S4.11 是 S4.0 GitHub primary readiness 與 S4.10 GitHub target owner decision 後面的 refs owner response 收件包。

它讓 current 194 個 ref review items 的 owner response 變得可審、可驗收、可拒收,但仍停在框架期。真正進入 refs migration 或 GitHub primary 前,仍必須等 Gitea inventory、GitHub target response、workflow-secret parity、rollback ADR、owner approval 與後續 runtime gate 全部補齊。