{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Pawprint Models", "description": "Platform-agnostic model definitions. Portable to TypeScript, Pydantic, Django, Prisma.", "definitions": { "Status": { "type": "string", "enum": ["pending", "planned", "building", "dev", "live", "ready"] }, "System": { "type": "string", "enum": ["artery", "album", "ward"] }, "Nest": { "type": "object", "description": "Runtime environment configuration. Shared across artery, ward.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "config_path": { "type": "string" } }, "required": ["name", "slug", "title"] }, "Larder": { "type": "object", "description": "Data storage. When generated from Template = 'Book (written)'. Independent in ward/artery.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "source_template": { "type": "string", "description": "Template name if generated" }, "data_path": { "type": "string", "description": "Path to data files" } }, "required": ["name", "slug", "title"] }, "Vein": { "type": "object", "description": "Connector (artery). Single responsibility.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "system": { "const": "artery" } }, "required": ["name", "slug", "title"] }, "Template": { "type": "object", "description": "Documentation template (album). Gherkin, BDD patterns.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "template_path": { "type": "string", "description": "Path to template files" }, "system": { "const": "album" } }, "required": ["name", "slug", "title"] }, "ToolType": { "type": "string", "enum": ["app", "cli"], "description": "Type of tool: app (web UI) or cli (command line)" }, "Tool": { "type": "object", "description": "Execution tool (ward). Test runners, seeders.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "system": { "const": "ward" }, "type": { "$ref": "#/definitions/ToolType" }, "description": { "type": "string", "description": "Human-readable description" }, "path": { "type": "string", "description": "Path to tool source" }, "url": { "type": "string", "description": "URL path for app tools" }, "cli": { "type": "string", "description": "CLI command for cli tools" } }, "required": ["name", "slug", "title"] }, "Monitor": { "type": "object", "description": "Service monitor (ward). Health checks, status watchers.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "system": { "const": "ward" } }, "required": ["name", "slug", "title"] }, "Cabinet": { "type": "object", "description": "Tool cabinet (ward). Contains 0+ tools.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "tools": { "type": "array", "items": { "$ref": "#/definitions/Tool" } }, "system": { "const": "ward" } }, "required": ["name", "slug", "title"] }, "Pulse": { "type": "object", "description": "Composed data flow (artery). Pulse = Vein + Nest + Larder.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "vein": { "$ref": "#/definitions/Vein" }, "nest": { "$ref": "#/definitions/Nest" }, "larder": { "$ref": "#/definitions/Larder" }, "system": { "const": "artery" } }, "required": ["name", "slug", "title"] }, "Book": { "type": "object", "description": "Composed documentation (album). Book = Template + Larder.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "template": { "$ref": "#/definitions/Template" }, "larder": { "$ref": "#/definitions/Larder" }, "output_larder": { "$ref": "#/definitions/Larder" }, "system": { "const": "album" } }, "required": ["name", "slug", "title"] }, "Table": { "type": "object", "description": "Composed execution bundle (ward). Table = Cabinet + Nest + Larders.", "properties": { "name": { "type": "string", "description": "Unique identifier" }, "slug": { "type": "string", "description": "URL-friendly identifier" }, "title": { "type": "string", "description": "Display title for UI" }, "status": { "$ref": "#/definitions/Status" }, "cabinet": { "$ref": "#/definitions/Cabinet" }, "nest": { "$ref": "#/definitions/Nest" }, "larders": { "type": "array", "items": { "$ref": "#/definitions/Larder" } }, "system": { "const": "ward" } }, "required": ["name", "slug", "title"] } } }