762 lines
27 KiB
JSON
762 lines
27 KiB
JSON
{
|
||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
"$id": "urn:awoooi:gitea-inventory-owner-attestation-response-v1",
|
||
"title": "Gitea 清冊 Owner Attestation Response 收件契約 v1",
|
||
"description": "定義 owner 回覆 S4.7 coverage attestation 時的收件欄位、驗收規則與拒收規則。此 schema 不授權 token 收集、Gitea/GitHub 寫入、refs sync 或 GitHub primary cutover。",
|
||
"type": "object",
|
||
"required": [
|
||
"schema_version",
|
||
"status",
|
||
"date",
|
||
"mode",
|
||
"runtime_execution_authorized",
|
||
"source_contract",
|
||
"target_contract",
|
||
"source_indexes",
|
||
"summary",
|
||
"response_templates",
|
||
"owner_response_intake_handoff_queue",
|
||
"owner_response_metadata_intake_envelope",
|
||
"acceptance_checks",
|
||
"rejection_rules",
|
||
"allowed_outputs",
|
||
"forbidden_actions"
|
||
],
|
||
"properties": {
|
||
"schema_version": {
|
||
"const": "gitea_inventory_owner_attestation_response_v1"
|
||
},
|
||
"status": {
|
||
"type": "string",
|
||
"enum": ["draft_waiting_owner_response"]
|
||
},
|
||
"date": {
|
||
"type": "string"
|
||
},
|
||
"mode": {
|
||
"type": "string",
|
||
"enum": ["owner_response_intake_only"]
|
||
},
|
||
"runtime_execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"source_contract": {
|
||
"type": "string",
|
||
"const": "gitea_inventory_coverage_attestation_v1"
|
||
},
|
||
"target_contract": {
|
||
"type": "string",
|
||
"const": "gitea_repo_inventory_v1"
|
||
},
|
||
"source_indexes": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"summary": {
|
||
"type": "object",
|
||
"required": [
|
||
"owner_response_status",
|
||
"required_response_item_count",
|
||
"received_response_count",
|
||
"accepted_response_count",
|
||
"rejected_response_count",
|
||
"response_template_count",
|
||
"owner_response_template_status_count",
|
||
"owner_response_audit_event_template_count",
|
||
"owner_response_redaction_example_count",
|
||
"owner_response_display_section_count",
|
||
"owner_response_request_packet_count",
|
||
"owner_response_collection_check_count",
|
||
"owner_response_intake_handoff_queue_count",
|
||
"owner_response_intake_handoff_queue_ready_count",
|
||
"owner_response_intake_handoff_queue_received_count",
|
||
"owner_response_intake_handoff_queue_accepted_count",
|
||
"owner_response_intake_handoff_queue_runtime_gate_count",
|
||
"owner_response_intake_handoff_queue_raw_payload_allowed",
|
||
"owner_response_intake_handoff_queue_action_buttons_allowed",
|
||
"owner_response_metadata_intake_field_count",
|
||
"owner_response_metadata_intake_required_count",
|
||
"owner_response_metadata_intake_filled_count",
|
||
"owner_response_metadata_intake_received_count",
|
||
"owner_response_metadata_intake_accepted_count",
|
||
"owner_response_metadata_intake_runtime_gate_count",
|
||
"owner_response_metadata_intake_redacted_ref_required",
|
||
"owner_response_metadata_intake_raw_payload_allowed",
|
||
"owner_response_metadata_intake_secret_plaintext_allowed",
|
||
"owner_response_metadata_intake_action_buttons_allowed",
|
||
"intake_preflight_check_count",
|
||
"intake_outcome_lane_count",
|
||
"acceptance_check_count",
|
||
"rejection_rule_count",
|
||
"token_value_collection_allowed",
|
||
"raw_secret_allowed",
|
||
"repo_write_allowed",
|
||
"refs_sync_allowed",
|
||
"github_primary_switch_authorized",
|
||
"action_buttons_allowed"
|
||
],
|
||
"properties": {
|
||
"owner_response_status": {
|
||
"type": "string",
|
||
"enum": ["waiting_owner_response"]
|
||
},
|
||
"required_response_item_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},
|
||
"response_template_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_template_status_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_audit_event_template_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_redaction_example_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_display_section_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_request_packet_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_collection_check_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_intake_handoff_queue_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_intake_handoff_queue_ready_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_intake_handoff_queue_received_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_intake_handoff_queue_accepted_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_intake_handoff_queue_runtime_gate_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_intake_handoff_queue_raw_payload_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"owner_response_intake_handoff_queue_action_buttons_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"owner_response_metadata_intake_field_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_metadata_intake_required_count": {"type": "integer", "minimum": 0},
|
||
"owner_response_metadata_intake_filled_count": {"type": "integer", "const": 0},
|
||
"owner_response_metadata_intake_received_count": {"type": "integer", "const": 0},
|
||
"owner_response_metadata_intake_accepted_count": {"type": "integer", "const": 0},
|
||
"owner_response_metadata_intake_runtime_gate_count": {"type": "integer", "const": 0},
|
||
"owner_response_metadata_intake_redacted_ref_required": {
|
||
"type": "boolean",
|
||
"const": true
|
||
},
|
||
"owner_response_metadata_intake_raw_payload_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"owner_response_metadata_intake_secret_plaintext_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"owner_response_metadata_intake_action_buttons_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"intake_preflight_check_count": {"type": "integer", "minimum": 0},
|
||
"intake_outcome_lane_count": {"type": "integer", "minimum": 0},
|
||
"acceptance_check_count": {"type": "integer", "minimum": 0},
|
||
"rejection_rule_count": {"type": "integer", "minimum": 0},
|
||
"token_value_collection_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"raw_secret_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"repo_write_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"refs_sync_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"github_primary_switch_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"action_buttons_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"response_templates": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"template_id",
|
||
"attestation_item_id",
|
||
"title",
|
||
"required_owner_fields",
|
||
"acceptable_decisions",
|
||
"minimum_evidence_refs",
|
||
"acceptance_criteria",
|
||
"rejection_conditions",
|
||
"allowed_outputs",
|
||
"execution_authorized"
|
||
],
|
||
"properties": {
|
||
"template_id": {"type": "string"},
|
||
"attestation_item_id": {"type": "string"},
|
||
"title": {"type": "string"},
|
||
"required_owner_fields": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"acceptable_decisions": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"minimum_evidence_refs": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"acceptance_criteria": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"rejection_conditions": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"allowed_outputs": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"owner_response_template_statuses": {
|
||
"type": "array",
|
||
"description": "S4.9 五個 response templates 的逐項收件狀態;只供 AwoooP 顯示,不代表 approval 或 execution queue。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"template_id",
|
||
"attestation_item_id",
|
||
"display_order",
|
||
"collection_status",
|
||
"request_status",
|
||
"received_response_count",
|
||
"accepted_response_count",
|
||
"rejected_response_count",
|
||
"latest_outcome_lane",
|
||
"next_owner_action",
|
||
"awooop_display_mode",
|
||
"execution_authorized",
|
||
"not_approval",
|
||
"still_forbidden"
|
||
],
|
||
"properties": {
|
||
"template_id": {"type": "string"},
|
||
"attestation_item_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"collection_status": {"type": "string", "enum": ["waiting_owner_response"]},
|
||
"request_status": {"type": "string", "enum": ["request_ready_not_sent"]},
|
||
"received_response_count": {"type": "integer", "minimum": 0},
|
||
"accepted_response_count": {"type": "integer", "minimum": 0},
|
||
"rejected_response_count": {"type": "integer", "minimum": 0},
|
||
"latest_outcome_lane": {"type": "string", "enum": ["keep_waiting_owner_response"]},
|
||
"next_owner_action": {"type": "string"},
|
||
"awooop_display_mode": {"type": "string", "enum": ["display_template_status_only"]},
|
||
"execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"not_approval": {
|
||
"type": "boolean",
|
||
"const": true
|
||
},
|
||
"still_forbidden": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"owner_response_audit_event_templates": {
|
||
"type": "array",
|
||
"description": "AwoooP 可照此格式記錄 S4.9 owner response 流程的脫敏 audit metadata;此欄位只是模板,尚未代表 runtime ingestion。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"event_template_id",
|
||
"display_order",
|
||
"event_status",
|
||
"trigger",
|
||
"purpose",
|
||
"allowed_metadata_fields",
|
||
"forbidden_payloads",
|
||
"emitted_event_count",
|
||
"stored_raw_payload_allowed",
|
||
"awooop_display_mode",
|
||
"execution_authorized",
|
||
"not_approval"
|
||
],
|
||
"properties": {
|
||
"event_template_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"event_status": {"type": "string", "enum": ["template_only_not_emitted"]},
|
||
"trigger": {"type": "string"},
|
||
"purpose": {"type": "string"},
|
||
"allowed_metadata_fields": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"forbidden_payloads": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"emitted_event_count": {"type": "integer", "minimum": 0},
|
||
"stored_raw_payload_allowed": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"awooop_display_mode": {"type": "string", "enum": ["display_audit_template_only"]},
|
||
"execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"not_approval": {
|
||
"type": "boolean",
|
||
"const": true
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"owner_response_redaction_examples": {
|
||
"type": "array",
|
||
"description": "Owner 回覆 S4.9 時可參考的脫敏範例;只供 AwoooP 顯示,不代表收件、驗收或執行授權。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"example_id",
|
||
"display_order",
|
||
"example_status",
|
||
"category",
|
||
"safe_response_shape",
|
||
"required_redactions",
|
||
"forbidden_raw_values",
|
||
"stored_raw_payload_allowed",
|
||
"awooop_display_mode",
|
||
"execution_authorized",
|
||
"not_approval"
|
||
],
|
||
"properties": {
|
||
"example_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"example_status": {"type": "string", "enum": ["template_example_only"]},
|
||
"category": {"type": "string"},
|
||
"safe_response_shape": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||
"required_redactions": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||
"forbidden_raw_values": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||
"stored_raw_payload_allowed": {"type": "boolean", "const": false},
|
||
"awooop_display_mode": {"type": "string", "enum": ["display_redaction_example_only"]},
|
||
"execution_authorized": {"type": "boolean", "const": false},
|
||
"not_approval": {"type": "boolean", "const": true}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"owner_response_display_sections": {
|
||
"type": "array",
|
||
"description": "AwoooP 顯示 S4.9 owner response 收件包時的只讀 UI 區塊順序;只供顯示,不代表收件、審核或執行。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"section_id",
|
||
"display_order",
|
||
"section_status",
|
||
"source_field",
|
||
"purpose",
|
||
"allowed_ui_actions",
|
||
"forbidden_ui_actions",
|
||
"execution_authorized",
|
||
"not_approval"
|
||
],
|
||
"properties": {
|
||
"section_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"section_status": {"type": "string", "enum": ["display_contract_only"]},
|
||
"source_field": {"type": "string"},
|
||
"purpose": {"type": "string"},
|
||
"allowed_ui_actions": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||
"forbidden_ui_actions": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||
"execution_authorized": {"type": "boolean", "const": false},
|
||
"not_approval": {"type": "boolean", "const": true}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"owner_response_intake_handoff_queue": {
|
||
"type": "array",
|
||
"description": "S4.9 owner response 收件前 handoff queue;只供 AwoooP / IwoooS 顯示下一個 owner 要補的脫敏中繼資料,不代表 request sent、received、accepted 或 runtime gate。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"handoff_lane_id",
|
||
"display_order",
|
||
"source_template_id",
|
||
"template_label",
|
||
"handoff_status",
|
||
"required_owner_field_count",
|
||
"required_owner_fields",
|
||
"current_blocker",
|
||
"next_safe_step",
|
||
"received_response_count",
|
||
"accepted_response_count",
|
||
"runtime_gate_count",
|
||
"raw_payload_allowed",
|
||
"secret_plaintext_allowed",
|
||
"action_buttons_allowed",
|
||
"execution_authorized",
|
||
"not_approval",
|
||
"still_forbidden"
|
||
],
|
||
"properties": {
|
||
"handoff_lane_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"source_template_id": {"type": "string"},
|
||
"template_label": {"type": "string"},
|
||
"handoff_status": {"type": "string", "enum": ["waiting_owner_response_metadata"]},
|
||
"required_owner_field_count": {"type": "integer", "minimum": 1},
|
||
"required_owner_fields": {"type": "array", "items": {"type": "string"}, "minItems": 1},
|
||
"current_blocker": {"type": "string"},
|
||
"next_safe_step": {"type": "string"},
|
||
"received_response_count": {"type": "integer", "const": 0},
|
||
"accepted_response_count": {"type": "integer", "const": 0},
|
||
"runtime_gate_count": {"type": "integer", "const": 0},
|
||
"raw_payload_allowed": {"type": "boolean", "const": false},
|
||
"secret_plaintext_allowed": {"type": "boolean", "const": false},
|
||
"action_buttons_allowed": {"type": "boolean", "const": false},
|
||
"execution_authorized": {"type": "boolean", "const": false},
|
||
"not_approval": {"type": "boolean", "const": true},
|
||
"still_forbidden": {"type": "array", "items": {"type": "string"}, "minItems": 1}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"owner_response_metadata_intake_envelope": {
|
||
"type": "array",
|
||
"description": "S4.9 owner response 的必填中繼資料 envelope;只允許脫敏欄位與 reference pointer,不代表已收件、已接受或 runtime gate。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"field_id",
|
||
"display_order",
|
||
"source_required_field",
|
||
"field_label",
|
||
"field_status",
|
||
"intake_mode",
|
||
"required",
|
||
"filled_count",
|
||
"received_response_count",
|
||
"accepted_response_count",
|
||
"runtime_gate_count",
|
||
"redacted_reference_required",
|
||
"raw_payload_allowed",
|
||
"secret_plaintext_allowed",
|
||
"action_buttons_allowed",
|
||
"execution_authorized",
|
||
"not_approval",
|
||
"still_forbidden"
|
||
],
|
||
"properties": {
|
||
"field_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"source_required_field": {"type": "string"},
|
||
"field_label": {"type": "string"},
|
||
"field_status": {"type": "string", "enum": ["waiting_owner_response_metadata"]},
|
||
"intake_mode": {"type": "string"},
|
||
"required": {"type": "boolean", "const": true},
|
||
"filled_count": {"type": "integer", "const": 0},
|
||
"received_response_count": {"type": "integer", "const": 0},
|
||
"accepted_response_count": {"type": "integer", "const": 0},
|
||
"runtime_gate_count": {"type": "integer", "const": 0},
|
||
"redacted_reference_required": {"type": "boolean", "const": true},
|
||
"raw_payload_allowed": {"type": "boolean", "const": false},
|
||
"secret_plaintext_allowed": {"type": "boolean", "const": false},
|
||
"action_buttons_allowed": {"type": "boolean", "const": false},
|
||
"execution_authorized": {"type": "boolean", "const": false},
|
||
"not_approval": {"type": "boolean", "const": true},
|
||
"still_forbidden": {"type": "array", "items": {"type": "string"}, "minItems": 1}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"owner_response_request_packet": {
|
||
"type": "object",
|
||
"description": "AwoooP 可直接顯示給 owner 的 S4.9 回覆請求;只說明要填什麼與不得貼什麼,不授權任何執行。",
|
||
"required": [
|
||
"request_id",
|
||
"display_status",
|
||
"requested_packet",
|
||
"required_response_item_count",
|
||
"requested_template_ids",
|
||
"owner_instruction_summary",
|
||
"allowed_response_fields",
|
||
"evidence_ref_rules",
|
||
"forbidden_payloads",
|
||
"allowed_submission_modes",
|
||
"awooop_display_mode",
|
||
"execution_authorized",
|
||
"not_approval",
|
||
"still_forbidden"
|
||
],
|
||
"properties": {
|
||
"request_id": {"type": "string"},
|
||
"display_status": {"type": "string", "enum": ["ready_to_request_owner_response"]},
|
||
"requested_packet": {"type": "string"},
|
||
"required_response_item_count": {"type": "integer", "minimum": 0},
|
||
"requested_template_ids": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"owner_instruction_summary": {"type": "string"},
|
||
"allowed_response_fields": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"evidence_ref_rules": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"forbidden_payloads": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"allowed_submission_modes": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"awooop_display_mode": {"type": "string", "enum": ["display_owner_response_request_only"]},
|
||
"execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"not_approval": {
|
||
"type": "boolean",
|
||
"const": true
|
||
},
|
||
"still_forbidden": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"owner_response_collection_checks": {
|
||
"type": "array",
|
||
"description": "AwoooP 顯示 request packet 到收回 owner response 之間的只讀收件檢查;不得把 request sent 誤判為 response received / accepted。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"check_id",
|
||
"display_order",
|
||
"title",
|
||
"required",
|
||
"pass_condition",
|
||
"failure_lane",
|
||
"awooop_display",
|
||
"execution_authorized",
|
||
"not_approval"
|
||
],
|
||
"properties": {
|
||
"check_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"title": {"type": "string"},
|
||
"required": {"type": "boolean"},
|
||
"pass_condition": {"type": "string"},
|
||
"failure_lane": {"type": "string"},
|
||
"awooop_display": {"type": "string"},
|
||
"execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"not_approval": {
|
||
"type": "boolean",
|
||
"const": true
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"intake_preflight_checks": {
|
||
"type": "array",
|
||
"description": "AwoooP 收到 S4.9 owner response 前後可執行的只讀 preflight;只分類可收、補證或隔離,不授權任何執行。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"check_id",
|
||
"display_order",
|
||
"title",
|
||
"required",
|
||
"pass_condition",
|
||
"failure_lane",
|
||
"awooop_display",
|
||
"execution_authorized"
|
||
],
|
||
"properties": {
|
||
"check_id": {"type": "string"},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"title": {"type": "string"},
|
||
"required": {"type": "boolean"},
|
||
"pass_condition": {"type": "string"},
|
||
"failure_lane": {"type": "string"},
|
||
"awooop_display": {
|
||
"type": "string",
|
||
"enum": [
|
||
"ready_for_owner_review",
|
||
"request_more_evidence",
|
||
"quarantine_sensitive_payload",
|
||
"reject_execution_request"
|
||
]
|
||
},
|
||
"execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"intake_outcome_lanes": {
|
||
"type": "array",
|
||
"description": "AwoooP 顯示 S4.9 preflight 結果的只讀 outcome lanes;只顯示下一步,不授權 inventory、migration、repo、refs 或 primary 動作。",
|
||
"items": {
|
||
"type": "object",
|
||
"required": [
|
||
"lane_id",
|
||
"display_order",
|
||
"title",
|
||
"when",
|
||
"awooop_action",
|
||
"allowed_outputs",
|
||
"still_forbidden",
|
||
"execution_authorized",
|
||
"not_approval"
|
||
],
|
||
"properties": {
|
||
"lane_id": {
|
||
"type": "string",
|
||
"enum": [
|
||
"ready_for_owner_review",
|
||
"request_more_evidence",
|
||
"quarantine_sensitive_payload",
|
||
"reject_execution_request",
|
||
"keep_waiting_owner_response"
|
||
]
|
||
},
|
||
"display_order": {"type": "integer", "minimum": 1},
|
||
"title": {"type": "string"},
|
||
"when": {"type": "string"},
|
||
"awooop_action": {
|
||
"type": "string",
|
||
"enum": [
|
||
"display_ready_for_owner_review",
|
||
"display_request_more_evidence",
|
||
"route_to_mirror_quarantine",
|
||
"reject_execution_request",
|
||
"keep_waiting_owner_response"
|
||
]
|
||
},
|
||
"allowed_outputs": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"still_forbidden": {
|
||
"type": "array",
|
||
"items": {"type": "string"},
|
||
"minItems": 1
|
||
},
|
||
"execution_authorized": {
|
||
"type": "boolean",
|
||
"const": false
|
||
},
|
||
"not_approval": {
|
||
"type": "boolean",
|
||
"const": true
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"minItems": 1
|
||
},
|
||
"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
|
||
},
|
||
"rejection_rules": {
|
||
"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
|
||
}
|
||
},
|
||
"additionalProperties": false
|
||
}
|