net-kingdom/canon/schemas/security-case_v0.1.schema.json
tegwick d8cf42bab6
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 4s
NK-WP-0048: canon accepted; SecurityCaseType schemas, validator and template (T01, T03)
security-case-types_v0.1 accepted by the founder 2026-10-08. Adds JSON schemas
for types and cases, tools/security-case-types/security_case_validator.py
(validate-type, validate-case, render via the scenario composer, plan-only),
and a runnable _template type with README sections, an example case and tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5457@bnt-lap001
Assistant-Session: 792bf84a-3783-4f5d-a811-cded61dd2012
2026-10-08 22:29:13 +02:00

56 lines
2.1 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://netkingdom.local/schemas/security-case_v0.1.schema.json",
"title": "NetKingdom SecurityCase v0.1",
"description": "Structure of a security case file (canon/standards/security-case-types_v0.1.md section 4). Parameter values are checked against the referenced type by tools/security-case-types/security_case_validator.py.",
"type": "object",
"additionalProperties": false,
"required": ["apiVersion", "kind", "spec"],
"properties": {
"apiVersion": {"const": "netkingdom.io/security-case/v0.1"},
"kind": {"const": "SecurityCase"},
"spec": {
"type": "object",
"additionalProperties": false,
"required": ["id", "type", "status", "owner", "parameters"],
"properties": {
"id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$"},
"type": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]*@\\d+\\.\\d+$"},
"status": {"enum": ["proposed", "accepted", "materialized", "live", "retired"]},
"owner": {
"type": "object",
"additionalProperties": false,
"required": ["repo", "person"],
"properties": {
"repo": {"type": "string", "minLength": 1},
"person": {"type": "string", "minLength": 1}
}
},
"parameters": {"type": "object"},
"acceptance": {
"type": "object",
"additionalProperties": false,
"required": ["at", "record", "by"],
"properties": {
"at": {"type": "string", "minLength": 1},
"record": {"type": "string", "minLength": 1},
"by": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["role", "name"],
"properties": {
"role": {"enum": ["owner", "founder"]},
"name": {"type": "string", "minLength": 1}
}
}
}
}
},
"receipts": {"type": "array", "items": {"type": "object"}}
}
}
}
}