{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://devrunbook.local/schemas/run-pack-manifest.schema.json", "title": "DevRunbook Run Pack Manifest", "type": "object", "additionalProperties": false, "required": ["apiVersion", "kind", "run", "files", "manifestDigest"], "properties": { "apiVersion": {"const": "devrunbook.io/v1alpha1"}, "kind": {"const": "RunPackManifest"}, "run": { "type": "object", "additionalProperties": false, "required": ["id", "playbookId", "playbookVersion", "playbookDigest", "renderDigest", "generatedAt", "platformVersion"], "properties": { "id": {"type": "string", "minLength": 8, "maxLength": 100}, "playbookId": {"type": "string", "minLength": 3, "maxLength": 120}, "playbookVersion": {"type": "string", "minLength": 5, "maxLength": 50}, "playbookDigest": {"$ref": "#/$defs/sha256"}, "repositoryProfileDigest": {"oneOf": [{"$ref": "#/$defs/sha256"}, {"type": "null"}]}, "renderDigest": {"$ref": "#/$defs/sha256"}, "generatedAt": {"type": "string", "format": "date-time"}, "platformVersion": {"type": "string", "minLength": 1, "maxLength": 80} } }, "files": { "type": "array", "minItems": 1, "maxItems": 100, "items": { "type": "object", "additionalProperties": false, "required": ["path", "mediaType", "sizeBytes", "sha256"], "properties": { "path": {"$ref": "#/$defs/safePath"}, "mediaType": {"type": "string", "minLength": 3, "maxLength": 120}, "sizeBytes": {"type": "integer", "minimum": 0}, "sha256": {"$ref": "#/$defs/sha256"} } } }, "manifestDigest": { "description": "SHA-256 of the RFC 8785 canonical JSON bytes of this manifest with manifestDigest omitted.", "$ref": "#/$defs/sha256" } }, "$defs": { "sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"}, "safePath": {"type": "string", "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*//)[A-Za-z0-9._/-]+$", "maxLength": 500} } }