{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://itdojp.github.io/categorical-software-design-book/docs/spec/context-pack-v1.schema.json", "title": "Context Pack v1", "type": "object", "additionalProperties": true, "required": [ "version", "name", "problem_statement", "domain_glossary", "objects", "morphisms", "diagrams", "constraints", "acceptance_tests", "coding_conventions", "forbidden_changes" ], "properties": { "version": { "type": "integer", "minimum": 1 }, "name": { "type": "string", "minLength": 1 }, "problem_statement": { "type": "object", "additionalProperties": true, "required": ["goals", "non_goals"], "properties": { "goals": { "type": "array", "items": { "type": "string" } }, "non_goals": { "type": "array", "items": { "type": "string" } } } }, "domain_glossary": { "type": "object", "additionalProperties": true, "required": ["terms"], "properties": { "terms": { "type": "array", "items": { "type": "object", "additionalProperties": true, "required": ["term", "ja"], "properties": { "term": { "type": "string", "minLength": 1 }, "ja": { "type": "string", "minLength": 1 }, "note": { "type": "string" } } } } } }, "objects": { "type": "array", "items": { "type": "object", "additionalProperties": true, "required": ["id", "kind"], "properties": { "id": { "type": "string", "minLength": 1 }, "kind": { "type": "string", "minLength": 1 }, "states": { "type": "array", "items": { "type": "string" } }, "fields": { "type": "array", "items": { "type": "string" } } } } }, "morphisms": { "type": "array", "items": { "type": "object", "additionalProperties": true, "required": ["id", "input", "output", "pre", "post", "failures"], "properties": { "id": { "type": "string", "minLength": 1 }, "input": { "type": "object", "additionalProperties": true }, "output": { "type": "object", "additionalProperties": true }, "pre": { "type": "array", "items": { "type": "string" } }, "post": { "type": "array", "items": { "type": "string" } }, "failures": { "type": "array", "items": { "type": "string" } } } } }, "diagrams": { "type": "array", "items": { "type": "object", "additionalProperties": true, "required": ["id", "statement", "verification"], "properties": { "id": { "type": "string", "minLength": 1 }, "statement": { "type": "string", "minLength": 1 }, "verification": { "type": "array", "items": { "type": "string" } } } } }, "constraints": { "type": "object", "additionalProperties": true }, "acceptance_tests": { "type": "array", "items": { "type": "object", "additionalProperties": true, "required": ["id", "scenario", "expected"], "properties": { "id": { "type": "string", "minLength": 1 }, "scenario": { "type": "string", "minLength": 1 }, "expected": { "type": "array", "items": { "type": "string" } } } } }, "coding_conventions": { "type": "object", "additionalProperties": true, "required": ["language", "directory", "dependencies"], "properties": { "language": { "type": "string" }, "directory": { "type": "array", "items": { "type": "string" } }, "dependencies": { "type": "object", "additionalProperties": true } } }, "forbidden_changes": { "type": "array", "items": { "type": "string" } } } }