{
  "$comment": "Generated from the Site Pipeline Pydantic models. Do not edit by hand; regenerate with `make schemas`.",
  "$defs": {
    "StageCommand": {
      "description": "Stable stage-producing command modes.",
      "enum": [
        "build",
        "watch"
      ],
      "title": "StageCommand",
      "type": "string"
    },
    "StageDataFiles": {
      "additionalProperties": false,
      "description": "Stage-relative paths of aggregate metadata files currently present in one stage tree.",
      "properties": {
        "aggregateDependencies": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the aggregate-dependency map when incremental rebuild metadata is present.",
          "examples": [
            "data/aggregate-dependencies.json"
          ],
          "title": "Aggregatedependencies"
        },
        "artifacts": {
          "description": "Stage-relative path of the published artifact aggregate file.",
          "examples": [
            "data/artifacts.json"
          ],
          "minLength": 1,
          "title": "Artifacts",
          "type": "string"
        },
        "candidates": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the published candidate aggregate file when release-candidate metadata is present.",
          "examples": [
            "data/candidates.json"
          ],
          "title": "Candidates"
        },
        "compatibility": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the published compatibility aggregate file when compatibility assertions are present.",
          "examples": [
            "data/compatibility.json"
          ],
          "title": "Compatibility"
        },
        "components": {
          "description": "Stage-relative path of the published component aggregate file.",
          "examples": [
            "data/components.json"
          ],
          "minLength": 1,
          "title": "Components",
          "type": "string"
        },
        "contentIndex": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the content-index aggregate file when the stage includes a generated page index.",
          "examples": [
            "data/content-index.json"
          ],
          "title": "Contentindex"
        },
        "diagnostics": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the diagnostics aggregate file when diagnostics were published into the stage.",
          "examples": [
            "data/diagnostics.json"
          ],
          "title": "Diagnostics"
        },
        "mounts": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the published mount aggregate file when mounted subtrees are present.",
          "examples": [
            "data/mounts.json"
          ],
          "title": "Mounts"
        },
        "outputOwnership": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the output-ownership map when incremental rebuild metadata is present.",
          "examples": [
            "data/output-ownership.json"
          ],
          "title": "Outputownership"
        },
        "providers": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the provider aggregate file when provider metadata is present in the stage.",
          "examples": [
            "data/providers.json"
          ],
          "title": "Providers"
        },
        "redirects": {
          "description": "Stage-relative path of the published redirect aggregate file.",
          "examples": [
            "data/redirects.json"
          ],
          "minLength": 1,
          "title": "Redirects",
          "type": "string"
        },
        "refs": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the published ref aggregate file when development, line-head, or named-ref metadata is present.",
          "examples": [
            "data/refs.json"
          ],
          "title": "Refs"
        },
        "releases": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the published release aggregate file when release metadata is present.",
          "examples": [
            "data/releases.json"
          ],
          "title": "Releases"
        },
        "routes": {
          "description": "Stage-relative path of the published route aggregate file.",
          "examples": [
            "data/routes.json"
          ],
          "minLength": 1,
          "title": "Routes",
          "type": "string"
        },
        "translations": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the published translation aggregate file when localized page groups are present.",
          "examples": [
            "data/translations.json"
          ],
          "title": "Translations"
        },
        "unitContributions": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Stage-relative path of the persisted unit-contribution manifest file when it is present.",
          "examples": [
            "data/unit-contributions.json"
          ],
          "title": "Unitcontributions"
        }
      },
      "required": [
        "components",
        "artifacts",
        "routes",
        "redirects"
      ],
      "title": "StageDataFiles",
      "type": "object",
      "x-buildish-contract": {
        "category": "emitted",
        "ownership": "pipeline-derived"
      }
    },
    "StageRoots": {
      "additionalProperties": false,
      "description": "Named top-level directories inside a stage tree.",
      "properties": {
        "content": {
          "description": "Stage-relative directory that contains rendered pages and content files.",
          "examples": [
            "content"
          ],
          "minLength": 1,
          "title": "Content",
          "type": "string"
        },
        "data": {
          "description": "Stage-relative directory that contains aggregate metadata files.",
          "examples": [
            "data"
          ],
          "minLength": 1,
          "title": "Data",
          "type": "string"
        },
        "static": {
          "description": "Stage-relative directory that contains copied static assets.",
          "examples": [
            "static"
          ],
          "minLength": 1,
          "title": "Static",
          "type": "string"
        }
      },
      "required": [
        "content",
        "static",
        "data"
      ],
      "title": "StageRoots",
      "type": "object",
      "x-buildish-contract": {
        "category": "emitted",
        "ownership": "pipeline-derived"
      }
    }
  },
  "$id": "https://buildish.org/components/site-pipeline/schemas/stage-manifest-v1.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "Authoritative entry-point document for a staged output tree.",
  "examples": [
    {
      "aggregateFormat": "json",
      "command": "build",
      "dataFiles": {
        "artifacts": "data/artifacts.json",
        "components": "data/components.json",
        "contentIndex": "data/content-index.json",
        "redirects": "data/redirects.json",
        "refs": "data/refs.json",
        "releases": "data/releases.json",
        "routes": "data/routes.json"
      },
      "frontMatterFormat": "yaml",
      "generatedAt": "2026-04-06T08:40:00Z",
      "roots": {
        "content": "content",
        "data": "data",
        "static": "static"
      },
      "schemaVersion": 1,
      "stageLayoutVersion": 1
    }
  ],
  "properties": {
    "aggregateFormat": {
      "const": "json",
      "description": "Serialization format used for aggregate metadata files in the stage data directory.",
      "title": "Aggregateformat",
      "type": "string"
    },
    "command": {
      "$ref": "#/$defs/StageCommand",
      "description": "Stage-producing command that created the stage tree represented by this manifest."
    },
    "dataFiles": {
      "$ref": "#/$defs/StageDataFiles",
      "description": "Stage-relative paths of aggregate metadata files currently present in the stage."
    },
    "frontMatterFormat": {
      "const": "yaml",
      "description": "Front matter serialization format used for staged content files.",
      "title": "Frontmatterformat",
      "type": "string"
    },
    "generatedAt": {
      "description": "Timestamp when the manifest was generated.",
      "format": "date-time",
      "title": "Generatedat",
      "type": "string"
    },
    "roots": {
      "$ref": "#/$defs/StageRoots",
      "description": "Top-level stage directories used for content, static assets, and aggregate data."
    },
    "schemaVersion": {
      "const": 1,
      "description": "Schema version for the stage manifest.",
      "title": "Schemaversion",
      "type": "integer"
    },
    "stageLayoutVersion": {
      "description": "Version of the stage directory layout contract that this manifest follows.",
      "minimum": 1,
      "title": "Stagelayoutversion",
      "type": "integer"
    }
  },
  "required": [
    "schemaVersion",
    "stageLayoutVersion",
    "generatedAt",
    "command",
    "frontMatterFormat",
    "aggregateFormat",
    "roots",
    "dataFiles"
  ],
  "title": "Site Pipeline Stage Manifest v1",
  "type": "object",
  "x-buildish-contract": {
    "category": "emitted",
    "filePath": "manifest.json",
    "ownership": "pipeline-derived",
    "summary": "Entry point for a stage tree, including roots, formats, and aggregate file locations."
  }
}
