{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://cdsl.local/schema/cad.generation-spec.v1", "title": "CDSL GenerationSpec", "type": "object", "additionalProperties": false, "properties": { "schema": {"const": "cad.generation-spec.v1"}, "schema_version": {"const": "1.0"}, "mode": {"enum": ["create", "revise"]}, "base_revision_id": {"type": "string"}, "patch_intent": {"type": "string"}, "part": {"$ref": "#/$defs/part"}, "parameters": {"type": "object", "additionalProperties": {"$ref": "#/$defs/parameter"}}, "features": {"type": "array", "items": {"$ref": "#/$defs/feature"}}, "constraints": {"type": "array", "items": {"$ref": "#/$defs/constraint"}}, "acceptance": {"type": "array", "items": {"$ref": "#/$defs/acceptance"}}, "assumptions": {"type": "array", "items": {"type": "string", "minLength": 1}}, "approximations": {"type": "array", "items": {"$ref": "#/$defs/approximation"}}, "references": {"type": "array", "items": {"type": "object"}} }, "required": ["schema", "schema_version", "mode", "base_revision_id", "part", "parameters", "features", "constraints", "acceptance", "assumptions", "approximations", "references"], "$defs": { "part": { "type": "object", "additionalProperties": false, "properties": { "family": {"type": "string", "minLength": 1}, "name": {"type": "string", "minLength": 1}, "units": {"const": "mm"}, "coordinate_system": {"type": "string", "minLength": 1} }, "required": ["family", "name", "units", "coordinate_system"] }, "parameter": { "type": "object", "additionalProperties": false, "properties": { "value": {}, "unit": {"enum": ["mm", "deg", "rad", "count", ""]}, "source": {"enum": ["user", "technical_drawing", "image_estimate", "template_default", "derived_standard", "assumption"]}, "confidence": {"type": "number", "minimum": 0, "maximum": 1}, "locked": {"type": "boolean"}, "assumption": {"type": "string"} }, "required": ["value", "unit", "source", "confidence", "locked", "assumption"] }, "feature": { "type": "object", "additionalProperties": false, "properties": { "id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}, "kind": {"type": "string", "minLength": 1}, "depends_on": {"type": "array", "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}}, "parameters": {"type": "object"}, "semantic_role": {"type": "string"} }, "required": ["id", "kind", "depends_on", "parameters"] }, "constraint": { "type": "object", "additionalProperties": false, "properties": { "type": {"enum": ["less_than", "less_equal", "greater_than", "greater_equal", "equal", "inside_boundary", "symmetric", "same_axis", "distance", "count"]}, "left": {"type": "string"}, "right": {"type": "string"}, "value": {}, "feature": {"type": "string"}, "margin": {"type": "number"}, "ratio": {"type": "number"}, "message": {"type": "string"} }, "required": ["type"] }, "acceptance": { "type": "object", "additionalProperties": false, "properties": { "id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}, "type": {"enum": ["bbox", "solid_count", "feature_count", "hole_diameter", "hole_center", "hole_spacing", "wall_thickness", "overall_length", "overall_diameter", "coaxiality", "symmetry", "through_condition", "blind_depth"]}, "feature": {"type": "string"}, "expected": {}, "tolerance": {"type": "number", "minimum": 0}, "severity": {"enum": ["blocking", "warning", "informational"]} }, "required": ["id", "type", "expected", "tolerance", "severity"] }, "approximation": { "type": "object", "additionalProperties": false, "properties": { "request": {"type": "string", "minLength": 1}, "status": {"enum": ["approximated", "expanded", "omitted", "blocked"]}, "translation": {"type": "string", "minLength": 1}, "reason": {"type": "string", "minLength": 1} }, "required": ["request", "status", "translation", "reason"] } } }