{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "design-system-insights-record",
  "title": "Report Analysis and Copy",
  "description": "One record per design system or component library in the State of AI in Design Systems — July 2026 study. Every affordance, technique and capability carries the source URL of the file it was quoted from.",
  "type": "object",
  "required": [
    "lede",
    "insights_lede",
    "methodology_lede",
    "techniques_lede",
    "platforms_lede",
    "reading_lede",
    "findings",
    "convergence",
    "divergence",
    "essay",
    "methodology",
    "caveats"
  ],
  "additionalProperties": false,
  "$defs": {
    "lede": {
      "type": "string",
      "minLength": 1,
      "description": "One paragraph under a page's title. Rendered on both the HTML route and its markdown twin, so it has to read on its own."
    },
    "titledSection": {
      "type": "object",
      "required": [
        "title",
        "body"
      ],
      "additionalProperties": false,
      "properties": {
        "title": {
          "type": "string",
          "minLength": 1
        },
        "body": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "paragraphs": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "One string per paragraph. The build joins them; do not embed blank lines."
    }
  },
  "properties": {
    "lede": {
      "$ref": "#/$defs/lede",
      "description": "The home page lede."
    },
    "insights_lede": {
      "$ref": "#/$defs/lede"
    },
    "methodology_lede": {
      "$ref": "#/$defs/lede"
    },
    "techniques_lede": {
      "$ref": "#/$defs/lede"
    },
    "platforms_lede": {
      "$ref": "#/$defs/lede"
    },
    "reading_lede": {
      "$ref": "#/$defs/lede",
      "description": "The further-reading page lede. It says what the list holds and that the list moves, which the other pages do not. The bar a suggestion is judged against is not here: it lives in CONTRIBUTING.md, in the reading-suggestion issue template, and in the closing paragraph of the page itself."
    },
    "findings": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/titledSection"
      },
      "description": "The numbered findings. Order is meaningful: the site numbers them by position, so reordering renumbers them."
    },
    "convergence": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/titledSection"
      },
      "description": "Where the systems agree."
    },
    "divergence": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/titledSection"
      },
      "description": "Where they do not."
    },
    "essay": {
      "$ref": "#/$defs/paragraphs"
    },
    "methodology": {
      "$ref": "#/$defs/paragraphs",
      "description": "How the data was gathered, including who gathered it and when."
    },
    "caveats": {
      "$ref": "#/$defs/paragraphs",
      "description": "What the study does not support. The staleness caveat belongs here."
    }
  }
}
