Files
awoooi/docs/security/source-control-ref-truth-owner-response.snapshot.json

1011 lines
43 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema_version": "source_control_ref_truth_owner_response_v1",
"status": "draft_waiting_owner_response",
"date": "2026-06-04",
"mode": "owner_ref_truth_response_intake_only",
"runtime_execution_authorized": false,
"source_contract": "source_control_ref_truth_classification_v1",
"target_contract": "source_control_reconcile_plan_v1",
"source_indexes": [
"docs/security/source-control-ref-truth-classification.snapshot.json",
"docs/security/source-control-ref-detail-diff.snapshot.json",
"docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md",
"docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md",
"docs/security/source-control-reconcile-plan.snapshot.json",
"docs/security/source-control-primary-readiness-gate.snapshot.json",
"docs/security/security-approval-review-packet.snapshot.json",
"docs/security/security-followup-runtime-gate.snapshot.json"
],
"summary": {
"owner_response_status": "waiting_owner_response",
"repo_count": 3,
"total_ref_review_item_count": 194,
"manual_truth_required_count": 4,
"deprecated_candidate_count": 142,
"release_tag_review_count": 3,
"github_only_review_count": 20,
"owner_response_request_packet_count": 1,
"owner_response_template_status_count": 5,
"owner_response_audit_event_template_count": 3,
"owner_response_redaction_example_count": 5,
"owner_response_collection_check_count": 6,
"intake_preflight_check_count": 6,
"response_template_count": 5,
"received_response_count": 0,
"accepted_response_count": 0,
"rejected_response_count": 0,
"acceptance_check_count": 8,
"rejection_rule_count": 10,
"refs_sync_authorized": false,
"refs_delete_authorized": false,
"force_push_authorized": false,
"github_primary_switch_authorized": false,
"secret_value_collection_allowed": false,
"action_buttons_allowed": false
},
"owner_response_request_packet": {
"request_id": "s4_11_ref_truth_owner_response_request",
"display_status": "ready_to_request_owner_response",
"requested_packet": "docs/security/SOURCE-CONTROL-REF-TRUTH-OWNER-RESPONSE.md",
"required_response_item_count": 5,
"requested_template_ids": [
"response-main-branch-truth-source",
"response-active-dev-branch-truth-source",
"response-drift-deprecated-candidate-batch",
"response-release-tag-retention",
"response-github-only-ref-review"
],
"owner_instruction_summary": "請 owner 只依 S4.11 五個 templates 回覆 main/dev truth、deprecated drift、release tag retention 與 GitHub-only refs disposition並只引用脫敏 evidence refs不要貼 token、secret、private clone URL credential、git object、repo archive、API request body 或任何可執行 refs payload。",
"allowed_response_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo",
"ref_name",
"tag_name",
"ref_pattern_or_ref_list",
"truth_source_or_sha",
"branch_disposition",
"retention_disposition",
"github_only_owner",
"deploy_marker_owner",
"production_source_owner",
"rollback_point_owner",
"workflow_owner",
"artifact_owner",
"audit_owner",
"backfill_candidate_reason",
"evidence_refs",
"followup_owner"
],
"evidence_ref_rules": [
"只允許 repo 內既有文件、snapshot 或已脫敏 owner metadata pointer。",
"main/dev truth 必須逐 repo/ref 標示候選真相來源或補證 owner不得只寫全域結論。",
"deprecated candidate 與 backfill candidate 只能是 read-only disposition不得視為 delete、push 或 sync approval。",
"release tag 必須指定 artifact、deploy marker、rollback 或補證 owner。",
"不得提供 token value、secret value、private clone URL credential、cookie、session、deploy key value 或截圖中的敏感值。",
"不確定是否含敏感值時先走 mirror quarantine不得直接貼入 response。"
],
"forbidden_payloads": [
"token_value",
"secret_value",
"private_key",
"cookie_or_session",
"private_clone_url_credential",
"fetch_refs_request",
"push_refs_request",
"delete_refs_request",
"force_push_request",
"mirror_sync_request",
"tag_rewrite_request",
"branch_rewrite_request",
"github_primary_switch_request",
"repo_creation_command",
"visibility_change_command",
"repo_archive",
"git_object_pack",
"db_dump",
"api_request_or_response_body",
"execution_request_payload"
],
"allowed_submission_modes": [
"markdown_table_redacted_metadata",
"json_redacted_metadata_pointer",
"existing_repo_doc_reference",
"awooop_manual_review_note"
],
"awooop_display_mode": "display_owner_response_request_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"不 fetch refs",
"不 push refs",
"不 delete refs",
"不 force push",
"不 rewrite branch 或 tag",
"不切 GitHub primary",
"不建立 repo 或修改 visibility",
"不停用、刪除、封存或降級 Gitea repo",
"不保存 secret / token / private key / cookie / session / deploy key value",
"不新增 AwoooP execution action button"
]
},
"owner_response_template_statuses": [
{
"template_id": "response-main-branch-truth-source",
"lane": "main_truth_required",
"display_order": 1,
"collection_status": "waiting_owner_response",
"request_status": "request_ready_not_sent",
"received_response_count": 0,
"accepted_response_count": 0,
"rejected_response_count": 0,
"latest_outcome_lane": "keep_waiting_owner_response",
"next_owner_action": "Owner 需逐 repo 回覆 main branch truth source、deploy marker owner、production source owner 與 rollback point owner不得把 request ready 當成 refs sync approval。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"不 fetch refs",
"不 push refs",
"不 delete refs",
"不 force push",
"不切 GitHub primary"
]
},
{
"template_id": "response-active-dev-branch-truth-source",
"lane": "active_branch_truth_required",
"display_order": 2,
"collection_status": "waiting_owner_response",
"request_status": "request_ready_not_sent",
"received_response_count": 0,
"accepted_response_count": 0,
"rejected_response_count": 0,
"latest_outcome_lane": "keep_waiting_owner_response",
"next_owner_action": "Owner 需回覆 `wooo/awoooi dev` 是否仍為 active workflow、legacy candidate 或需補 workflow owner不得把 legacy candidate 當成 delete approval。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"不 fetch refs",
"不 push refs",
"不 delete refs",
"不 force push",
"不 rewrite branch"
]
},
{
"template_id": "response-drift-deprecated-candidate-batch",
"lane": "archive_or_deprecate_candidate",
"display_order": 3,
"collection_status": "waiting_owner_response",
"request_status": "request_ready_not_sent",
"received_response_count": 0,
"accepted_response_count": 0,
"rejected_response_count": 0,
"latest_outcome_lane": "keep_waiting_owner_response",
"next_owner_action": "Owner 需回覆 `drift/adopt-*` batch 的 deprecated、audit retention 或 split batch disposition不得把 deprecated candidate 當成 prune/delete approval。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"不 prune refs",
"不 delete refs",
"不 force push",
"不把 batch disposition 當執行批准"
]
},
{
"template_id": "response-release-tag-retention",
"lane": "release_tag_missing_on_github",
"display_order": 4,
"collection_status": "waiting_owner_response",
"request_status": "request_ready_not_sent",
"received_response_count": 0,
"accepted_response_count": 0,
"rejected_response_count": 0,
"latest_outcome_lane": "keep_waiting_owner_response",
"next_owner_action": "Owner 需回覆 release tag retention、artifact owner 與 deploy marker owner不得把 tag retention 當成 tag push、rewrite 或 delete approval。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"不 push tag",
"不 rewrite tag",
"不 delete tag",
"不切 GitHub primary"
]
},
{
"template_id": "response-github-only-ref-review",
"lane": "github_only_manual_review",
"display_order": 5,
"collection_status": "waiting_owner_response",
"request_status": "request_ready_not_sent",
"received_response_count": 0,
"accepted_response_count": 0,
"rejected_response_count": 0,
"latest_outcome_lane": "keep_waiting_owner_response",
"next_owner_action": "Owner 需回覆 GitHub-only branch / UAT tags 的保留、backfill candidate、legacy 或補證 owner不得把 backfill candidate 當成 push approval。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"不 push refs",
"不 delete GitHub-only refs",
"不 backfill refs",
"不切 GitHub primary"
]
}
],
"owner_response_audit_event_templates": [
{
"event_template_id": "audit-ref-truth-response-request-shown",
"display_order": 1,
"event_status": "template_only_not_emitted",
"trigger": "AwoooP 顯示 S4.11 refs truth owner response request packet 時。",
"purpose": "只記錄 request packet 已可顯示或已顯示的 metadata不代表 request 已送出、owner response 已收到或 refs action 已授權。",
"allowed_metadata_fields": [
"event_template_id",
"request_id",
"requested_template_ids",
"source_contract",
"target_contract",
"displayed_by_role",
"displayed_at_taipei",
"source_document_ref"
],
"forbidden_payloads": [
"owner_response_raw_body",
"token_value",
"secret_value",
"private_key",
"cookie_or_session",
"private_clone_url_credential",
"fetch_refs_request",
"push_refs_request",
"delete_refs_request",
"force_push_request",
"mirror_sync_request",
"tag_rewrite_request",
"branch_rewrite_request",
"github_primary_switch_request",
"repo_archive",
"git_object_pack",
"db_dump",
"api_request_or_response_body",
"execution_request_payload"
],
"emitted_event_count": 0,
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_audit_template_only",
"execution_authorized": false,
"not_approval": true
},
{
"event_template_id": "audit-ref-truth-response-received-metadata",
"display_order": 2,
"event_status": "template_only_not_emitted",
"trigger": "Owner 提供 S4.11 refs truth response metadata pointer 時。",
"purpose": "只記錄 response 已收到的脫敏 metadata pointer不得保存 response 原文、git object、repo archive、API raw body 或敏感 payload。",
"allowed_metadata_fields": [
"event_template_id",
"template_id",
"lane",
"repo",
"ref_name_or_pattern",
"owner_role_or_team",
"received_at_taipei",
"redacted_evidence_refs",
"source_document_ref"
],
"forbidden_payloads": [
"owner_response_raw_body",
"token_value",
"secret_value",
"private_key",
"cookie_or_session",
"private_clone_url_credential",
"fetch_refs_request",
"push_refs_request",
"delete_refs_request",
"force_push_request",
"mirror_sync_request",
"tag_rewrite_request",
"branch_rewrite_request",
"github_primary_switch_request",
"repo_archive",
"git_object_pack",
"db_dump",
"api_request_or_response_body",
"execution_request_payload"
],
"emitted_event_count": 0,
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_audit_template_only",
"execution_authorized": false,
"not_approval": true
},
{
"event_template_id": "audit-ref-truth-response-outcome-classified",
"display_order": 3,
"event_status": "template_only_not_emitted",
"trigger": "AwoooP 依 S4.11 acceptance checks 與 rejection rules 分類 refs truth owner response 時。",
"purpose": "只記錄分類結果與下一步提示;不得把 outcome、owner wording 或單項 response 當成 refs sync、delete、force push、backfill、tag rewrite 或 GitHub primary 授權。",
"allowed_metadata_fields": [
"event_template_id",
"template_id",
"lane",
"repo",
"ref_name_or_pattern",
"collection_status",
"latest_outcome_lane",
"next_owner_action",
"classified_at_taipei",
"classified_by_role"
],
"forbidden_payloads": [
"owner_response_raw_body",
"token_value",
"secret_value",
"private_key",
"cookie_or_session",
"private_clone_url_credential",
"fetch_refs_request",
"push_refs_request",
"delete_refs_request",
"force_push_request",
"mirror_sync_request",
"tag_rewrite_request",
"branch_rewrite_request",
"github_primary_switch_request",
"repo_archive",
"git_object_pack",
"db_dump",
"api_request_or_response_body",
"execution_request_payload"
],
"emitted_event_count": 0,
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_audit_template_only",
"execution_authorized": false,
"not_approval": true
}
],
"owner_response_redaction_examples": [
{
"example_id": "redaction-ref-truth-existing-doc-ref",
"display_order": 1,
"example_status": "template_example_only",
"category": "ref_truth_existing_document_reference",
"safe_response_shape": [
"template_id=response-main-branch-truth-source",
"repo=wooo/awoooi",
"ref_name=main",
"decision=hold_pending_deploy_marker",
"evidence_refs=[docs/security/source-control-ref-truth-classification.snapshot.json, docs/security/source-control-primary-readiness-gate.snapshot.json]",
"decision_reason=引用既有 snapshot 與 readiness blocker不貼 git object、repo archive 或 API raw body"
],
"required_redactions": [
"外部 evidence 只保留 repo 內文件路徑、snapshot 路徑或已脫敏 metadata pointer",
"若引用 commit 或 deploy marker只能寫短 SHA、文件 ref 或 owner metadata不貼完整 object pack",
"不得貼完整 API request/response body、private clone URL、token 或 repo archive"
],
"forbidden_raw_values": [
"token_value",
"secret_value",
"private_clone_url_credential",
"api_request_or_response_body",
"repo_archive",
"git_object_pack"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
},
{
"example_id": "redaction-main-branch-truth-metadata",
"display_order": 2,
"example_status": "template_example_only",
"category": "main_branch_truth_source_metadata",
"safe_response_shape": [
"owner_role_or_team=repo-owner-or-platform-team",
"repo=wooo/clawbot-v5",
"ref_name=main",
"truth_source_or_sha=short_sha_or_existing_snapshot_ref",
"deploy_marker_owner=platform-ops",
"rollback_point_owner=release-owner"
],
"required_redactions": [
"truth_source_or_sha 只能填短 SHA、既有 snapshot ref 或補證 owner不貼完整 git object",
"owner 欄位只寫角色或團隊不寫密碼、session、one-time code、token 或個人敏感資訊",
"deploy / rollback 說明只代表 owner metadata不代表 push、tag rewrite、primary switch 或 rollback 執行"
],
"forbidden_raw_values": [
"password",
"cookie",
"session",
"one_time_code",
"deploy_key_value",
"approval_phrase_as_execution_authorization"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
},
{
"example_id": "redaction-deprecated-batch-disposition",
"display_order": 3,
"example_status": "template_example_only",
"category": "deprecated_ref_batch_disposition",
"safe_response_shape": [
"template_id=response-drift-deprecated-candidate-batch",
"repo=wooo/awoooi",
"ref_pattern_or_ref_list=drift/adopt-*",
"decision=mark_deprecated_candidate",
"retention_owner=audit-owner",
"audit_or_rollback_use=metadata_only"
],
"required_redactions": [
" ref patterncount ref list object pack",
"deprecated candidate read-only disposition prunedelete refs force push approval",
" split_batch_requires_more_evidence repo snapshot redacted metadata pointer"
],
"forbidden_raw_values": [
"git_object_pack",
"repo_archive",
"prune_refs_command",
"delete_refs_command",
"force_push_command",
"mirror_sync_request"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
},
{
"example_id": "redaction-release-tag-retention-metadata",
"display_order": 4,
"example_status": "template_example_only",
"category": "release_tag_retention_metadata",
"safe_response_shape": [
"template_id=response-release-tag-retention",
"repo=wooo/awoooi",
"tag_name=v2026-redacted",
"decision=keep_release_tag_candidate",
"artifact_owner=release-owner",
"rollback_point_owner=platform-ops",
"evidence_refs=[docs/security/source-control-ref-detail-diff.snapshot.json]"
],
"required_redactions": [
"tag name artifact owner retention metadata tag pushrewrite delete approval",
"artifact evidence repo redacted metadata pointer artifact binaryarchive secret",
" artifact owner hold_pending_artifact_owner"
],
"forbidden_raw_values": [
"artifact_binary",
"repo_archive",
"tag_push_command",
"tag_rewrite_command",
"delete_tag_command",
"secret_value"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
},
{
"example_id": "redaction-ref-truth-quarantine-pointer",
"display_order": 5,
"example_status": "template_example_only",
"category": "uncertain_sensitive_ref_truth_payload",
"safe_response_shape": [
"collection_status=quarantine_sensitive_payload",
"quarantine_reason= tokenprivate clone URL credentialgit object packrepo archiveAPI raw body ",
"raw_payload_stored_in_repo=false",
"next_owner_action=request_redacted_metadata_pointer"
],
"required_redactions": [
" quarantine pointer",
" owner ",
" quarantine received / accepted countclassification wording reconcile plan wording"
],
"forbidden_raw_values": [
"owner_response_raw_body",
"token_value",
"secret_value",
"private_clone_url_credential",
"credential_file",
"git_object_pack",
"repo_archive",
"execution_request_payload"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
}
],
"owner_response_collection_checks": [
{
"check_id": "collection-ref-truth-request-packet-displayed",
"display_order": 1,
"title": " refs truth owner response request packet",
"required": true,
"pass_condition": "AwoooP `owner_response_request_packet` 5 refs truth templates evidence payload fetchpushdeleteforce pushtag rewritebackfill primary switch ",
"failure_lane": "keep_waiting_owner_response",
"awooop_display": "display_request_packet_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-ref-truth-read-only-submission-mode",
"display_order": 2,
"title": "refs truth read-only",
"required": true,
"pass_condition": "owner read-only markdown responseredacted metadata pointerexisting repo doc reference AwoooP manual review note tokenrepo archivegit object packAPI raw body execution request",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "display_read_only_submission_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-five-ref-truth-template-tracking",
"display_order": 3,
"title": " refs truth templates ",
"required": true,
"pass_condition": "S4.11 requested_template_ids lane received / accepted / rejected main/dev truthdeprecated batchrelease tag retention GitHub-only refs disposition",
"failure_lane": "request_more_evidence",
"awooop_display": "display_per_ref_truth_lane_tracking",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-ref-truth-redacted-evidence-only",
"display_order": 4,
"title": " refs truth evidence refs",
"required": true,
"pass_condition": " repo snapshot path SHA metadata pointer tokenprivate URL credentialsecretrepo archivegit objectAPI raw body quarantine",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "display_redacted_evidence_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-ref-truth-no-approval-language",
"display_order": 5,
"title": " refs truth ",
"required": true,
"pass_condition": "使 owner response OK truth sourceretention disposition response refs syncdelete refsforce pushtag rewritebackfill GitHub primary approval",
"failure_lane": "reject_execution_request",
"awooop_display": "display_scope_response_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-ref-truth-audit-metadata-only",
"display_order": 6,
"title": " refs truth audit metadata",
"required": true,
"pass_condition": "AwoooP request shownresponse received metadatatemplate idlanereporef name patternowner role/teamredacted evidence refs outcome lane token valuesecret valueprivate clone URL credentialrepo archivegit object packAPI raw body payload",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "display_audit_metadata_only",
"execution_authorized": false,
"not_approval": true
}
],
"intake_preflight_checks": [
{
"check_id": "preflight-known-ref-truth-lane",
"display_order": 1,
"title": " refs truth lane",
"required": true,
"pass_condition": "`template_id` `lane` S4.11 refs truth templates repo/ref branch/tag GitHub-only/backfill candidate ",
"failure_lane": "request_owner_correction",
"awooop_display": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "preflight-required-ref-truth-owner-fields",
"display_order": 2,
"title": "refs truth ",
"required": true,
"pass_condition": " response owner role/teamdecisiondecision_reasonreporef scopetruth source disposition deploy/artifact/rollback/workflow owner evidence_refs",
"failure_lane": "request_more_evidence",
"awooop_display": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "preflight-allowed-ref-truth-decision",
"display_order": 3,
"title": "refs truth decision ",
"required": true,
"pass_condition": "`decision` response template acceptable_decisions OK accepted",
"failure_lane": "request_owner_correction",
"awooop_display": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "preflight-ref-truth-redacted-evidence-only",
"display_order": 4,
"title": " refs truth evidence refs",
"required": true,
"pass_condition": "`evidence_refs` repo snapshot SHA owner metadata pointer tokensecretcookiesessionprivate keyprivate clone URL credentialrepo archivegit object packAPI raw body ",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "quarantine_sensitive_payload",
"execution_authorized": false
},
{
"check_id": "preflight-no-refs-execution-request",
"display_order": 5,
"title": " refs ",
"required": true,
"pass_condition": "response fetchpush refsdelete refsforce pushmirror synctag rewritebranch rewritebackfillGitHub primary switchrepo creationvisibility changeworkflow/secret/runner Kali scan runtime action",
"failure_lane": "reject_execution_request",
"awooop_display": "reject_execution_request",
"execution_authorized": false
},
{
"check_id": "preflight-all-five-ref-truth-lanes-before-accepted",
"display_order": 6,
"title": " refs truth templates",
"required": true,
"pass_condition": "S4.11 accepted response templates owner response waitingready_for_owner_reviewrequest_more_evidence quarantine",
"failure_lane": "keep_waiting_owner_response",
"awooop_display": "ready_for_owner_review",
"execution_authorized": false
}
],
"response_templates": [
{
"template_id": "response-main-branch-truth-source",
"lane": "main_truth_required",
"affected_repos": [
"wooo/awoooi -> owenhytsai/awoooi",
"wooo/clawbot-v5 -> owenhytsai/clawbot-v5",
"wooo/wooo-aiops -> owenhytsai/wooo-aiops"
],
"risk": "HIGH",
"covered_item_count": 3,
"requested_owner_decision": " main branch deploy marker ownerproduction source owner rollback point owner refs action disabled",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo",
"ref_name",
"truth_source_or_sha",
"deploy_marker_owner",
"production_source_owner",
"rollback_point_owner",
"evidence_refs"
],
"acceptable_decisions": [
"choose_gitea_as_truth_candidate",
"choose_github_as_truth_candidate",
"choose_specific_sha_as_truth_candidate",
"hold_pending_deploy_marker",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/source-control-ref-truth-classification.snapshot.json",
"docs/security/source-control-ref-detail-diff.snapshot.json",
"docs/security/source-control-primary-readiness-gate.snapshot.json"
],
"acceptance_criteria": [
" repo main branch ",
" deploy markerproduction source rollback point owner owner",
" read-only classification / reconcile / readiness wording refs sync"
],
"rejection_conditions": [
" main branch truth response push refs primary",
" reporef_nametruth_source_or_sha deploy evidence owner",
" tokencredentialprivate URL "
],
"allowed_outputs": [
" `source-control-ref-truth-classification.snapshot.json` read-only owner response ",
" `SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md` owner response ",
" `source-control-primary-readiness-gate.snapshot.json` blocker wording primary_ready_count 0"
],
"execution_authorized": false
},
{
"template_id": "response-active-dev-branch-truth-source",
"lane": "active_branch_truth_required",
"affected_repos": [
"wooo/awoooi -> owenhytsai/awoooi"
],
"risk": "HIGH",
"covered_item_count": 1,
"requested_owner_decision": " `wooo/awoooi` `dev` branch active workflowlegacy branch refs action disabled",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo",
"ref_name",
"workflow_owner",
"branch_disposition",
"evidence_refs"
],
"acceptable_decisions": [
"keep_active_branch_candidate",
"mark_branch_legacy_candidate",
"hold_pending_workflow_owner",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/source-control-ref-truth-classification.snapshot.json",
"docs/security/source-control-reconcile-plan.snapshot.json",
"docs/security/security-approval-review-packet.snapshot.json"
],
"acceptance_criteria": [
" `dev` CI release workflow ",
" legacy candidate",
" workflow owner request_more_evidence owner"
],
"rejection_conditions": [
" `dev` branch",
" workflow owner branch disposition",
" legacy candidate delete approval"
],
"allowed_outputs": [
" `dev` branch read-only disposition ",
" draft reconcile plan blocked reason",
" request_more_evidence lane"
],
"execution_authorized": false
},
{
"template_id": "response-drift-deprecated-candidate-batch",
"lane": "archive_or_deprecate_candidate",
"affected_repos": [
"wooo/awoooi drift/adopt-*"
],
"risk": "LOW",
"covered_item_count": 142,
"requested_owner_decision": " `drift/adopt-*` refs deprecated candidateaudit retention candidate deprecated candidate delete approval",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo",
"ref_pattern_or_ref_list",
"retention_owner",
"audit_or_rollback_use",
"evidence_refs"
],
"acceptable_decisions": [
"mark_deprecated_candidate",
"keep_audit_retention_candidate",
"split_batch_requires_more_evidence",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/source-control-ref-truth-classification.snapshot.json",
"docs/security/source-control-ref-detail-diff.snapshot.json",
"docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md"
],
"acceptance_criteria": [
" owner disposition",
" retention owner owner",
" evidence owner"
],
"rejection_conditions": [
" deprecated candidate delete approval",
"rewriteforce push prune refs",
" audit / rollback / retention "
],
"allowed_outputs": [
" classification deprecated candidate owner response ",
" review checklist",
" refs delete / push / force push "
],
"execution_authorized": false
},
{
"template_id": "response-release-tag-retention",
"lane": "release_tag_missing_on_github",
"affected_repos": [
"wooo/awoooi v7.2.0",
"wooo/awoooi v7.3.0",
"wooo/clawbot-v5 v5.5-sprint1"
],
"risk": "MEDIUM",
"covered_item_count": 3,
"requested_owner_decision": " release tags legacy candidate artifact / deploy owner tag action disabled",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo",
"tag_name",
"artifact_owner",
"deploy_marker_owner",
"retention_disposition",
"evidence_refs"
],
"acceptable_decisions": [
"keep_release_tag_candidate",
"mark_tag_legacy_candidate",
"hold_pending_artifact_owner",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/source-control-ref-truth-classification.snapshot.json",
"docs/security/source-control-ref-detail-diff.snapshot.json",
"docs/security/source-control-primary-rollback-adr.snapshot.json"
],
"acceptance_criteria": [
" tag artifact ownerdeploy marker owner owner",
" legacy candidate ",
" tag pushtag rewrite tag delete"
],
"rejection_conditions": [
" tag",
" artifact owner deploy marker owner",
" tag retention response release approval"
],
"allowed_outputs": [
" release tag review lane",
" rollback ADR evidence gap wording",
" tag action disabled"
],
"execution_authorized": false
},
{
"template_id": "response-github-only-ref-review",
"lane": "github_only_manual_review",
"affected_repos": [
"wooo/wooo-aiops refactor/phase-9.3",
"wooo/wooo-aiops 19 UAT tags"
],
"risk": "MEDIUM",
"covered_item_count": 20,
"requested_owner_decision": " GitHub-only branch / UAT tags legacy candidate owner backfill candidate push",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo",
"ref_name_or_pattern",
"github_only_owner",
"audit_owner",
"backfill_candidate_reason",
"evidence_refs"
],
"acceptable_decisions": [
"keep_github_only_candidate",
"backfill_to_gitea_candidate",
"mark_legacy_github_only_candidate",
"hold_pending_audit_owner",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/source-control-ref-truth-classification.snapshot.json",
"docs/security/source-control-ref-detail-diff.snapshot.json",
"docs/security/SOURCE-CONTROL-WOOO-AIOPS-SNAPSHOT.md"
],
"acceptance_criteria": [
" GitHub-only refs owner owner",
" backfill_to_gitea_candidate push",
" GitHub primary readiness blocked"
],
"rejection_conditions": [
" backfill candidate push approval",
" GitHub-only refs Gitea",
" GitHub-only owner audit owner"
],
"allowed_outputs": [
" GitHub-only review lane",
" draft reconcile plan candidate wording",
" refs action disabled"
],
"execution_authorized": false
}
],
"acceptance_checks": [
{
"check_id": "maps_to_known_ref_truth_lane",
"title": " refs truth lane",
"required": true,
"pass_condition": "`lane` source_control_ref_truth_classification_v1 lanemain_truth_requiredactive_branch_truth_requiredarchive_or_deprecate_candidaterelease_tag_missing_on_github github_only_manual_review",
"failure_lane": "reject_unknown_ref_truth_lane",
"execution_authorized": false
},
{
"check_id": "decision_value_allowed",
"title": "",
"required": true,
"pass_condition": "`decision` response template acceptable_decisions ",
"failure_lane": "request_owner_correction",
"execution_authorized": false
},
{
"check_id": "repo_and_ref_scope_present",
"title": "repo ref scope ",
"required": true,
"pass_condition": " repo ref_nametag_nameref_pattern ref_list",
"failure_lane": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "truth_source_or_disposition_present",
"title": " disposition ",
"required": true,
"pass_condition": "main/dev lane truth source workflow dispositiondeprecated/release/GitHub-only lane retentionlegacybackfill candidate disposition",
"failure_lane": "keep_ref_truth_blocked",
"execution_authorized": false
},
{
"check_id": "deploy_or_artifact_evidence_present_for_high_risk",
"title": " ref deploy artifact owner",
"required": true,
"pass_condition": "main branch release tag response deploy markerproduction sourcerollback point artifact owner hold/unknown",
"failure_lane": "request_deploy_or_artifact_owner",
"execution_authorized": false
},
{
"check_id": "no_refs_action_requested",
"title": " refs ",
"required": true,
"pass_condition": " fetchpush refsdelete refsforce pushmirror synctag rewritebranch rewrite prune refs",
"failure_lane": "reject_refs_action",
"execution_authorized": false
},
{
"check_id": "no_primary_or_repo_change_requested",
"title": " primary repo ",
"required": true,
"pass_condition": " GitHub primary repo visibility Gitea Gitea Gitea",
"failure_lane": "reject_primary_or_repo_action",
"execution_authorized": false
},
{
"check_id": "secret_values_absent",
"title": " secret value",
"required": true,
"pass_condition": "`evidence_refs` repo snapshot owner metadata tokencredentialsecret valueprivate keydeploy key valuecookie session",
"failure_lane": "quarantine_sensitive_payload",
"execution_authorized": false
}
],
"rejection_rules": [
" token valuePATcookiesessionCSRF tokenprivate keydeploy key value partial credential ",
" fetchpush refsdelete refsforce pushmirror synctag rewritebranch rewrite prune refs ",
" GitHub primary GitHub primary readiness ",
" repo repo visibility remote URL ",
" deprecated_candidate delete approval ",
" backfill_to_gitea_candidate push approval ",
" repo/ref/lane accepted",
"main / release high-risk deploy markerartifactrollback owner accepted",
" Gitea ",
" URL mirror quarantine"
],
"allowed_outputs": [
" `source-control-ref-truth-classification.snapshot.json` read-only owner response ",
" `SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md` owner response ",
" `source-control-reconcile-plan.snapshot.json` draft wording",
" `source-control-primary-readiness-gate.snapshot.json` blocker wording",
" request_more_evidence / quarantine lane",
" `github_primary_ready_count=0` refs / repo / primary execution flags false"
],
"forbidden_actions": [
"fetch refs",
"push refs",
"delete refs",
"force push",
"rewrite branch tag",
" GitHub primary",
" GitHub repo visibility",
" Gitea repo",
" secret valuetoken valueprivate keycookiesession deploy key value",
" AwoooP execution action button"
]
}