{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Backup Manifest", "description": "Schema for backup-sovereign manifest.json files", "type": "object", "required": ["version", "node", "label", "run_id", "created_at", "sources", "archive"], "properties": { "version": { "type": "integer", "description": "Manifest schema version", "const": 1 }, "node": { "type": "string", "description": "Node identifier" }, "label": { "type": "string", "description": "Backup label (e.g., daily, weekly, manual)" }, "run_id": { "type": "string", "description": "Unique run identifier (node_label_timestamp)" }, "created_at": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp of backup creation" }, "sources": { "type": "array", "items": { "type": "string" }, "description": "List of source paths included in backup" }, "excludes": { "type": "array", "items": { "type": "string" }, "description": "List of exclude patterns" }, "archive": { "type": "object", "required": ["path", "bytes", "blake3"], "properties": { "path": { "type": "string", "description": "Relative path to archive file" }, "bytes": { "type": "integer", "description": "Archive size in bytes" }, "blake3": { "type": "string", "pattern": "^[a-f0-9]{64}$", "description": "BLAKE3 hash of archive" } } } } }