{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/data.schema.json",
  "title": "Codeops Playbook",
  "description": "Cuddler-compliant schema for the canonical Codeops Playbook data document.",
  "for-ai": [
    {
      "instruction": "Summarize when an AI consumer should use this Artifact Definition.",
      "input": "",
      "output": "Use the Codeops Playbook Artifact Definition to validate and publish governed repository playbooks, implementation guidance, testing strategy, architecture notes, and related codeops child-schema documents as one aligned public bundle."
    }
  ],
  "type": "object",
  "additionalProperties": false,
  "required": [
    "$schema",
    "meta",
    "content",
    "assets",
    "references",
    "annotations"
  ],
  "cuddler": {
    "specVersion": "1.0.0-draft.7",
    "documentTypeId": "codeops-playbook",
    "schemaVersion": "1.0.0",
    "output": {
      "primaryContentType": "application/json",
      "supportedContentTypes": [
        "application/json"
      ]
    },
    "profile": {
      "id": "codeops-playbook",
      "version": "1.0.0",
      "description": "Codeops Playbook schema family layered on the Cuddler d7 core data specification."
    },
    "schemaLinks": [
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-purpose-and-product-scope.schema.json",
        "targetDocumentTypeId": "codeops-playbook-purpose-and-product-scope",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Purpose and Product Scope."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-target-architecture.schema.json",
        "targetDocumentTypeId": "codeops-playbook-target-architecture",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Target architecture."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-current-source-system-understanding.schema.json",
        "targetDocumentTypeId": "codeops-playbook-current-source-system-understanding",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Current source-system understanding."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-integration-pattern-from-existing-tools.schema.json",
        "targetDocumentTypeId": "codeops-playbook-integration-pattern-from-existing-tools",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Integration Pattern From Existing Tools."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-supported-providers-and-evidence-codes.schema.json",
        "targetDocumentTypeId": "codeops-playbook-supported-providers-and-evidence-codes",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Supported Hosts Platforms And Route Families."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-ui-and-routing.schema.json",
        "targetDocumentTypeId": "codeops-playbook-ui-and-routing",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UI and routing."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-api-integration-and-sync-engine.schema.json",
        "targetDocumentTypeId": "codeops-playbook-api-integration-and-sync-engine",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for API integration and runtime data flow."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-canonical-log-contract.schema.json",
        "targetDocumentTypeId": "codeops-playbook-canonical-log-contract",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Canonical log contract."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-local-storage-and-evidence-model.schema.json",
        "targetDocumentTypeId": "codeops-playbook-local-storage-and-evidence-model",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Local storage and workspace state model."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-authentication-and-security.schema.json",
        "targetDocumentTypeId": "codeops-playbook-authentication-and-security",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Authentication and security."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-telemetry-and-operations.schema.json",
        "targetDocumentTypeId": "codeops-playbook-telemetry-and-operations",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Telemetry and operations."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-deployment-and-publishing-strategy.schema.json",
        "targetDocumentTypeId": "codeops-playbook-deployment-and-publishing-strategy",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Deployment and publishing strategy."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case-driven-development.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case-driven-development",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Use-Case-Driven Development."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-imported-use-case-catalog.schema.json",
        "targetDocumentTypeId": "codeops-playbook-imported-use-case-catalog",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Imported Use-Case Catalog."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-gap-analysis-and-resolutions.schema.json",
        "targetDocumentTypeId": "codeops-playbook-gap-analysis-and-resolutions",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Gap Analysis And Resolutions."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-target-use-case-catalog.schema.json",
        "targetDocumentTypeId": "codeops-playbook-target-use-case-catalog",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Target Use-Case Catalog."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-route-api-use-case-matrix.schema.json",
        "targetDocumentTypeId": "codeops-playbook-route-api-use-case-matrix",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Route API Use-Case Matrix."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-project-structure-and-boundaries.schema.json",
        "targetDocumentTypeId": "codeops-playbook-project-structure-and-boundaries",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Project structure and boundaries."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-deterministic-project-and-dependency-map.schema.json",
        "targetDocumentTypeId": "codeops-playbook-deterministic-project-and-dependency-map",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Deterministic project and dependency map."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-pattern-catalog.schema.json",
        "targetDocumentTypeId": "codeops-playbook-pattern-catalog",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Pattern Catalog."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-pattern.schema.json",
        "targetDocumentTypeId": "codeops-playbook-pattern",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for repository-specific implementation pattern documents."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-testing-strategy.schema.json",
        "targetDocumentTypeId": "codeops-playbook-testing-strategy",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Testing Strategy."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-evidence-sync-test-case-inventory.schema.json",
        "targetDocumentTypeId": "codeops-playbook-evidence-sync-test-case-inventory",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Hybrid Route And Host Test Case Inventory."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-ai-multi-agent-execution.schema.json",
        "targetDocumentTypeId": "codeops-playbook-ai-multi-agent-execution",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for AI Multi-Agent Execution."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-cicd-and-pr-rules.schema.json",
        "targetDocumentTypeId": "codeops-playbook-cicd-and-pr-rules",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for CI/CD And PR Rules."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-manual-vs-ai-responsibilities.schema.json",
        "targetDocumentTypeId": "codeops-playbook-manual-vs-ai-responsibilities",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Manual Vs AI Responsibilities."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-acceptance-metrics.schema.json",
        "targetDocumentTypeId": "codeops-playbook-acceptance-metrics",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Acceptance Metrics."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-validator-and-completeness-matrix.schema.json",
        "targetDocumentTypeId": "codeops-playbook-validator-and-completeness-matrix",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Validator And Completeness Matrix."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-implementation-sequence.schema.json",
        "targetDocumentTypeId": "codeops-playbook-implementation-sequence",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Implementation Sequence."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-final-rules.schema.json",
        "targetDocumentTypeId": "codeops-playbook-final-rules",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Final Rules."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-references.schema.json",
        "targetDocumentTypeId": "codeops-playbook-references",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for References."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-amendment.schema.json",
        "targetDocumentTypeId": "codeops-playbook-amendment",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for A-20260315 - Dual host shared UI contract."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-amendment.schema.json",
        "targetDocumentTypeId": "codeops-playbook-amendment",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for A-20260316 - Telerik ListBox for flat workflow lists."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-amendment.schema.json",
        "targetDocumentTypeId": "codeops-playbook-amendment",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for A-20260318 - Dashboard canonical navigation without return-route query."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-amendment.schema.json",
        "targetDocumentTypeId": "codeops-playbook-amendment",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for A-20260318 - Dashboard job card parity contract."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-amendment.schema.json",
        "targetDocumentTypeId": "codeops-playbook-amendment",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for A-20260318 - Dashboard root omits breadcrumbs."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-amendment.schema.json",
        "targetDocumentTypeId": "codeops-playbook-amendment",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for A-20260318 - Route-linked items use GUID ids."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-amendment.schema.json",
        "targetDocumentTypeId": "codeops-playbook-amendment",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for A-20260318 - Shared workflow sidebar card size."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-playwright-readiness-checklist.schema.json",
        "targetDocumentTypeId": "codeops-playbook-playwright-readiness-checklist",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for Playwright Readiness Checklist."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-procedure.schema.json",
        "targetDocumentTypeId": "codeops-playbook-procedure",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for repository-specific implementation procedures."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-API-001-resolve-shared-route-metadata-and-shell-content."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-DASHBOARD-001-browse-dashboard-overview-board."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-DASHBOARD-002-browse-dashboard-stage-routes."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-DASHBOARD-003-browse-dashboard-backlog-details."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-DASHBOARD-004-browse-dashboard-backlog-queue."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-LIBRARY-001-browse-workflow-libraries."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-LIBRARY-002-view-workflow-library-detail."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-LIBRARY-003-view-workflow-detail-and-step-runner-context."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-NATIVE-001-use-the-native-maui-title-bar-and-window-shell."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-ROUTING-001-navigate-canonical-routes."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-SETTINGS-001-manage-settings-surfaces."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-SHELL-001-host-shared-routed-ui-in-browser-and-maui."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-WORKFLOW-001-browse-workspace-workflows."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-WORKFLOW-002-view-workspace-workflow-detail-and-step-runner-context."
          }
        ]
      },
      {
        "rel": "catalog-entry",
        "targetSchema": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/codeops-playbook-use-case.schema.json",
        "targetDocumentTypeId": "codeops-playbook-use-case",
        "for-ai": [
          {
            "instruction": "Explain why this linked schema is related and when an AI consumer should follow it.",
            "input": "",
            "output": "Catalog entry schema for UC-WORKSPACE-001-select-and-review-workspaces."
          }
        ]
      }
    ]
  },
  "properties": {
    "$schema": {
      "type": "string",
      "format": "uri",
      "const": "https://www.cuddler.dev/standards/artifact-definitions/codeops-playbook/1.0.0/data.schema.json",
      "description": "Absolute URI for this immutable Playbook schema."
    },
    "meta": {
      "$ref": "#/$defs/meta",
      "description": "Document identity and authorship metadata."
    },
    "content": {
      "$ref": "#/$defs/content",
      "description": "Human-readable sections plus the structured document model."
    },
    "assets": {
      "$ref": "#/$defs/assets",
      "description": "Asset library for asset blocks."
    },
    "references": {
      "type": "array",
      "description": "External references used by the canonical Playbook.",
      "items": {
        "$ref": "#/$defs/reference"
      }
    },
    "annotations": {
      "type": "array",
      "description": "Scalar annotations for non-canonical helper metadata.",
      "items": {
        "$ref": "#/$defs/annotation"
      }
    }
  },
  "$defs": {
    "uuid": {
      "type": "string",
      "format": "uuid",
      "description": "RFC 4122 UUID string."
    },
    "kebabKey": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{2,62}$",
      "description": "Stable kebab-case identifier."
    },
    "nonEmptyString": {
      "type": "string",
      "minLength": 1,
      "description": "Non-empty string value."
    },
    "pathString": {
      "type": "string",
      "minLength": 1,
      "allOf": [
        {
          "pattern": "^(?![A-Za-z]:[\\\\/])(?!/)(?!file:).+$"
        },
        {
          "pattern": "^(?!.*\\\\).+$"
        },
        {
          "pattern": "^(?!.*//).+$"
        },
        {
          "pattern": "^(?!.*(?:^|/)\\.(?:/|$)).+$"
        },
        {
          "pattern": "^(?!.*(?:^|/)\\.\\.(?:/|$)).+$"
        }
      ],
      "description": "Repository-relative POSIX-style path."
    },
    "stringArray": {
      "type": "array",
      "description": "Ordered list of non-empty strings.",
      "items": {
        "$ref": "#/$defs/nonEmptyString"
      }
    },
    "author": {
      "type": "object",
      "additionalProperties": false,
      "description": "Playbook author or maintainer identity.",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/uuid",
          "description": "Author UUID."
        },
        "name": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Author display name."
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Optional author email address."
        }
      }
    },
    "meta": {
      "type": "object",
      "additionalProperties": false,
      "description": "Playbook identity, version, timestamps, and authorship.",
      "required": [
        "documentId",
        "documentTypeId",
        "schemaVersion",
        "title",
        "createdAt",
        "updatedAt",
        "authors"
      ],
      "properties": {
        "documentId": {
          "$ref": "#/$defs/uuid",
          "description": "Document UUID."
        },
        "documentTypeId": {
          "type": "string",
          "const": "codeops-playbook",
          "description": "Stable document type identifier."
        },
        "schemaVersion": {
          "type": "string",
          "const": "1.0.0",
          "description": "Playbook schema version."
        },
        "title": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Human-readable document title."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Creation timestamp for the canonical JSON Playbook."
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Last update timestamp for the canonical JSON Playbook."
        },
        "authors": {
          "type": "array",
          "minItems": 1,
          "description": "Ordered list of playbook authors.",
          "items": {
            "$ref": "#/$defs/author"
          }
        },
        "summary": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Short summary of the playbook purpose."
        }
      }
    },
    "textBlock": {
      "type": "object",
      "additionalProperties": false,
      "description": "Free-form text block.",
      "required": [
        "kind",
        "blockId",
        "text"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "text",
          "description": "Block kind discriminator."
        },
        "blockId": {
          "$ref": "#/$defs/uuid",
          "description": "Unique block UUID."
        },
        "text": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Block body text."
        },
        "format": {
          "type": "string",
          "enum": [
            "markdown",
            "plain"
          ],
          "description": "Text serialization format."
        }
      }
    },
    "bulletsBlock": {
      "type": "object",
      "additionalProperties": false,
      "description": "Ordered or unordered bullet list block.",
      "required": [
        "kind",
        "blockId",
        "items"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "bullets",
          "description": "Block kind discriminator."
        },
        "blockId": {
          "$ref": "#/$defs/uuid",
          "description": "Unique block UUID."
        },
        "style": {
          "type": "string",
          "enum": [
            "unordered",
            "ordered"
          ],
          "description": "Preferred bullet rendering style."
        },
        "intro": {
          "type": "string",
          "minLength": 1,
          "description": "Optional intro sentence for the list."
        },
        "items": {
          "type": "array",
          "minItems": 1,
          "description": "List items in display order.",
          "items": {
            "$ref": "#/$defs/nonEmptyString"
          }
        }
      }
    },
    "tableColumn": {
      "type": "object",
      "additionalProperties": false,
      "description": "Table column definition.",
      "required": [
        "key",
        "heading",
        "description"
      ],
      "properties": {
        "key": {
          "$ref": "#/$defs/kebabKey",
          "description": "Stable column key."
        },
        "heading": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Rendered column heading."
        },
        "description": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Meaning of the column values."
        }
      }
    },
    "tableBlock": {
      "type": "object",
      "additionalProperties": false,
      "description": "Table block with explicit columns and rows.",
      "required": [
        "kind",
        "blockId",
        "columns",
        "rows"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "table",
          "description": "Block kind discriminator."
        },
        "blockId": {
          "$ref": "#/$defs/uuid",
          "description": "Unique block UUID."
        },
        "columns": {
          "type": "array",
          "minItems": 1,
          "description": "Column definitions in order.",
          "items": {
            "$ref": "#/$defs/tableColumn"
          }
        },
        "rows": {
          "type": "array",
          "description": "Table rows in order.",
          "items": {
            "type": "array",
            "description": "One rendered row.",
            "items": {
              "type": "string",
              "description": "Cell text value."
            }
          }
        }
      }
    },
    "assetBlock": {
      "type": "object",
      "additionalProperties": false,
      "description": "Asset reference block.",
      "required": [
        "kind",
        "blockId",
        "assetId"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "asset",
          "description": "Block kind discriminator."
        },
        "blockId": {
          "$ref": "#/$defs/uuid",
          "description": "Unique block UUID."
        },
        "assetId": {
          "$ref": "#/$defs/uuid",
          "description": "Referenced asset UUID."
        },
        "caption": {
          "type": "string",
          "minLength": 1,
          "description": "Optional asset caption."
        }
      }
    },
    "block": {
      "description": "Allowed Playbook block with kind-specific fields enforced structurally.",
      "oneOf": [
        {
          "$ref": "#/$defs/textBlock"
        },
        {
          "$ref": "#/$defs/bulletsBlock"
        },
        {
          "$ref": "#/$defs/tableBlock"
        },
        {
          "$ref": "#/$defs/assetBlock"
        }
      ]
    },
    "section": {
      "type": "object",
      "additionalProperties": false,
      "description": "Top-level or nested Playbook section.",
      "required": [
        "key",
        "heading",
        "blocks"
      ],
      "properties": {
        "key": {
          "$ref": "#/$defs/kebabKey",
          "description": "Section key."
        },
        "heading": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Section heading."
        },
        "blocks": {
          "type": "array",
          "minItems": 1,
          "description": "Content blocks for the section.",
          "items": {
            "$ref": "#/$defs/block"
          }
        },
        "subsections": {
          "type": "array",
          "description": "Nested subsections for this section.",
          "items": {
            "$ref": "#/$defs/section"
          }
        }
      }
    },
    "asset": {
      "type": "object",
      "additionalProperties": false,
      "description": "Asset descriptor in the document asset library.",
      "required": [
        "id",
        "kind",
        "title",
        "altText",
        "locator"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/uuid",
          "description": "Asset UUID."
        },
        "kind": {
          "type": "string",
          "enum": [
            "file",
            "link"
          ],
          "description": "Asset type discriminator."
        },
        "title": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Asset title."
        },
        "altText": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Accessible asset description."
        },
        "contentType": {
          "type": "string",
          "minLength": 1,
          "description": "Optional MIME type."
        },
        "locator": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Asset locator or repository path."
        }
      }
    },
    "assets": {
      "type": "object",
      "additionalProperties": false,
      "description": "Strict asset container.",
      "required": [
        "library"
      ],
      "properties": {
        "library": {
          "type": "array",
          "description": "Asset library entries.",
          "items": {
            "$ref": "#/$defs/asset"
          }
        }
      }
    },
    "reference": {
      "type": "object",
      "additionalProperties": false,
      "description": "External reference record.",
      "required": [
        "id",
        "title",
        "locator"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/uuid",
          "description": "Reference UUID."
        },
        "title": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Reference title."
        },
        "locator": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Reference locator."
        },
        "kind": {
          "type": "string",
          "minLength": 1,
          "description": "Optional reference kind."
        },
        "notes": {
          "type": "string",
          "minLength": 1,
          "description": "Optional explanation of the reference."
        }
      }
    },
    "annotation": {
      "type": "object",
      "additionalProperties": false,
      "description": "Scalar annotation record.",
      "required": [
        "key",
        "value"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9.-]*:[a-z0-9][a-z0-9-]*$",
          "description": "Namespaced annotation key."
        },
        "value": {
          "description": "Scalar annotation value.",
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        }
      }
    },
    "repository": {
      "type": "object",
      "additionalProperties": false,
      "description": "Repository-level Playbook metadata.",
      "required": [
        "name",
        "rootPath",
        "canonicalDataPath",
        "schemaPath",
        "compatibilityFiles"
      ],
      "properties": {
        "name": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Repository name."
        },
        "rootPath": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Repository root path marker."
        },
        "canonicalDataPath": {
          "$ref": "#/$defs/pathString",
          "description": "Canonical Playbook JSON path."
        },
        "schemaPath": {
          "$ref": "#/$defs/pathString",
          "description": "Repository Playbook schema path."
        },
        "compatibilityFiles": {
          "type": "array",
          "description": "Compatibility markdown files retained after JSON migration.",
          "items": {
            "$ref": "#/$defs/pathString"
          }
        }
      }
    },
    "entrypoints": {
      "type": "object",
      "additionalProperties": false,
      "description": "Repository and Playbook entrypoint paths.",
      "required": [
        "repositoryAgentsPath",
        "repositoryReadmePath",
        "playbookDataPath",
        "compatibilityReadmePath"
      ],
      "properties": {
        "repositoryAgentsPath": {
          "$ref": "#/$defs/pathString",
          "description": "Repository AGENTS entrypoint path."
        },
        "repositoryReadmePath": {
          "$ref": "#/$defs/pathString",
          "description": "Repository README path."
        },
        "playbookDataPath": {
          "$ref": "#/$defs/pathString",
          "description": "Canonical Playbook JSON path."
        },
        "compatibilityReadmePath": {
          "$ref": "#/$defs/pathString",
          "description": "Compatibility Playbook README path."
        },
        "compatibilityAgentsPath": {
          "$ref": "#/$defs/pathString",
          "description": "Optional legacy compatibility Playbook AGENTS path."
        }
      }
    },
    "documentEntry": {
      "type": "object",
      "additionalProperties": false,
      "description": "One catalog entry inside the canonical Playbook.",
      "required": [
        "key",
        "path",
        "title",
        "kind",
        "scope",
        "priority",
        "canonicalOwnerPath",
        "whenToLoad",
        "appliesToPaths",
        "relatedTopics",
        "routeScope",
        "relatedDocumentPaths",
        "triggerConditions",
        "lastReviewed",
        "sourceFormat",
        "bodyMarkdown"
      ],
      "properties": {
        "key": {
          "$ref": "#/$defs/kebabKey",
          "description": "Stable catalog entry key."
        },
        "path": {
          "$ref": "#/$defs/pathString",
          "description": "Catalog entry path."
        },
        "title": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Catalog entry title."
        },
        "kind": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Catalog entry kind."
        },
        "scope": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Catalog entry scope."
        },
        "priority": {
          "type": "string",
          "enum": [
            "always",
            "targeted",
            "fallback",
            "override"
          ],
          "description": "Catalog entry loading priority."
        },
        "canonicalOwnerPath": {
          "$ref": "#/$defs/pathString",
          "description": "Owning canonical path for the rule."
        },
        "whenToLoad": {
          "$ref": "#/$defs/stringArray",
          "description": "Guidance for when to load this entry."
        },
        "appliesToPaths": {
          "$ref": "#/$defs/stringArray",
          "description": "Affected repository paths."
        },
        "relatedTopics": {
          "$ref": "#/$defs/stringArray",
          "description": "Related retrieval topics."
        },
        "routeScope": {
          "type": "array",
          "description": "Covered routes or route-like surfaces.",
          "items": {
            "$ref": "#/$defs/nonEmptyString"
          }
        },
        "relatedDocumentPaths": {
          "type": "array",
          "description": "Related catalog entry paths.",
          "items": {
            "$ref": "#/$defs/pathString"
          }
        },
        "baseDocumentPath": {
          "type": "string",
          "description": "Optional base document path for amendments or overrides."
        },
        "triggerConditions": {
          "$ref": "#/$defs/stringArray",
          "description": "Additional trigger guidance."
        },
        "lastReviewed": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "description": "Last reviewed date."
        },
        "sourceFormat": {
          "type": "string",
          "enum": [
            "markdown",
            "markdown-compatibility",
            "generated-json"
          ],
          "description": "Origin format of the embedded source content."
        },
        "sourcePath": {
          "$ref": "#/$defs/pathString",
          "description": "Optional backing repository path for the embedded source."
        },
        "bodyMarkdown": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Embedded markdown or markdown-like source body."
        },
        "schemaUri": {
          "type": "string",
          "format": "uri",
          "description": "Absolute schema URI for the generated Cuddler document referenced by this catalog entry."
        },
        "schemaPath": {
          "$ref": "#/$defs/pathString",
          "description": "Optional repository-relative path to a local schema copy or mirror for offline validation."
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "sourceFormat": {
                "const": "generated-json"
              }
            },
            "required": [
              "sourceFormat"
            ]
          },
          "then": {
            "required": [
              "sourcePath",
              "schemaUri"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "procedure"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "required": [
              "sourcePath",
              "schemaUri",
              "schemaPath",
              "baseDocumentPath"
            ],
            "properties": {
              "path": {
                "pattern": "^Playbook/docs/procedures/.+\\.json$"
              },
              "canonicalOwnerPath": {
                "pattern": "^Playbook/docs/procedures/.+\\.json$"
              },
              "sourceFormat": {
                "const": "generated-json"
              },
              "sourcePath": {
                "pattern": "^Playbook/docs/procedures/.+\\.json$"
              },
              "schemaPath": {
                "const": "Playbook/schemas/procedure.schema.json"
              },
              "baseDocumentPath": {
                "type": "string",
                "minLength": 1
              },
              "relatedDocumentPaths": {
                "type": "array",
                "minItems": 1
              }
            }
          }
        }
      ]
    },
    "taskContext": {
      "type": "object",
      "additionalProperties": false,
      "description": "Task-intent routing rule.",
      "required": [
        "id",
        "description",
        "load"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/kebabKey",
          "description": "Task context identifier."
        },
        "description": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Human-readable task context description."
        },
        "load": {
          "type": "array",
          "minItems": 1,
          "description": "Catalog paths to load for this task context.",
          "items": {
            "$ref": "#/$defs/pathString"
          }
        }
      }
    },
    "pathContext": {
      "type": "object",
      "additionalProperties": false,
      "description": "Path-based routing rule.",
      "required": [
        "match",
        "load"
      ],
      "properties": {
        "match": {
          "$ref": "#/$defs/nonEmptyString",
          "description": "Path glob or matcher string."
        },
        "load": {
          "type": "array",
          "minItems": 1,
          "description": "Catalog paths to load for this path context.",
          "items": {
            "$ref": "#/$defs/pathString"
          }
        }
      }
    },
    "workerContext": {
      "type": "object",
      "additionalProperties": false,
      "description": "Delegated worker context pack.",
      "required": [
        "worker",
        "load"
      ],
      "properties": {
        "worker": {
          "$ref": "#/$defs/kebabKey",
          "description": "Worker lane key."
        },
        "load": {
          "type": "array",
          "minItems": 1,
          "description": "Catalog paths for this worker lane.",
          "items": {
            "$ref": "#/$defs/pathString"
          }
        }
      }
    },
    "verificationRule": {
      "type": "object",
      "additionalProperties": false,
      "description": "Validation rule for a change type.",
      "required": [
        "changeType",
        "documents",
        "validations"
      ],
      "properties": {
        "changeType": {
          "$ref": "#/$defs/kebabKey",
          "description": "Change-type identifier."
        },
        "documents": {
          "type": "array",
          "minItems": 1,
          "description": "Catalog paths that govern this change type.",
          "items": {
            "$ref": "#/$defs/pathString"
          }
        },
        "validations": {
          "$ref": "#/$defs/stringArray",
          "description": "Validation expectations for the change type."
        }
      }
    },
    "maintenance": {
      "type": "object",
      "additionalProperties": false,
      "description": "Playbook maintenance metadata.",
      "required": [
        "validationCommands",
        "notes"
      ],
      "properties": {
        "validationCommands": {
          "$ref": "#/$defs/stringArray",
          "description": "Commands used to validate the canonical Playbook."
        },
        "notes": {
          "type": "array",
          "description": "Maintenance notes and conventions.",
          "items": {
            "$ref": "#/$defs/nonEmptyString"
          }
        }
      }
    },
    "documentModel": {
      "type": "object",
      "additionalProperties": false,
      "description": "Normalized machine-readable Playbook model.",
      "required": [
        "repository",
        "entrypoints",
        "documents",
        "taskContexts",
        "pathContexts",
        "workerContexts",
        "verificationMatrix",
        "maintenance"
      ],
      "properties": {
        "repository": {
          "$ref": "#/$defs/repository",
          "description": "Repository-level Playbook metadata."
        },
        "entrypoints": {
          "$ref": "#/$defs/entrypoints",
          "description": "Entrypoint paths for repository and Playbook consumers."
        },
        "documents": {
          "type": "array",
          "minItems": 1,
          "description": "Catalog entries embedded in the canonical Playbook.",
          "items": {
            "$ref": "#/$defs/documentEntry"
          }
        },
        "taskContexts": {
          "type": "array",
          "description": "Task-intent routing contexts.",
          "items": {
            "$ref": "#/$defs/taskContext"
          }
        },
        "pathContexts": {
          "type": "array",
          "description": "Path-based routing contexts.",
          "items": {
            "$ref": "#/$defs/pathContext"
          }
        },
        "workerContexts": {
          "type": "array",
          "description": "Worker-lane context packs.",
          "items": {
            "$ref": "#/$defs/workerContext"
          }
        },
        "verificationMatrix": {
          "type": "array",
          "description": "Change-type validation rules.",
          "items": {
            "$ref": "#/$defs/verificationRule"
          }
        },
        "maintenance": {
          "$ref": "#/$defs/maintenance",
          "description": "Maintenance commands and notes."
        }
      }
    },
    "content": {
      "type": "object",
      "additionalProperties": false,
      "description": "Human-readable sections plus the normalized document model.",
      "required": [
        "sections",
        "documentModel"
      ],
      "properties": {
        "sections": {
          "type": "array",
          "minItems": 6,
          "description": "Top-level Cuddler sections for human-readable Playbook content.",
          "items": {
            "$ref": "#/$defs/section"
          }
        },
        "documentModel": {
          "$ref": "#/$defs/documentModel",
          "description": "Normalized machine-readable Playbook data model."
        }
      }
    }
  }
}
