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
56 lines
2.1 KiB
JSON
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"}}
|
|
}
|
|
}
|
|
}
|
|
}
|