docs: add capability and infrastructure fit assessment
This commit is contained in:
298
docs/capability-fit.schema.json
Normal file
298
docs/capability-fit.schema.json
Normal file
@@ -0,0 +1,298 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://git.add-ideas.de/add-ideas/govoplan/src/branch/main/docs/capability-fit.schema.json",
|
||||
"title": "GovOPlaN capability and infrastructure fit assessment",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"schema_version",
|
||||
"assessment_id",
|
||||
"assessed_at",
|
||||
"scope",
|
||||
"release",
|
||||
"composition",
|
||||
"deployment_profile",
|
||||
"questionnaire",
|
||||
"capabilities",
|
||||
"infrastructure",
|
||||
"data_flows",
|
||||
"assumptions",
|
||||
"open_questions",
|
||||
"risks",
|
||||
"recommendations",
|
||||
"proof_checks"
|
||||
],
|
||||
"properties": {
|
||||
"$schema": {
|
||||
"type": "string",
|
||||
"format": "uri-reference"
|
||||
},
|
||||
"schema_version": {
|
||||
"const": "0.1.0"
|
||||
},
|
||||
"assessment_id": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"assessed_at": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"scope": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["title", "reference_journeys", "postponed"],
|
||||
"properties": {
|
||||
"title": { "$ref": "#/$defs/non_empty_string" },
|
||||
"reference_journeys": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": { "$ref": "#/$defs/non_empty_string" }
|
||||
},
|
||||
"postponed": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/non_empty_string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"release": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["kind", "ref", "meta_commit", "reproducible", "configuration_packages"],
|
||||
"properties": {
|
||||
"kind": {
|
||||
"enum": ["tagged_release", "release_candidate", "workspace_snapshot"]
|
||||
},
|
||||
"ref": { "$ref": "#/$defs/non_empty_string" },
|
||||
"meta_commit": { "$ref": "#/$defs/non_empty_string" },
|
||||
"reproducible": { "type": "boolean" },
|
||||
"configuration_packages": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/non_empty_string" }
|
||||
},
|
||||
"notes": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/non_empty_string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"composition": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": { "$ref": "#/$defs/module" }
|
||||
},
|
||||
"deployment_profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["id", "status", "description", "evidence"],
|
||||
"properties": {
|
||||
"id": { "$ref": "#/$defs/non_empty_string" },
|
||||
"status": { "$ref": "#/$defs/status" },
|
||||
"description": { "$ref": "#/$defs/non_empty_string" },
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": { "$ref": "#/$defs/evidence" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"questionnaire": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"scope_outcomes",
|
||||
"data_policy",
|
||||
"identity_integrations",
|
||||
"workload_growth",
|
||||
"availability_operations",
|
||||
"procurement_decisions"
|
||||
],
|
||||
"properties": {
|
||||
"scope_outcomes": { "$ref": "#/$defs/answers" },
|
||||
"data_policy": { "$ref": "#/$defs/answers" },
|
||||
"identity_integrations": { "$ref": "#/$defs/answers" },
|
||||
"workload_growth": { "$ref": "#/$defs/answers" },
|
||||
"availability_operations": { "$ref": "#/$defs/answers" },
|
||||
"procurement_decisions": { "$ref": "#/$defs/answers" }
|
||||
}
|
||||
},
|
||||
"capabilities": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": { "$ref": "#/$defs/assessed_item" }
|
||||
},
|
||||
"infrastructure": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": { "$ref": "#/$defs/assessed_item" }
|
||||
},
|
||||
"data_flows": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": { "$ref": "#/$defs/data_flow" }
|
||||
},
|
||||
"assumptions": { "$ref": "#/$defs/string_list" },
|
||||
"open_questions": { "$ref": "#/$defs/string_list" },
|
||||
"risks": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/risk" }
|
||||
},
|
||||
"recommendations": { "$ref": "#/$defs/string_list" },
|
||||
"proof_checks": { "$ref": "#/$defs/string_list" }
|
||||
},
|
||||
"$defs": {
|
||||
"non_empty_string": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"string_list": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/non_empty_string" }
|
||||
},
|
||||
"status": {
|
||||
"enum": [
|
||||
"verified",
|
||||
"available_unconfigured",
|
||||
"partial",
|
||||
"scaffold",
|
||||
"external_system",
|
||||
"planned",
|
||||
"not_fit",
|
||||
"not_assessed"
|
||||
]
|
||||
},
|
||||
"evidence": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["kind", "scope", "locator"],
|
||||
"properties": {
|
||||
"kind": {
|
||||
"enum": [
|
||||
"test",
|
||||
"route",
|
||||
"contract",
|
||||
"drill",
|
||||
"documentation",
|
||||
"configuration",
|
||||
"issue",
|
||||
"absence",
|
||||
"observation"
|
||||
]
|
||||
},
|
||||
"scope": {
|
||||
"enum": [
|
||||
"committed_source",
|
||||
"current_workspace",
|
||||
"documented_model",
|
||||
"target_environment"
|
||||
]
|
||||
},
|
||||
"locator": { "$ref": "#/$defs/non_empty_string" },
|
||||
"note": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"module": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"module_id",
|
||||
"repository",
|
||||
"commit",
|
||||
"manifest_version",
|
||||
"enabled",
|
||||
"dirty",
|
||||
"role"
|
||||
],
|
||||
"properties": {
|
||||
"module_id": { "$ref": "#/$defs/non_empty_string" },
|
||||
"repository": { "$ref": "#/$defs/non_empty_string" },
|
||||
"commit": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{7,40}$"
|
||||
},
|
||||
"manifest_version": { "$ref": "#/$defs/non_empty_string" },
|
||||
"enabled": { "type": "boolean" },
|
||||
"dirty": { "type": "boolean" },
|
||||
"role": { "$ref": "#/$defs/non_empty_string" }
|
||||
}
|
||||
},
|
||||
"answers": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/answer" }
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["id", "question", "state", "answer", "evidence"],
|
||||
"properties": {
|
||||
"id": { "$ref": "#/$defs/non_empty_string" },
|
||||
"question": { "$ref": "#/$defs/non_empty_string" },
|
||||
"state": {
|
||||
"enum": ["answered", "assumed", "not_applicable", "not_assessed"]
|
||||
},
|
||||
"answer": {
|
||||
"type": ["string", "array", "null"],
|
||||
"items": { "type": "string" }
|
||||
},
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/evidence" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"assessed_item": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"requirement",
|
||||
"status",
|
||||
"evidence",
|
||||
"conditions",
|
||||
"gaps",
|
||||
"risks",
|
||||
"recommendation",
|
||||
"proof_check"
|
||||
],
|
||||
"properties": {
|
||||
"id": { "$ref": "#/$defs/non_empty_string" },
|
||||
"requirement": { "$ref": "#/$defs/non_empty_string" },
|
||||
"status": { "$ref": "#/$defs/status" },
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/evidence" }
|
||||
},
|
||||
"conditions": { "$ref": "#/$defs/string_list" },
|
||||
"gaps": { "$ref": "#/$defs/string_list" },
|
||||
"risks": { "$ref": "#/$defs/string_list" },
|
||||
"recommendation": { "type": "string" },
|
||||
"proof_check": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"data_flow": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["id", "from", "to", "data", "trust_boundary", "controls"],
|
||||
"properties": {
|
||||
"id": { "$ref": "#/$defs/non_empty_string" },
|
||||
"from": { "$ref": "#/$defs/non_empty_string" },
|
||||
"to": { "$ref": "#/$defs/non_empty_string" },
|
||||
"data": { "$ref": "#/$defs/string_list" },
|
||||
"trust_boundary": { "$ref": "#/$defs/non_empty_string" },
|
||||
"controls": { "$ref": "#/$defs/string_list" }
|
||||
}
|
||||
},
|
||||
"risk": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["id", "statement", "impact", "treatment", "owner", "residual_risk"],
|
||||
"properties": {
|
||||
"id": { "$ref": "#/$defs/non_empty_string" },
|
||||
"statement": { "$ref": "#/$defs/non_empty_string" },
|
||||
"impact": { "$ref": "#/$defs/non_empty_string" },
|
||||
"treatment": { "$ref": "#/$defs/non_empty_string" },
|
||||
"owner": { "type": ["string", "null"] },
|
||||
"residual_risk": { "$ref": "#/$defs/non_empty_string" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user