{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://ap-in-indy.github.io/aiignore/schema/0.1/conformance-manifest.schema.json",
  "title": "aiignore conformance artifact manifest draft 0.1",
  "type": "object",
  "additionalProperties": false,
  "required": ["formatVersion", "specification", "release", "status", "uri", "artifacts"],
  "properties": {
    "formatVersion": { "const": "0.1" },
    "specification": { "const": "0.1" },
    "release": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[a-z0-9.-]+)?$" },
    "status": { "const": "experimental" },
    "uri": {
      "const": "https://ap-in-indy.github.io/aiignore/conformance/0.1/manifest.json"
    },
    "artifacts": {
      "type": "array",
      "minItems": 1,
      "maxItems": 64,
      "items": { "$ref": "#/$defs/artifact" }
    }
  },
  "$defs": {
    "artifact": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "role", "mediaType", "path", "uri", "sha256"],
      "properties": {
        "id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]{0,127}$" },
        "role": {
          "type": "string",
          "enum": [
            "specification",
            "schema",
            "decision-vectors",
            "parser-vectors",
            "harness-vectors",
            "requirements"
          ]
        },
        "mediaType": {
          "type": "string",
          "enum": ["application/json", "application/schema+json", "text/markdown; charset=utf-8"]
        },
        "path": {
          "type": "string",
          "pattern": "^(?:[a-z0-9._-]+/)*[a-z0-9._-]+$",
          "maxLength": 512
        },
        "uri": { "type": "string", "pattern": "^https://[^\\s]+$", "maxLength": 2048 },
        "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
      }
    }
  }
}
