{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:awoooi:source-control-owner-response-validation-rollup-v1", "title": "Source Control Owner Response Validation Rollup v1", "description": "彙整 S4.9 / S4.10 / S4.11 / S4.12 owner response 收件包的只讀驗收狀態。此 schema 不新增主 contract、不授權 runtime execution、不授權 repo / refs / workflow / secret 變更。", "type": "object", "required": [ "schema_version", "status", "date", "mode", "runtime_execution_authorized", "source_contracts", "source_indexes", "summary", "validation_lanes", "cross_packet_acceptance_checks", "quarantine_rules", "readiness_effects", "allowed_outputs", "forbidden_actions" ], "properties": { "schema_version": { "const": "source_control_owner_response_validation_rollup_v1" }, "status": { "type": "string", "enum": ["draft_waiting_owner_responses"] }, "date": { "type": "string" }, "mode": { "type": "string", "enum": ["owner_response_validation_rollup_only"] }, "runtime_execution_authorized": { "type": "boolean", "const": false }, "source_contracts": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "source_indexes": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "summary": { "type": "object", "required": [ "rollup_status", "response_packet_count", "validation_lane_count", "total_response_template_count", "total_received_response_count", "total_accepted_response_count", "total_rejected_response_count", "total_acceptance_check_count", "total_rejection_rule_count", "quarantine_required", "primary_ready_count", "runtime_execution_authorized", "token_value_collection_allowed", "secret_value_collection_allowed", "write_token_allowed", "repo_creation_authorized", "visibility_change_authorized", "gitea_repo_write_authorized", "refs_sync_authorized", "refs_delete_authorized", "force_push_authorized", "workflow_modification_authorized", "runner_enablement_authorized", "github_hosted_runner_enable_authorized", "github_primary_switch_authorized", "action_buttons_allowed" ], "properties": { "rollup_status": {"type": "string", "enum": ["waiting_owner_responses"]}, "response_packet_count": {"type": "integer", "minimum": 0}, "validation_lane_count": {"type": "integer", "minimum": 0}, "total_response_template_count": {"type": "integer", "minimum": 0}, "total_received_response_count": {"type": "integer", "minimum": 0}, "total_accepted_response_count": {"type": "integer", "minimum": 0}, "total_rejected_response_count": {"type": "integer", "minimum": 0}, "total_acceptance_check_count": {"type": "integer", "minimum": 0}, "total_rejection_rule_count": {"type": "integer", "minimum": 0}, "quarantine_required": {"type": "boolean"}, "primary_ready_count": {"type": "integer", "minimum": 0}, "runtime_execution_authorized": {"type": "boolean", "const": false}, "token_value_collection_allowed": {"type": "boolean", "const": false}, "secret_value_collection_allowed": {"type": "boolean", "const": false}, "write_token_allowed": {"type": "boolean", "const": false}, "repo_creation_authorized": {"type": "boolean", "const": false}, "visibility_change_authorized": {"type": "boolean", "const": false}, "gitea_repo_write_authorized": {"type": "boolean", "const": false}, "refs_sync_authorized": {"type": "boolean", "const": false}, "refs_delete_authorized": {"type": "boolean", "const": false}, "force_push_authorized": {"type": "boolean", "const": false}, "workflow_modification_authorized": {"type": "boolean", "const": false}, "runner_enablement_authorized": {"type": "boolean", "const": false}, "github_hosted_runner_enable_authorized": {"type": "boolean", "const": false}, "github_primary_switch_authorized": {"type": "boolean", "const": false}, "action_buttons_allowed": {"type": "boolean", "const": false} }, "additionalProperties": false }, "validation_lanes": { "type": "array", "items": { "type": "object", "required": [ "lane_id", "source_contract", "response_packet", "human_doc", "scope_summary", "response_template_count", "received_response_count", "accepted_response_count", "rejected_response_count", "required_before_ready", "allowed_outputs", "forbidden_actions", "execution_authorized" ], "properties": { "lane_id": {"type": "string"}, "source_contract": {"type": "string"}, "response_packet": {"type": "string"}, "human_doc": {"type": "string"}, "scope_summary": {"type": "string"}, "response_template_count": {"type": "integer", "minimum": 0}, "received_response_count": {"type": "integer", "minimum": 0}, "accepted_response_count": {"type": "integer", "minimum": 0}, "rejected_response_count": {"type": "integer", "minimum": 0}, "required_before_ready": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "allowed_outputs": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "forbidden_actions": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "execution_authorized": {"type": "boolean", "const": false} }, "additionalProperties": false }, "minItems": 1 }, "cross_packet_acceptance_checks": { "type": "array", "items": { "type": "object", "required": [ "check_id", "title", "required", "pass_condition", "failure_lane", "execution_authorized" ], "properties": { "check_id": {"type": "string"}, "title": {"type": "string"}, "required": {"type": "boolean"}, "pass_condition": {"type": "string"}, "failure_lane": {"type": "string"}, "execution_authorized": {"type": "boolean", "const": false} }, "additionalProperties": false }, "minItems": 1 }, "quarantine_rules": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "readiness_effects": { "type": "array", "items": { "type": "object", "required": [ "effect_id", "when_all_checks_pass", "allowed_update", "still_forbidden" ], "properties": { "effect_id": {"type": "string"}, "when_all_checks_pass": {"type": "string"}, "allowed_update": {"type": "string"}, "still_forbidden": { "type": "array", "items": {"type": "string"}, "minItems": 1 } }, "additionalProperties": false }, "minItems": 1 }, "missing_response_lanes": { "type": "array", "description": "AwoooP 可直接顯示的 owner response 缺口摘要;此欄位只供 read-only review,不代表 response 已收到。", "items": { "type": "object", "required": [ "lane_id", "source_contract", "response_template_count", "received_response_count", "accepted_response_count", "current_status", "next_owner_action", "awooop_display_mode", "still_forbidden" ], "properties": { "lane_id": {"type": "string"}, "source_contract": {"type": "string"}, "response_template_count": {"type": "integer", "minimum": 0}, "received_response_count": {"type": "integer", "minimum": 0}, "accepted_response_count": {"type": "integer", "minimum": 0}, "current_status": {"type": "string", "enum": ["waiting_owner_response"]}, "next_owner_action": {"type": "string"}, "awooop_display_mode": {"type": "string", "enum": ["observe_missing_response"]}, "still_forbidden": { "type": "array", "items": {"type": "string"}, "minItems": 1 } }, "additionalProperties": false }, "minItems": 1 }, "owner_response_collection_order": { "type": "array", "description": "AwoooP 可顯示的 owner response 收件順序;此欄位只排序 review 工作,不授權任何 repo / refs / workflow / secret / runtime 動作。", "items": { "type": "object", "required": [ "order", "lane_id", "reason", "required_packet", "minimum_response", "awooop_action", "blocked_until_received", "execution_authorized", "still_forbidden" ], "properties": { "order": {"type": "integer", "minimum": 1}, "lane_id": {"type": "string"}, "reason": {"type": "string"}, "required_packet": {"type": "string"}, "minimum_response": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "awooop_action": {"type": "string", "enum": ["display_next_collection_item"]}, "blocked_until_received": {"type": "boolean", "const": true}, "execution_authorized": {"type": "boolean", "const": false}, "still_forbidden": { "type": "array", "items": {"type": "string"}, "minItems": 1 } }, "additionalProperties": false }, "minItems": 1 }, "next_collection_candidate": { "type": "object", "description": "AwoooP 可顯示的單一下一步 owner response 收件項目;此欄位只提示 reviewer 下一包 response,不是 approval queue 或 execution queue。", "required": [ "order", "lane_id", "display_status", "source_contract", "required_packet", "required_response_template_count", "received_response_count", "accepted_response_count", "minimum_response", "awooop_display_mode", "why_next", "blocked_until_received", "execution_authorized", "not_approval", "still_forbidden" ], "properties": { "order": {"type": "integer", "minimum": 1}, "lane_id": {"type": "string"}, "display_status": {"type": "string", "enum": ["next_owner_response_required"]}, "source_contract": {"type": "string"}, "required_packet": {"type": "string"}, "required_response_template_count": {"type": "integer", "minimum": 0}, "received_response_count": {"type": "integer", "minimum": 0}, "accepted_response_count": {"type": "integer", "minimum": 0}, "minimum_response": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "awooop_display_mode": {"type": "string", "enum": ["display_next_collection_item_only"]}, "why_next": {"type": "string"}, "blocked_until_received": {"type": "boolean", "const": true}, "execution_authorized": {"type": "boolean", "const": false}, "not_approval": {"type": "boolean", "const": true}, "still_forbidden": { "type": "array", "items": {"type": "string"}, "minItems": 1 } }, "additionalProperties": false }, "allowed_outputs": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "latest_local_validation": { "type": "object", "description": "本機 snapshot-only owner response guard 的最近一次驗證結果;此欄位不代表 owner response 已收到或任何執行授權。", "required": [ "status", "date", "scope", "command", "result", "validated_lanes", "received_response_count", "accepted_response_count", "runtime_actions_authorized", "repo_or_refs_actions_authorized", "workflow_or_secret_actions_authorized", "not_authorization" ], "properties": { "status": { "type": "string", "enum": [ "repo_snapshot_guard_pass", "repo_snapshot_guard_warn", "repo_snapshot_guard_blocked" ] }, "date": {"type": "string"}, "scope": {"type": "string", "enum": ["repo_snapshot_only"]}, "command": {"type": "string"}, "result": {"type": "string"}, "validated_lanes": { "type": "array", "items": {"type": "string"}, "minItems": 1 }, "received_response_count": {"type": "integer", "minimum": 0}, "accepted_response_count": {"type": "integer", "minimum": 0}, "runtime_actions_authorized": {"type": "boolean", "const": false}, "repo_or_refs_actions_authorized": {"type": "boolean", "const": false}, "workflow_or_secret_actions_authorized": {"type": "boolean", "const": false}, "not_authorization": {"type": "boolean", "const": true} }, "additionalProperties": false }, "forbidden_actions": { "type": "array", "items": {"type": "string"}, "minItems": 1 } }, "additionalProperties": false }