135 lines
3.5 KiB
JSON
135 lines
3.5 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "urn:awoooi:source-control-approval-board-v1",
|
|
"title": "AWOOOI Source Control Approval Board (v1)",
|
|
"description": "把 Gitea -> GitHub 低摩擦遷移中的逐 repo owner / visibility / canonical / refs reconcile 決策整理成可供 AwoooP mirror 的只讀 board。",
|
|
"type": "object",
|
|
"required": [
|
|
"schema_version",
|
|
"status",
|
|
"date",
|
|
"default_mode",
|
|
"authenticated_inventory_gate",
|
|
"item_count",
|
|
"pending_approval_count",
|
|
"board_items"
|
|
],
|
|
"properties": {
|
|
"schema_version": {
|
|
"const": "source_control_approval_board_v1"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["draft"]
|
|
},
|
|
"date": {
|
|
"type": "string"
|
|
},
|
|
"default_mode": {
|
|
"type": "string",
|
|
"enum": ["mirror_only"]
|
|
},
|
|
"authenticated_inventory_gate": {
|
|
"type": "object",
|
|
"required": [
|
|
"status",
|
|
"reason",
|
|
"allowed_next_step",
|
|
"still_forbidden"
|
|
],
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["blocked", "ready"]
|
|
},
|
|
"reason": {
|
|
"type": "string"
|
|
},
|
|
"allowed_next_step": {
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"still_forbidden": {
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"item_count": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"pending_approval_count": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"board_items": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": [
|
|
"github_repo",
|
|
"source_key",
|
|
"lane",
|
|
"risk",
|
|
"probe_status",
|
|
"target_state",
|
|
"approval_status",
|
|
"required_decision",
|
|
"low_friction_next_step",
|
|
"blocked_until",
|
|
"allowed_after_approval",
|
|
"still_forbidden",
|
|
"evidence_refs",
|
|
"awooop_consumption"
|
|
],
|
|
"properties": {
|
|
"github_repo": {"type": "string"},
|
|
"source_key": {"type": "string"},
|
|
"lane": {
|
|
"type": "string",
|
|
"enum": [
|
|
"refs_reconcile",
|
|
"target_creation_or_access",
|
|
"internal_remote_purpose",
|
|
"scope_review"
|
|
]
|
|
},
|
|
"risk": {
|
|
"type": "string",
|
|
"enum": ["LOW", "MEDIUM", "HIGH"]
|
|
},
|
|
"probe_status": {"type": "string"},
|
|
"target_state": {"type": "string"},
|
|
"approval_status": {"type": "string"},
|
|
"required_decision": {"type": "string"},
|
|
"low_friction_next_step": {"type": "string"},
|
|
"blocked_until": {
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"allowed_after_approval": {
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"still_forbidden": {
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"evidence_refs": {
|
|
"type": "array",
|
|
"items": {"type": "string"}
|
|
},
|
|
"awooop_consumption": {
|
|
"type": "string",
|
|
"enum": ["mirror_only", "approval_candidate", "scope_review_only"]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|