# security-case-types tools Validator and renderer for SecurityCaseTypes and SecurityCases (`canon/standards/security-case-types_v0.1.md`, schemas `canon/schemas/security-case-type_v0.1.schema.json` and `security-case_v0.1.schema.json`). ```bash # a type directory: type.yaml, README.md sections, tests, example cases python3 tools/security-case-types/security_case_validator.py validate-type security-case-types/ # a case against its type (security-case-types//type.yaml) python3 tools/security-case-types/security_case_validator.py validate-case --types security-case-types # render a case into the composer's plan plus materialization, follow-through, # verification and rollback; execution is never permitted python3 tools/security-case-types/security_case_validator.py render \ --types security-case-types capabilities/playbooks/*.yaml ``` Only `implemented` types accept cases. `--allow-unimplemented` exists for a type's own example cases while the type is being written and acknowledged. The validator refuses, among other things: missing sections, unknown or unpinned capabilities, attended steps without justification, steps or materialized items without a rollback, verification without a negative check or that reads a value, templates with unknown parameters, credential-shaped values anywhere, secret parameters that are not custody references, and high-risk types without founder acceptance. To start a type: copy `security-case-types/_template/`, rename the directory to the type id, and rewrite every section. The template's tests travel with it. Tests: `python3 -m pytest tools/security-case-types/tests security-case-types/*/tests`.