Files
awoooi/docs/schemas/iwooos_posture_projection_v1.schema.json
2026-05-19 21:46:44 +08:00

892 lines
22 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:awoooi:iwooos-posture-projection-v1",
"title": "IwoooS 前端資安態勢投影契約 v1",
"description": "定義 IwoooS 如何以 read-only / mirror-only 方式呈現資安網態勢、進度、證據與禁止動作。此契約不授權 scan、execute、repo、refs、workflow、secret、runner、deploy 或 primary switch。",
"type": "object",
"required": [
"schema_version",
"status",
"date",
"product_id",
"display_name",
"mode",
"source_paths",
"summary",
"progress",
"posture_pillars",
"non_blocking_lane_ids",
"existing_frontend_surfaces",
"frontend_surface_conflict_controls",
"operator_journey_steps",
"owner_evidence_readiness_items",
"host_coverage_items",
"host_action_gate_items",
"host_evidence_readiness_items",
"host_evidence_collection_order",
"frontend_surface_coverage_groups",
"evidence_refs",
"allowed_frontend_outputs",
"forbidden_frontend_outputs",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"schema_version": {
"const": "iwooos_posture_projection_v1"
},
"status": {
"type": "string",
"enum": [
"draft"
]
},
"date": {
"type": "string"
},
"product_id": {
"const": "iwooos"
},
"display_name": {
"const": "IwoooS"
},
"mode": {
"type": "string",
"enum": [
"mirror_only"
]
},
"source_paths": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"summary": {
"type": "object",
"required": [
"route_path",
"nav_entry_added",
"command_palette_entry_added",
"contract_count",
"active_runtime_gate_count",
"approval_queue_total",
"pending_approval_count",
"block_candidate_count",
"owner_response_validation_received_count",
"owner_response_validation_accepted_count",
"github_primary_ready_count",
"existing_frontend_surface_count",
"frontend_surface_coverage_group_count",
"frontend_surface_conflict_control_count",
"operator_journey_step_count",
"owner_evidence_readiness_item_count",
"host_coverage_item_count",
"host_action_gate_item_count",
"host_evidence_readiness_item_count",
"host_evidence_collection_step_count",
"action_buttons_allowed"
],
"properties": {
"route_path": {
"const": "/iwooos"
},
"nav_entry_added": {
"type": "boolean",
"const": true
},
"command_palette_entry_added": {
"type": "boolean",
"const": true
},
"contract_count": {
"type": "integer",
"minimum": 0
},
"active_runtime_gate_count": {
"type": "integer",
"const": 0
},
"approval_queue_total": {
"type": "integer",
"minimum": 0
},
"pending_approval_count": {
"type": "integer",
"minimum": 0
},
"block_candidate_count": {
"type": "integer",
"minimum": 0
},
"owner_response_validation_received_count": {
"type": "integer",
"const": 0
},
"owner_response_validation_accepted_count": {
"type": "integer",
"const": 0
},
"github_primary_ready_count": {
"type": "integer",
"const": 0
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"existing_frontend_surface_count": {
"type": "integer",
"const": 10
},
"frontend_surface_coverage_group_count": {
"type": "integer",
"const": 4
},
"frontend_surface_conflict_control_count": {
"type": "integer",
"const": 5
},
"operator_journey_step_count": {
"type": "integer",
"const": 6
},
"owner_evidence_readiness_item_count": {
"type": "integer",
"const": 7
},
"host_coverage_item_count": {
"type": "integer",
"const": 3
},
"host_action_gate_item_count": {
"type": "integer",
"const": 6
},
"host_evidence_readiness_item_count": {
"type": "integer",
"const": 7
},
"host_evidence_collection_step_count": {
"type": "integer",
"const": 7
}
},
"additionalProperties": false
},
"progress": {
"type": "object",
"required": [
"overall_percent",
"framework_percent_min",
"framework_percent_max",
"runtime_landing_percent_min",
"runtime_landing_percent_max",
"headline_status",
"not_authorization"
],
"properties": {
"overall_percent": {
"type": "integer",
"const": 58
},
"framework_percent_min": {
"type": "integer",
"const": 80
},
"framework_percent_max": {
"type": "integer",
"const": 85
},
"runtime_landing_percent_min": {
"type": "integer",
"const": 35
},
"runtime_landing_percent_max": {
"type": "integer",
"const": 40
},
"headline_status": {
"const": "holding_until_owner_response_or_runtime_gate"
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
},
"posture_pillars": {
"type": "array",
"minItems": 4,
"items": {
"type": "object",
"required": [
"pillar_id",
"display_order",
"display_state",
"source_contract",
"display_mode",
"runtime_execution_authorized",
"not_authorization"
],
"properties": {
"pillar_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"display_state": {
"type": "string"
},
"source_contract": {
"type": "string"
},
"display_mode": {
"const": "posture_only"
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"non_blocking_lane_ids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"evidence_refs": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"allowed_frontend_outputs": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"forbidden_frontend_outputs": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
},
"existing_frontend_surfaces": {
"type": "array",
"minItems": 10,
"items": {
"type": "object",
"required": [
"surface_id",
"route_path",
"display_order",
"source_page",
"source_components",
"source_api_routes",
"display_mode",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"surface_id": {
"type": "string"
},
"route_path": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"source_page": {
"type": "string"
},
"source_components": {
"type": "array",
"items": {
"type": "string"
}
},
"source_api_routes": {
"type": "array",
"items": {
"type": "string"
}
},
"display_mode": {
"const": "link_only"
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"frontend_surface_coverage_groups": {
"type": "array",
"minItems": 4,
"items": {
"type": "object",
"required": [
"group_id",
"display_order",
"responsibility_plane",
"surface_ids",
"display_mode",
"overlap_control",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"group_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"responsibility_plane": {
"type": "string"
},
"surface_ids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"display_mode": {
"const": "coverage_only"
},
"overlap_control": {
"type": "string"
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"frontend_surface_conflict_controls": {
"type": "array",
"minItems": 5,
"items": {
"type": "object",
"required": [
"control_id",
"display_order",
"control_scope",
"blocked_misread",
"display_mode",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"control_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"control_scope": {
"type": "string"
},
"blocked_misread": {
"type": "string"
},
"display_mode": {
"const": "conflict_control_only"
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"operator_journey_steps": {
"type": "array",
"minItems": 6,
"items": {
"type": "object",
"required": [
"step_id",
"display_order",
"responsibility_plane",
"source_refs",
"display_mode",
"allowed_outcome",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"step_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"responsibility_plane": {
"type": "string"
},
"source_refs": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"display_mode": {
"const": "journey_only"
},
"allowed_outcome": {
"type": "string"
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"owner_evidence_readiness_items": {
"type": "array",
"minItems": 7,
"items": {
"type": "object",
"required": [
"item_id",
"display_order",
"stage_id",
"source_contract",
"readiness_state",
"received_count",
"accepted_count",
"display_mode",
"unlock_condition",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"item_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"stage_id": {
"type": "string"
},
"source_contract": {
"type": "string"
},
"readiness_state": {
"type": "string"
},
"received_count": {
"type": "integer",
"const": 0
},
"accepted_count": {
"type": "integer",
"const": 0
},
"display_mode": {
"const": "readiness_only"
},
"unlock_condition": {
"type": "string"
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"host_coverage_items": {
"type": "array",
"minItems": 3,
"items": {
"type": "object",
"required": [
"host_id",
"display_order",
"address",
"role",
"source_contract",
"coverage_state",
"scan_scope_state",
"display_mode",
"active_scan_authorized",
"ssh_change_authorized",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"host_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"address": {
"type": "string"
},
"role": {
"type": "string"
},
"source_contract": {
"type": "string"
},
"coverage_state": {
"type": "string"
},
"scan_scope_state": {
"type": "string"
},
"display_mode": {
"const": "coverage_only"
},
"active_scan_authorized": {
"type": "boolean",
"const": false
},
"ssh_change_authorized": {
"type": "boolean",
"const": false
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"host_action_gate_items": {
"type": "array",
"minItems": 6,
"items": {
"type": "object",
"required": [
"action_id",
"display_order",
"related_hosts",
"required_gate",
"gate_state",
"display_mode",
"active_scan_authorized",
"credentialed_scan_authorized",
"ssh_change_authorized",
"host_update_authorized",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"action_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"related_hosts": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"required_gate": {
"type": "string"
},
"gate_state": {
"type": "string"
},
"display_mode": {
"const": "gate_only"
},
"active_scan_authorized": {
"type": "boolean",
"const": false
},
"credentialed_scan_authorized": {
"type": "boolean",
"const": false
},
"ssh_change_authorized": {
"type": "boolean",
"const": false
},
"host_update_authorized": {
"type": "boolean",
"const": false
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"host_evidence_readiness_items": {
"type": "array",
"minItems": 7,
"items": {
"type": "object",
"required": [
"item_id",
"display_order",
"related_hosts",
"required_gate",
"evidence_state",
"received_count",
"accepted_count",
"display_mode",
"active_scan_authorized",
"credentialed_scan_authorized",
"ssh_change_authorized",
"host_update_authorized",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"item_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"related_hosts": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"required_gate": {
"type": "string"
},
"evidence_state": {
"type": "string"
},
"received_count": {
"type": "integer",
"const": 0
},
"accepted_count": {
"type": "integer",
"const": 0
},
"display_mode": {
"const": "evidence_readiness_only"
},
"active_scan_authorized": {
"type": "boolean",
"const": false
},
"credentialed_scan_authorized": {
"type": "boolean",
"const": false
},
"ssh_change_authorized": {
"type": "boolean",
"const": false
},
"host_update_authorized": {
"type": "boolean",
"const": false
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
},
"host_evidence_collection_order": {
"type": "array",
"minItems": 7,
"items": {
"type": "object",
"required": [
"step_id",
"display_order",
"source_item_id",
"depends_on_step_ids",
"collection_state",
"display_mode",
"received_count",
"accepted_count",
"runtime_execution_authorized",
"action_buttons_allowed",
"not_authorization"
],
"properties": {
"step_id": {
"type": "string"
},
"display_order": {
"type": "integer",
"minimum": 1
},
"source_item_id": {
"type": "string"
},
"depends_on_step_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"collection_state": {
"type": "string"
},
"display_mode": {
"const": "collection_order_only"
},
"received_count": {
"type": "integer",
"const": 0
},
"accepted_count": {
"type": "integer",
"const": 0
},
"runtime_execution_authorized": {
"type": "boolean",
"const": false
},
"action_buttons_allowed": {
"type": "boolean",
"const": false
},
"not_authorization": {
"type": "boolean",
"const": true
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}