Files
awoooi/docs/security/gitea-inventory-owner-attestation-response.snapshot.json
Your Name c9d0eb69df
Some checks failed
CD Pipeline / tests (push) Successful in 1m30s
Code Review / ai-code-review (push) Successful in 14s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
feat(security): 綁定 S4.9 metadata intake 封套
2026-06-11 18:01:57 +08:00

1506 lines
57 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": "gitea_inventory_owner_attestation_response_v1",
"status": "draft_waiting_owner_response",
"date": "2026-06-04",
"mode": "owner_response_intake_only",
"runtime_execution_authorized": false,
"source_contract": "gitea_inventory_coverage_attestation_v1",
"target_contract": "gitea_repo_inventory_v1",
"source_indexes": [
"docs/security/gitea-inventory-coverage-attestation.snapshot.json",
"docs/security/GITEA-INVENTORY-COVERAGE-ATTESTATION.md",
"docs/security/gitea-authenticated-inventory-export-request.snapshot.json",
"docs/security/gitea-authenticated-inventory-import-acceptance.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",
"required_response_item_count": 5,
"received_response_count": 0,
"accepted_response_count": 0,
"rejected_response_count": 0,
"response_template_count": 5,
"owner_response_template_status_count": 5,
"owner_response_audit_event_template_count": 3,
"owner_response_redaction_example_count": 5,
"owner_response_display_section_count": 8,
"owner_response_request_packet_count": 1,
"owner_response_collection_check_count": 6,
"owner_response_intake_handoff_queue_count": 5,
"owner_response_intake_handoff_queue_ready_count": 0,
"owner_response_intake_handoff_queue_received_count": 0,
"owner_response_intake_handoff_queue_accepted_count": 0,
"owner_response_intake_handoff_queue_runtime_gate_count": 0,
"owner_response_intake_handoff_queue_raw_payload_allowed": false,
"owner_response_intake_handoff_queue_action_buttons_allowed": false,
"owner_response_metadata_intake_field_count": 6,
"owner_response_metadata_intake_required_count": 6,
"owner_response_metadata_intake_filled_count": 0,
"owner_response_metadata_intake_received_count": 0,
"owner_response_metadata_intake_accepted_count": 0,
"owner_response_metadata_intake_runtime_gate_count": 0,
"owner_response_metadata_intake_redacted_ref_required": true,
"owner_response_metadata_intake_raw_payload_allowed": false,
"owner_response_metadata_intake_secret_plaintext_allowed": false,
"owner_response_metadata_intake_action_buttons_allowed": false,
"intake_preflight_check_count": 6,
"intake_outcome_lane_count": 5,
"acceptance_check_count": 8,
"rejection_rule_count": 10,
"token_value_collection_allowed": false,
"raw_secret_allowed": false,
"repo_write_allowed": false,
"refs_sync_allowed": false,
"github_primary_switch_authorized": false,
"action_buttons_allowed": false
},
"response_templates": [
{
"template_id": "response-public-only-vs-local-gitea-gap",
"attestation_item_id": "public_only_vs_local_gitea_gap",
"title": "public-only 與本機 Gitea remote 覆蓋缺口回覆",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_repos",
"evidence_refs",
"followup_owner"
],
"acceptable_decisions": [
"in_scope",
"out_of_scope",
"legacy_archived",
"external_system",
"inaccessible_requires_followup",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/gitea-repo-inventory.snapshot.json",
"docs/security/local-git-remote-inventory.snapshot.json"
],
"acceptance_criteria": [
"必須逐項說明 `wooo/clawbot-v5` 與 `wooo/wooo-aiops` 是否屬本輪 inventory / migration scope",
"若標示 out_of_scope、legacy_archived 或 external_system必須附 owner 理由",
"若標示 in_scope必須指定後續 repo owner 與 GitHub target review owner"
],
"rejection_conditions": [
"只回覆整體同意但沒有逐 repo decision",
"要求直接建立 GitHub repo、sync refs 或切 GitHub primary",
"貼出 token、credential、私有 clone URL 或未脫敏截圖"
],
"allowed_outputs": [
"更新 attestation snapshot 的 read-only decision 欄位",
"更新 migration matrix 與 decision table 的 scope 欄位",
"維持 gitea_repo_inventory_v1.status=partial"
],
"execution_authorized": false
},
{
"template_id": "response-org-user-endpoint-identity",
"attestation_item_id": "org_user_endpoint_identity",
"title": "Gitea `wooo` org/user endpoint 身分回覆",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"canonical_namespace",
"evidence_refs",
"followup_owner"
],
"acceptable_decisions": [
"in_scope",
"out_of_scope",
"inaccessible_requires_followup",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/gitea-org-repo-inventory-blocked.snapshot.json",
"docs/security/gitea-authenticated-inventory-export-request.snapshot.json"
],
"acceptance_criteria": [
"必須說明 `wooo` 在 Gitea 中應以 user、org 或兩者盤點",
"必須標示 canonical endpoint 或要求管理者補脫敏 evidence",
"不得把 org endpoint 404 自動解釋為不存在 private/internal repos"
],
"rejection_conditions": [
"只說 public API 查不到就當完成",
"要求使用 write/admin token",
"提供未脫敏 API response 或 token value"
],
"allowed_outputs": [
"更新 Gitea inventory query mode 的待判定說明",
"更新 AwoooP review lane 的 endpoint scope 顯示",
"維持 read-only / approval-only 狀態"
],
"execution_authorized": false
},
{
"template_id": "response-internal-110-adjacent-scope",
"attestation_item_id": "internal_110_adjacent_scope",
"title": "110 內部相鄰來源 scope 回覆",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_sources",
"evidence_refs",
"followup_owner"
],
"acceptable_decisions": [
"in_scope",
"out_of_scope",
"legacy_archived",
"external_system",
"inaccessible_requires_followup",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/git-remote-refs-bitan-tsenyang.snapshot.json",
"docs/security/git-remote-refs-wooo-infra-config.snapshot.json",
"docs/security/local-git-remote-inventory.snapshot.json"
],
"acceptance_criteria": [
"必須逐項說明 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入本輪 scope",
"若屬外部或 legacy必須指定後續 owner 或排除理由",
"若屬 in_scope必須標示是否需要後續 refs truth / workflow-secret parity"
],
"rejection_conditions": [
"用單一句話排除所有 110 adjacent sources",
"把內部相鄰來源直接推到 GitHub primary readiness",
"要求 fetch/push/delete refs"
],
"allowed_outputs": [
"更新 source-control migration matrix 的 scope 欄位",
"更新 primary readiness blocker 說明",
"建立 request_more_evidence lane"
],
"execution_authorized": false
},
{
"template_id": "response-repo-owner-canonical-scope",
"attestation_item_id": "repo_owner_canonical_scope",
"title": "repo owner / canonical / GitHub target scope 回覆",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo_owner",
"canonical_source",
"github_target_candidate",
"visibility_review_owner",
"evidence_refs"
],
"acceptable_decisions": [
"in_scope",
"out_of_scope",
"external_system",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/github-target-decision.snapshot.json",
"docs/security/source-control-approval-board.snapshot.json",
"docs/security/local-repo-canonical-ewoooc-momo.snapshot.json"
],
"acceptance_criteria": [
"每個 in-scope repo 必須有 owner、canonical source、GitHub target candidate 與 visibility review owner",
"若 GitHub target 目前 not_found_or_private必須維持 pending approval不得自動建立",
"若 canonical 關係未定,必須標示 unknown_requires_more_evidence"
],
"rejection_conditions": [
"把 not_found_or_private 當成可建立 repo 的批准",
"沒有 visibility / owner 責任人",
"要求修改 repo visibility 或建立 GitHub repo"
],
"allowed_outputs": [
"更新 canonical decision table",
"更新 GitHub target review package",
"更新 primary readiness gate 的 owner/canonical blocker"
],
"execution_authorized": false
},
{
"template_id": "response-legacy-or-inaccessible-disposition",
"attestation_item_id": "legacy_or_inaccessible_repo_disposition",
"title": "legacy / inaccessible repo disposition 回覆",
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_repos_or_sources",
"disposition",
"evidence_refs",
"followup_owner"
],
"acceptable_decisions": [
"out_of_scope",
"legacy_archived",
"external_system",
"inaccessible_requires_followup",
"unknown_requires_more_evidence"
],
"minimum_evidence_refs": [
"docs/security/gitea-authenticated-inventory-import-acceptance.snapshot.json",
"docs/security/source-control-primary-readiness-gate.snapshot.json"
],
"acceptance_criteria": [
"每個 legacy / inaccessible / external repo 必須有 disposition 與 owner 理由",
"inaccessible_requires_followup 必須指定下一個 evidence owner",
"unknown_requires_more_evidence 必須維持 blocker不得進 primary readiness"
],
"rejection_conditions": [
"沒有列出受影響 repo 或 source",
"把未出現在 payload 的 repo 自動視為已完成 inventory",
"要求 archive/delete/disable Gitea repo"
],
"allowed_outputs": [
"更新 legacy / inaccessible review lane",
"更新 status rollup 的 blocked reason",
"維持 source-control primary readiness blocker"
],
"execution_authorized": false
}
],
"owner_response_template_statuses": [
{
"template_id": "response-public-only-vs-local-gitea-gap",
"attestation_item_id": "public_only_vs_local_gitea_gap",
"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 需逐項判定 `wooo/clawbot-v5` 與 `wooo/wooo-aiops` 是否屬本輪 inventory / migration scope並只引用脫敏 evidence refs。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_without_owner_response",
"mark_accepted_without_acceptance_checks",
"execute_inventory",
"create_github_repo",
"sync_refs",
"switch_github_primary"
]
},
{
"template_id": "response-org-user-endpoint-identity",
"attestation_item_id": "org_user_endpoint_identity",
"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` 在 Gitea 中應以 user、org 或兩者盤點,且不得把 404 當成 private/internal repo 不存在。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_without_owner_response",
"mark_accepted_without_acceptance_checks",
"store_token_value",
"write_gitea_repo",
"sync_refs",
"switch_github_primary"
]
},
{
"template_id": "response-internal-110-adjacent-scope",
"attestation_item_id": "internal_110_adjacent_scope",
"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 需逐項判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入本輪 scope。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_without_owner_response",
"mark_accepted_without_acceptance_checks",
"create_github_repo",
"sync_refs",
"delete_refs",
"switch_github_primary"
]
},
{
"template_id": "response-repo-owner-canonical-scope",
"attestation_item_id": "repo_owner_canonical_scope",
"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 需為 in-scope repo 指定 owner、canonical source、GitHub target candidate 與 visibility review owner。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_without_owner_response",
"mark_accepted_without_acceptance_checks",
"create_github_repo",
"change_visibility",
"sync_refs",
"switch_github_primary"
]
},
{
"template_id": "response-legacy-or-inaccessible-disposition",
"attestation_item_id": "legacy_or_inaccessible_repo_disposition",
"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 需對 legacy、inaccessible 或 external repo 留下 disposition、理由與後續 owner。",
"awooop_display_mode": "display_template_status_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_without_owner_response",
"mark_accepted_without_acceptance_checks",
"archive_repo",
"delete_repo",
"disable_gitea_repo",
"switch_github_primary"
]
}
],
"owner_response_intake_handoff_queue": [
{
"handoff_lane_id": "publicGap",
"display_order": 1,
"source_template_id": "response-public-only-vs-local-gitea-gap",
"template_label": "D1",
"handoff_status": "waiting_owner_response_metadata",
"required_owner_field_count": 6,
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_repos",
"evidence_refs",
"followup_owner"
],
"current_blocker": "缺少 public-only / local gap 的逐 repo owner 判定。",
"next_safe_step": "只等待負責人提供脫敏 metadata pointer不得收 raw response 或啟動 repo / refs 動作。",
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_handoff_queue",
"mark_accepted_from_handoff_queue",
"store_owner_response_raw_body",
"create_github_repo",
"sync_refs",
"switch_github_primary"
]
},
{
"handoff_lane_id": "namespaceIdentity",
"display_order": 2,
"source_template_id": "response-org-user-endpoint-identity",
"template_label": "D2",
"handoff_status": "waiting_owner_response_metadata",
"required_owner_field_count": 6,
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"canonical_namespace",
"evidence_refs",
"followup_owner"
],
"current_blocker": "缺少 Gitea `wooo` user / org canonical namespace 判定。",
"next_safe_step": "只等待負責人提供 canonical namespace 與脫敏 evidence ref不得使用 write/admin token。",
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_handoff_queue",
"mark_accepted_from_handoff_queue",
"store_owner_response_raw_body",
"store_token_value",
"write_gitea_repo",
"switch_github_primary"
]
},
{
"handoff_lane_id": "adjacentScope",
"display_order": 3,
"source_template_id": "response-internal-110-adjacent-scope",
"template_label": "D3",
"handoff_status": "waiting_owner_response_metadata",
"required_owner_field_count": 6,
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_sources",
"evidence_refs",
"followup_owner"
],
"current_blocker": "缺少 110 相鄰來源逐項 scope 判定。",
"next_safe_step": "只等待 owner 標示來源是否 in-scope、legacy、external 或需補證;不得 fetch、push 或刪 refs。",
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_handoff_queue",
"mark_accepted_from_handoff_queue",
"store_owner_response_raw_body",
"fetch_refs",
"delete_refs",
"switch_github_primary"
]
},
{
"handoff_lane_id": "canonicalOwner",
"display_order": 4,
"source_template_id": "response-repo-owner-canonical-scope",
"template_label": "D4",
"handoff_status": "waiting_owner_response_metadata",
"required_owner_field_count": 8,
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"repo_owner",
"canonical_source",
"github_target_candidate",
"visibility_review_owner",
"evidence_refs"
],
"current_blocker": "缺少 repo owner、canonical source、GitHub target candidate 與 visibility review owner。",
"next_safe_step": "只等待負責人補齊 owner / canonical / visibility metadata不得建立 GitHub repo 或改 visibility。",
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_handoff_queue",
"mark_accepted_from_handoff_queue",
"store_owner_response_raw_body",
"create_github_repo",
"change_repo_visibility",
"switch_github_primary"
]
},
{
"handoff_lane_id": "legacyDisposition",
"display_order": 5,
"source_template_id": "response-legacy-or-inaccessible-disposition",
"template_label": "D5",
"handoff_status": "waiting_owner_response_metadata",
"required_owner_field_count": 7,
"required_owner_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_repos_or_sources",
"disposition",
"evidence_refs",
"followup_owner"
],
"current_blocker": "缺少 legacy、inaccessible 或 external repo disposition 與後續 owner。",
"next_safe_step": "只等待負責人補 disposition metadata不得 archive、delete 或停用 Gitea repo。",
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_handoff_queue",
"mark_accepted_from_handoff_queue",
"store_owner_response_raw_body",
"archive_repo",
"delete_repo",
"disable_gitea_repo"
]
}
],
"owner_response_metadata_intake_envelope": [
{
"field_id": "ownerRoleTeam",
"display_order": 1,
"source_required_field": "owner_role_or_team",
"field_label": "負責人角色 / 團隊",
"field_status": "waiting_owner_response_metadata",
"intake_mode": "redacted_metadata_only",
"required": true,
"filled_count": 0,
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"redacted_reference_required": true,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_metadata_envelope",
"mark_accepted_from_metadata_envelope",
"store_owner_response_raw_body",
"store_secret_value"
]
},
{
"field_id": "decision",
"display_order": 2,
"source_required_field": "decision",
"field_label": "判定",
"field_status": "waiting_owner_response_metadata",
"intake_mode": "controlled_value_only",
"required": true,
"filled_count": 0,
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"redacted_reference_required": true,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_metadata_envelope",
"mark_accepted_from_metadata_envelope",
"override_allowed_decisions",
"open_runtime_gate"
]
},
{
"field_id": "decisionReason",
"display_order": 3,
"source_required_field": "decision_reason",
"field_label": "判定理由",
"field_status": "waiting_owner_response_metadata",
"intake_mode": "redacted_metadata_only",
"required": true,
"filled_count": 0,
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"redacted_reference_required": true,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_metadata_envelope",
"mark_accepted_from_metadata_envelope",
"store_owner_response_raw_body",
"treat_reason_as_approval"
]
},
{
"field_id": "affectedScope",
"display_order": 4,
"source_required_field": "affected_scope",
"field_label": "受影響範圍",
"field_status": "waiting_owner_response_metadata",
"intake_mode": "scope_pointer_only",
"required": true,
"filled_count": 0,
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"redacted_reference_required": true,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_metadata_envelope",
"mark_accepted_from_metadata_envelope",
"create_or_delete_repo",
"sync_refs"
]
},
{
"field_id": "redactedEvidenceRefs",
"display_order": 5,
"source_required_field": "evidence_refs",
"field_label": "脫敏證據參照",
"field_status": "waiting_owner_response_metadata",
"intake_mode": "redacted_reference_only",
"required": true,
"filled_count": 0,
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"redacted_reference_required": true,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_metadata_envelope",
"mark_accepted_from_metadata_envelope",
"store_unredacted_evidence",
"store_secret_value"
]
},
{
"field_id": "followupOwner",
"display_order": 6,
"source_required_field": "followup_owner",
"field_label": "後續負責人",
"field_status": "waiting_owner_response_metadata",
"intake_mode": "owner_pointer_only",
"required": true,
"filled_count": 0,
"received_response_count": 0,
"accepted_response_count": 0,
"runtime_gate_count": 0,
"redacted_reference_required": true,
"raw_payload_allowed": false,
"secret_plaintext_allowed": false,
"action_buttons_allowed": false,
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"mark_received_from_metadata_envelope",
"mark_accepted_from_metadata_envelope",
"assign_runtime_owner_without_review",
"open_runtime_gate"
]
}
],
"owner_response_audit_event_templates": [
{
"event_template_id": "audit-owner-response-request-shown",
"display_order": 1,
"event_status": "template_only_not_emitted",
"trigger": "AwoooP 顯示 S4.9 owner response request packet 時。",
"purpose": "只記錄 request packet 已可顯示或已顯示的 metadata不代表 owner response 已收到。",
"allowed_metadata_fields": [
"event_template_id",
"request_id",
"requested_template_ids",
"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",
"db_dump",
"git_object_pack",
"repo_archive",
"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-owner-response-received-metadata",
"display_order": 2,
"event_status": "template_only_not_emitted",
"trigger": "Owner 提供 S4.9 response metadata pointer 時。",
"purpose": "只記錄 response 已收到的脫敏 metadata pointer不得保存 response 原文或敏感 payload。",
"allowed_metadata_fields": [
"event_template_id",
"template_id",
"attestation_item_id",
"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",
"db_dump",
"git_object_pack",
"repo_archive",
"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-owner-response-outcome-classified",
"display_order": 3,
"event_status": "template_only_not_emitted",
"trigger": "AwoooP 依 collection checks、preflight checks 與 outcome lanes 分類 S4.9 response 時。",
"purpose": "只記錄分類結果與下一步提示;不得把 outcome lane 當成 approval 或 execution authorization。",
"allowed_metadata_fields": [
"event_template_id",
"template_id",
"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",
"db_dump",
"git_object_pack",
"repo_archive",
"repo_or_refs_execution_request",
"workflow_secret_runner_execution_request"
],
"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-existing-doc-ref",
"display_order": 1,
"example_status": "template_example_only",
"category": "repo_existing_document_reference",
"safe_response_shape": [
"template_id=response-public-only-vs-local-gitea-gap",
"decision=in_scope",
"evidence_refs=[docs/security/gitea-repo-inventory.snapshot.json, docs/security/local-git-remote-inventory.snapshot.json]",
"decision_reason=引用既有 snapshot 的 repo slug 與 coverage gap不貼 API raw body"
],
"required_redactions": [
"外部 evidence 只保留 repo 內文件路徑或 snapshot 路徑",
"若引用外部清冊,先轉為 redacted metadata pointer",
"不得貼完整 API response body"
],
"forbidden_raw_values": [
"token_value",
"secret_value",
"private_clone_url_credential",
"api_response_raw_body"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
},
{
"example_id": "redaction-owner-decision-metadata",
"display_order": 2,
"example_status": "template_example_only",
"category": "owner_decision_metadata",
"safe_response_shape": [
"owner_role_or_team=migration-owner",
"decision=unknown_requires_more_evidence",
"followup_owner=security-commander",
"evidence_refs=[docs/security/GITEA-AUTHENTICATED-INVENTORY-EXPORT-REQUEST.md]"
],
"required_redactions": [
"只寫角色或團隊不寫個人密碼、session 或 API token",
"decision_reason 不得包含可重播操作步驟或憑證",
"followup_owner 只代表責任人,不代表 approval"
],
"forbidden_raw_values": [
"password",
"cookie",
"session",
"one_time_code",
"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-private-url-metadata",
"display_order": 3,
"example_status": "template_example_only",
"category": "private_url_or_remote_metadata",
"safe_response_shape": [
"affected_repos_or_sources=[wooo/clawbot-v5]",
"source_host=gitea-local",
"credential_present=true",
"credential_value_stored=false"
],
"required_redactions": [
"完整 clone URL 只能保留 host、namespace、repo slug 與 credential_present=true/false",
"若 URL 含 userinfo、query token 或 header必須移除值",
"不得把 private URL 當成可 fetch 或可 push 指令"
],
"forbidden_raw_values": [
"https_userinfo_credential",
"query_token",
"authorization_header",
"ssh_private_key",
"git_remote_with_secret"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
},
{
"example_id": "redaction-api-export-summary",
"display_order": 4,
"example_status": "template_example_only",
"category": "api_or_admin_export_summary",
"safe_response_shape": [
"export_source=read_only_token_api_or_redacted_admin_export",
"repo_count_observed=number_only",
"token_present=true",
"token_value_stored=false"
],
"required_redactions": [
"只保留 count、source type、redaction status 與 evidence ref",
"API request/response header、body 與 token value 不得保存",
"DB dump、git object pack 與 repo archive 必須拒收或隔離"
],
"forbidden_raw_values": [
"api_request_header",
"api_response_raw_body",
"db_dump",
"git_object_pack",
"repo_archive"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
},
{
"example_id": "redaction-quarantine-pointer",
"display_order": 5,
"example_status": "template_example_only",
"category": "uncertain_sensitive_payload",
"safe_response_shape": [
"collection_status=quarantine_sensitive_payload",
"quarantine_reason=疑似含敏感值,尚未人工脫敏",
"raw_payload_stored_in_repo=false",
"next_owner_action=request_redacted_metadata_pointer"
],
"required_redactions": [
"不確定是否含敏感值時先產生 quarantine pointer",
"只留下原因、來源類型、責任 owner 與下一步,不留下原文",
"解除 quarantine 前不得更新 received / accepted count"
],
"forbidden_raw_values": [
"owner_response_raw_body",
"secret_screenshot",
"credential_file",
"execution_request_payload",
"unredacted_export"
],
"stored_raw_payload_allowed": false,
"awooop_display_mode": "display_redaction_example_only",
"execution_authorized": false,
"not_approval": true
}
],
"owner_response_display_sections": [
{
"section_id": "display-owner-response-summary",
"display_order": 1,
"section_status": "display_contract_only",
"source_field": "summary",
"purpose": "顯示 owner response 仍為 waiting、received/accepted/rejected 皆為 0以及所有 write / primary / action button flags 皆為 false。",
"allowed_ui_actions": [
"display_counts",
"display_false_flags",
"display_waiting_state"
],
"forbidden_ui_actions": [
"mark_received",
"mark_accepted",
"enable_action_button"
],
"execution_authorized": false,
"not_approval": true
},
{
"section_id": "display-owner-response-request-packet",
"display_order": 2,
"section_status": "display_contract_only",
"source_field": "owner_response_request_packet",
"purpose": "顯示 owner 需要回覆的五個 templates、允許欄位、evidence ref rules 與 forbidden payloads。",
"allowed_ui_actions": [
"display_requested_templates",
"display_allowed_fields",
"display_forbidden_payloads"
],
"forbidden_ui_actions": [
"send_request_as_approval",
"start_inventory",
"sync_refs"
],
"execution_authorized": false,
"not_approval": true
},
{
"section_id": "display-template-status-ledger",
"display_order": 3,
"section_status": "display_contract_only",
"source_field": "owner_response_template_statuses",
"purpose": "逐 template 顯示 waiting_owner_response、request_ready_not_sent 與 0/0/0 計數。",
"allowed_ui_actions": [
"display_per_template_status",
"display_next_owner_action",
"display_zero_counts"
],
"forbidden_ui_actions": [
"treat_request_ready_as_sent",
"accept_partial_template_response",
"advance_s4_13_candidate"
],
"execution_authorized": false,
"not_approval": true
},
{
"section_id": "display-audit-event-templates",
"display_order": 4,
"section_status": "display_contract_only",
"source_field": "owner_response_audit_event_templates",
"purpose": "顯示 request shown、response metadata received 與 outcome classified 的脫敏 audit template且 emitted count 仍為 0。",
"allowed_ui_actions": [
"display_audit_template_ids",
"display_allowed_metadata_fields",
"display_emitted_count_zero"
],
"forbidden_ui_actions": [
"store_raw_payload",
"emit_production_audit_event",
"treat_audit_template_as_response"
],
"execution_authorized": false,
"not_approval": true
},
{
"section_id": "display-redaction-examples",
"display_order": 5,
"section_status": "display_contract_only",
"source_field": "owner_response_redaction_examples",
"purpose": "顯示 owner 回覆時可用的脫敏 evidence 形狀與 forbidden raw values。",
"allowed_ui_actions": [
"display_safe_response_shape",
"display_required_redactions",
"display_forbidden_raw_values"
],
"forbidden_ui_actions": [
"store_example_as_response",
"store_raw_payload",
"treat_example_as_ingestion"
],
"execution_authorized": false,
"not_approval": true
},
{
"section_id": "display-collection-checks",
"display_order": 6,
"section_status": "display_contract_only",
"source_field": "owner_response_collection_checks",
"purpose": "顯示 request / received / accepted 必須分離,以及只收 read-only markdown、redacted metadata pointer 或補證請求。",
"allowed_ui_actions": [
"display_collection_checklist",
"display_failure_lane",
"display_not_approval"
],
"forbidden_ui_actions": [
"treat_request_sent_as_received",
"treat_owner_wording_as_approval",
"enable_runtime_gate"
],
"execution_authorized": false,
"not_approval": true
},
{
"section_id": "display-preflight-and-outcome-lanes",
"display_order": 7,
"section_status": "display_contract_only",
"source_field": "intake_preflight_checks,intake_outcome_lanes",
"purpose": "顯示可審、補證、隔離、拒收或等待的只讀分類結果,不變更 response count。",
"allowed_ui_actions": [
"display_preflight_checks",
"display_outcome_lanes",
"display_waiting_state"
],
"forbidden_ui_actions": [
"mark_preflight_pass_as_accepted",
"execute_inventory",
"switch_github_primary"
],
"execution_authorized": false,
"not_approval": true
},
{
"section_id": "display-acceptance-and-rejection-rules",
"display_order": 8,
"section_status": "display_contract_only",
"source_field": "acceptance_checks,rejection_rules,forbidden_actions",
"purpose": "顯示接受前需要通過的規則、拒收條件與仍禁止事項。",
"allowed_ui_actions": [
"display_acceptance_checks",
"display_rejection_rules",
"display_forbidden_actions"
],
"forbidden_ui_actions": [
"auto_accept_response",
"write_gitea_repo",
"create_github_repo"
],
"execution_authorized": false,
"not_approval": true
}
],
"owner_response_request_packet": {
"request_id": "s4_9_gitea_owner_attestation_response_request",
"display_status": "ready_to_request_owner_response",
"requested_packet": "docs/security/GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE.md",
"required_response_item_count": 5,
"requested_template_ids": [
"response-public-only-vs-local-gitea-gap",
"response-org-user-endpoint-identity",
"response-internal-110-adjacent-scope",
"response-repo-owner-canonical-scope",
"response-legacy-or-inaccessible-disposition"
],
"owner_instruction_summary": "請 owner 只依 S4.9 五個 templates 回覆 scope / canonical / disposition 判定,並只引用脫敏 evidence refs不要貼 token、secret、DB dump、git object 或任何可執行 payload。",
"allowed_response_fields": [
"owner_role_or_team",
"decision",
"decision_reason",
"affected_repos_or_sources_or_namespace",
"canonical_source_or_namespace",
"github_target_candidate",
"visibility_review_owner",
"evidence_refs",
"followup_owner"
],
"evidence_ref_rules": [
"只允許 repo 內既有文件或 snapshot 路徑",
"owner 外部 evidence 必須先脫敏並只提供 metadata pointer",
"不得提供 token value、secret value、private clone URL credential、cookie、session 或截圖中的敏感值",
"不確定是否含敏感值時先走 quarantine不得直接貼入 response"
],
"forbidden_payloads": [
"token_value",
"secret_value",
"private_key",
"cookie_or_session",
"db_dump",
"git_object_pack",
"repo_archive",
"write_or_admin_api_request",
"repo_or_refs_execution_request",
"workflow_secret_runner_execution_request"
],
"allowed_submission_modes": [
"read_only_markdown_response",
"redacted_metadata_pointer",
"request_more_evidence"
],
"awooop_display_mode": "display_owner_response_request_only",
"execution_authorized": false,
"not_approval": true,
"still_forbidden": [
"store_token_value",
"write_gitea_repo",
"create_github_repo",
"sync_refs",
"switch_github_primary"
]
},
"owner_response_collection_checks": [
{
"check_id": "collection-request-packet-displayed",
"display_order": 1,
"title": "已顯示 owner response request packet",
"required": true,
"pass_condition": "AwoooP 必須只顯示 `owner_response_request_packet` 的 5 個 template、允許欄位、脫敏 evidence 規則與禁止 payload不得附加執行要求。",
"failure_lane": "keep_waiting_owner_response",
"awooop_display": "display_request_packet_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-read-only-submission-mode",
"display_order": 2,
"title": "收件模式維持 read-only",
"required": true,
"pass_condition": "owner 只能用 read-only markdown response、redacted metadata pointer 或 request_more_evidence不得提交 token、repo archive、git object pack、DB dump 或 API execution request。",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "display_read_only_submission_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-five-template-tracking",
"display_order": 3,
"title": "五個 templates 分開追蹤",
"required": true,
"pass_condition": "S4.9 五個 requested_template_ids 必須逐項追蹤 received / accepted 狀態;不可用單一整體同意取代逐項 response。",
"failure_lane": "request_more_evidence",
"awooop_display": "display_per_template_tracking",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-redacted-evidence-only",
"display_order": 4,
"title": "只收脫敏 evidence refs",
"required": true,
"pass_condition": "收件內容只能包含 repo 內路徑或脫敏 metadata pointer任何不確定是否含敏感值的資料都先進 quarantine。",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "display_redacted_evidence_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-no-approval-language",
"display_order": 5,
"title": "不得把回覆語意升級成批准",
"required": true,
"pass_condition": "即使 owner response 文字包含同意、OK 或可進行,也只能視為 scope / canonical / disposition response不得視為 inventory、migration、refs sync 或 GitHub primary approval。",
"failure_lane": "reject_execution_request",
"awooop_display": "display_scope_response_only",
"execution_authorized": false,
"not_approval": true
},
{
"check_id": "collection-audit-metadata-only",
"display_order": 6,
"title": "只記錄 audit metadata",
"required": true,
"pass_condition": "AwoooP 只能記錄 request shown、response received、template id、owner role/team、redacted evidence refs 與 outcome lane不得保存 token value、secret value 或可還原 credential 的內容。",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "display_audit_metadata_only",
"execution_authorized": false,
"not_approval": true
}
],
"intake_preflight_checks": [
{
"check_id": "preflight-known-attestation-item",
"display_order": 1,
"title": "回覆必須對應 S4.7 已知 item",
"required": true,
"pass_condition": "`attestation_item_id` 必須是 S4.7 五個 coverage attestation items 之一。",
"failure_lane": "request_owner_correction",
"awooop_display": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "preflight-required-owner-fields",
"display_order": 2,
"title": "必填欄位完整",
"required": true,
"pass_condition": "每筆 response 必須有 owner role/team、decision、decision_reason、受影響 scope、evidence_refs 與 followup_owner。",
"failure_lane": "request_more_evidence",
"awooop_display": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "preflight-allowed-decision",
"display_order": 3,
"title": "decision 在模板允許值內",
"required": true,
"pass_condition": "`decision` 必須落在對應 response template 的 acceptable_decisions。",
"failure_lane": "request_owner_correction",
"awooop_display": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "preflight-redacted-evidence-only",
"display_order": 4,
"title": "只接受脫敏 evidence refs",
"required": true,
"pass_condition": "`evidence_refs` 只能指向 repo 內文件、snapshot 或 owner 提供的脫敏 metadata不得含 token、secret、cookie、session、private key 或私有 URL 憑證。",
"failure_lane": "quarantine_sensitive_payload",
"awooop_display": "quarantine_sensitive_payload",
"execution_authorized": false
},
{
"check_id": "preflight-no-execution-request",
"display_order": 5,
"title": "不得夾帶執行要求",
"required": true,
"pass_condition": "response 不得要求 Gitea/GitHub repo 寫入、repo 建立、visibility 修改、refs sync/delete/force-push、workflow/secret/runner 變更、scan 或 runtime action。",
"failure_lane": "reject_execution_request",
"awooop_display": "reject_execution_request",
"execution_authorized": false
},
{
"check_id": "preflight-all-five-items-before-accepted",
"display_order": 6,
"title": "接受前需覆蓋五個 items",
"required": true,
"pass_condition": "S4.9 要被標示 accepted 前,五個 response templates 都必須收到可驗收 owner response部分回覆只能維持 waiting 或 request_more_evidence。",
"failure_lane": "keep_waiting_owner_response",
"awooop_display": "ready_for_owner_review",
"execution_authorized": false
}
],
"intake_outcome_lanes": [
{
"lane_id": "ready_for_owner_review",
"display_order": 1,
"title": "可進 owner review",
"when": "response 對應已知 S4.7 item、必填欄位完整、decision 在允許值內、evidence refs 已脫敏,且沒有執行要求。",
"awooop_action": "display_ready_for_owner_review",
"allowed_outputs": [
"顯示 ready for owner review",
"把 response 保持在 review packet",
"等待 reviewer 判斷是否進入 acceptance checks"
],
"still_forbidden": [
"mark_response_accepted_without_acceptance_checks",
"execute_inventory",
"create_github_repo",
"sync_refs",
"switch_github_primary"
],
"execution_authorized": false,
"not_approval": true
},
{
"lane_id": "request_more_evidence",
"display_order": 2,
"title": "要求補證",
"when": "response 缺必填欄位、decision 不在允許值內、scope 不明確,或只提供口頭同意 / 不完整 metadata。",
"awooop_action": "display_request_more_evidence",
"allowed_outputs": [
"顯示 request more evidence",
"列出缺少欄位或需修正 decision",
"維持 received / accepted response count 不變"
],
"still_forbidden": [
"accept_partial_response",
"execute_inventory",
"create_github_repo",
"sync_refs",
"switch_github_primary"
],
"execution_authorized": false,
"not_approval": true
},
{
"lane_id": "quarantine_sensitive_payload",
"display_order": 3,
"title": "隔離敏感 payload",
"when": "response 或 evidence refs 含 token、secret、cookie、session、private key、DB dump、git object pack、私有 URL 憑證或未脫敏截圖。",
"awooop_action": "route_to_mirror_quarantine",
"allowed_outputs": [
"顯示 quarantine required",
"只保存隔離 metadata 與 redacted reason",
"要求 owner 重新提供脫敏 evidence"
],
"still_forbidden": [
"store_sensitive_value",
"sanitize_and_accept_in_place",
"execute_inventory",
"sync_refs",
"switch_github_primary"
],
"execution_authorized": false,
"not_approval": true
},
{
"lane_id": "reject_execution_request",
"display_order": 4,
"title": "拒收執行要求",
"when": "response 要求 Gitea/GitHub 寫入、repo 建立、visibility 修改、refs sync/delete/force-push、workflow/secret/runner 變更、scan 或 runtime action。",
"awooop_action": "reject_execution_request",
"allowed_outputs": [
"顯示 rejected execution request",
"保留拒收原因",
"要求 owner 改交只讀 scope / evidence response"
],
"still_forbidden": [
"run_requested_action",
"create_github_repo",
"write_gitea_repo",
"sync_refs",
"switch_github_primary"
],
"execution_authorized": false,
"not_approval": true
},
{
"lane_id": "keep_waiting_owner_response",
"display_order": 5,
"title": "維持等待 owner response",
"when": "五個 response templates 尚未全部收到可驗收 response或部分 response 仍在補證 / 隔離 / 拒收狀態。",
"awooop_action": "keep_waiting_owner_response",
"allowed_outputs": [
"顯示 waiting owner response",
"顯示尚未覆蓋的 S4.7 items",
"維持 S4.13 next_collection_candidate 指向 S4.9"
],
"still_forbidden": [
"mark_s4_9_complete",
"advance_s4_10_acceptance",
"execute_inventory",
"sync_refs",
"switch_github_primary"
],
"execution_authorized": false,
"not_approval": true
}
],
"acceptance_checks": [
{
"check_id": "maps_to_known_s4_7_item",
"title": "回覆對應既有 S4.7 item",
"required": true,
"pass_condition": "`attestation_item_id` 必須對應 S4.7 的 5 個 item 之一",
"failure_lane": "reject_unknown_attestation_item",
"execution_authorized": false
},
{
"check_id": "decision_value_allowed",
"title": "決策值在允許範圍內",
"required": true,
"pass_condition": "`decision` 必須是該 item 的 acceptable_decisions 之一",
"failure_lane": "request_owner_correction",
"execution_authorized": false
},
{
"check_id": "owner_reason_present",
"title": "owner 理由存在",
"required": true,
"pass_condition": "每筆回覆都必須有 `decision_reason`,且能說明 scope 或 disposition",
"failure_lane": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "evidence_refs_redacted",
"title": "evidence refs 已脫敏",
"required": true,
"pass_condition": "`evidence_refs` 只能指向 repo 內文件、snapshot 或 owner 提供的脫敏 metadata不得含 secret value",
"failure_lane": "quarantine_sensitive_payload",
"execution_authorized": false
},
{
"check_id": "affected_scope_explicit",
"title": "受影響 repo / namespace / source 明確",
"required": true,
"pass_condition": "回覆必須列出受影響 repo、namespace 或 110 adjacent source不接受只寫整體同意",
"failure_lane": "request_more_evidence",
"execution_authorized": false
},
{
"check_id": "no_runtime_or_source_control_action",
"title": "不含 runtime 或 source-control 執行要求",
"required": true,
"pass_condition": "回覆只允許更新文件、snapshot、matrix、decision table 與 readiness gate",
"failure_lane": "reject_runtime_or_source_control_action",
"execution_authorized": false
},
{
"check_id": "all_required_items_before_acceptance",
"title": "接受前需覆蓋 5 個 items",
"required": true,
"pass_condition": "要把 S4.7 標示為 accepted 前5 個 required response items 都必須有可驗收 owner response",
"failure_lane": "keep_waiting_owner_response",
"execution_authorized": false
},
{
"check_id": "primary_readiness_still_blocked",
"title": "GitHub primary readiness 仍維持 blocked",
"required": true,
"pass_condition": "即使 owner response 通過,也只能更新 readiness blocker 說明,不得將 primary_ready_count 改為大於 0",
"failure_lane": "reject_primary_cutover_approval",
"execution_authorized": false
}
],
"rejection_rules": [
"回覆含 token value、PAT、cookie、session、CSRF token 或 partial token 時必須拒收。",
"回覆含 webhook secret、repository secret value、runner registration token 或 deploy key private key 時必須拒收。",
"回覆含 private key、DB dump、git object pack、裸 repo tarball 或可還原 credential 的 artifact 時必須拒收。",
"回覆要求使用 write-capable token、admin token 或 secret scope token 時必須拒收。",
"回覆要求建立、刪除、封存或修改 Gitea repo 時必須拒收。",
"回覆要求建立 GitHub repo、修改 visibility、sync refs、delete refs 或 force push 時必須拒收。",
"回覆未逐項對應 S4.7 attestation item 時不得標記 attestation accepted。",
"回覆只提供口頭同意、截圖或不完整 repo metadata 時必須要求補 evidence。",
"回覆把 owner attestation 當成 repo migration approval 或 GitHub primary approval 時必須拒收。",
"任何不確定是否含敏感值的回覆必須先進 mirror quarantine不得人工手改後直接入庫。"
],
"allowed_outputs": [
"更新 `gitea-inventory-coverage-attestation.snapshot.json` 的 read-only owner response 欄位",
"更新 `GITEA-INVENTORY-COVERAGE-ATTESTATION.md` 的已收 / 未收 decision table",
"更新 source-control migration matrix、canonical decision table、primary readiness gate 與 status rollup 的 read-only 欄位",
"把缺口顯示到 AwoooP approval / review lane",
"維持 `gitea_repo_inventory_v1.status=partial`,直到 S4.6 payload 通過且 S4.7 owner response 全部接受"
],
"forbidden_actions": [
"store_token_value",
"store_raw_secret",
"store_cookie_or_session",
"import_gitea_db_dump",
"import_git_object_pack",
"use_write_capable_token",
"write_to_gitea",
"create_gitea_repo",
"delete_or_archive_gitea_repo",
"create_github_repo",
"change_repo_visibility",
"sync_git_refs",
"delete_git_refs",
"force_push",
"switch_github_primary",
"disable_gitea",
"add_action_button",
"execute_scan_or_runtime_change"
]
}