{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "mm-research.schema.json",
  "title": "Muscle Memory research ledger v2",
  "description": "Schema for the v2 receipt-bound research ledger generated from src/content.ts.",
  "type": "object",
  "required": [
    "$schema",
    "schema",
    "schemaVersion",
    "generated",
    "artifactType",
    "reviewStatus",
    "coverageBoundary",
    "title",
    "subtitle",
    "claims",
    "receipts",
    "families",
    "journal",
    "refused",
    "findings",
    "negatives",
    "normativeNote"
  ],
  "properties": {
    "$schema": {
      "const": "./mm-research.schema.json"
    },
    "schema": {
      "const": "muscle-memory-research-ledger.v2"
    },
    "schemaVersion": {
      "const": "2.0.0"
    },
    "generated": {
      "type": "string"
    },
    "artifactType": {
      "type": "string"
    },
    "reviewStatus": {
      "type": "object"
    },
    "coverageBoundary": {
      "type": "object"
    },
    "title": {
      "type": "string"
    },
    "subtitle": {
      "type": "string"
    },
    "scientificThesis": {
      "type": "string"
    },
    "productThesis": {
      "type": "string"
    },
    "contributionStatement": {
      "type": "string"
    },
    "hero": {
      "type": "object"
    },
    "claimDiscipline": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "credits": {
      "type": "array"
    },
    "agentExperience": {
      "type": "object"
    },
    "narrative": {
      "type": "object"
    },
    "claims": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "id",
          "strength",
          "claim",
          "scope",
          "receiptSha16"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "strength": {
            "enum": [
              "proven",
              "pilot",
              "specified",
              "retired",
              "refused"
            ]
          },
          "claim": {
            "type": "string"
          },
          "scope": {
            "type": "string"
          },
          "receiptSha16": {
            "type": "string"
          },
          "receiptLabel": {
            "type": "string"
          },
          "nExposure": {
            "type": "string"
          },
          "families": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "external": {
            "enum": [
              "internal",
              "external-planned",
              "external-sent",
              "n/a"
            ]
          },
          "note": {
            "type": "string"
          },
          "substrateH": {
            "type": "boolean"
          }
        }
      }
    },
    "refused": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "receipts": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "sha16",
          "possession",
          "family",
          "headline",
          "path"
        ],
        "properties": {
          "sha16": {
            "type": "string"
          },
          "possession": {
            "type": "string"
          },
          "family": {
            "type": "string"
          },
          "headline": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "claimNote": {
            "type": "string"
          }
        }
      }
    },
    "families": {
      "type": "array",
      "minItems": 3
    },
    "journal": {
      "type": "array",
      "minItems": 1
    },
    "findings": {
      "type": "array",
      "minItems": 4
    },
    "negatives": {
      "type": "array",
      "minItems": 1
    },
    "verifyInstructions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "links": {
      "type": "object"
    },
    "substrateNote": {
      "type": "string"
    },
    "normativeNote": {
      "type": "string"
    }
  }
}
