docs(security): add IwoooS posture projection contract

This commit is contained in:
Your Name
2026-05-19 15:18:37 +08:00
parent d8917e0d0b
commit d7e99e8ef0
25 changed files with 766 additions and 61 deletions

View File

@@ -0,0 +1,248 @@
{
"$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",
"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",
"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
}
},
"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
}
},
"additionalProperties": false
}