{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://jurisdica.com/holdings/fund/schema.json",
  "title": "Kurota published sample tape",
  "description": "JSON Schema for the existing jurisdica.holdings.kurota.tape.v1 artifact at /holdings/fund/tape.json. This is not a billed Jurisdica Tapes SKU, not schemas/tape/v1 as a product family, and not a CLI envelope.",
  "type": "object",
  "required": [
    "schema",
    "holder",
    "holder_id",
    "start",
    "end",
    "n_calendar",
    "n_fact",
    "never_interpolate_days",
    "days"
  ],
  "properties": {
    "schema": {
      "const": "jurisdica.holdings.kurota.tape.v1"
    },
    "schema_json": {
      "const": "/holdings/fund/schema.json"
    },
    "holder": { "type": "string" },
    "holder_id": { "type": "string" },
    "identity_kind": {
      "const": "published_competition_identity"
    },
    "book_kind": { "const": "sample_fund_book" },
    "not_a_licensed_fund": { "type": "boolean" },
    "start": { "type": "string" },
    "end": { "type": "string" },
    "n_calendar": { "const": 201 },
    "n_fact": { "type": "integer", "minimum": 0 },
    "never_interpolate_days": { "const": true },
    "never_invent_lots": { "type": "boolean" },
    "never_invent_missing_sleeve_day_as_gemini_nav": { "type": "boolean" },
    "n_lot_books": { "type": "integer" },
    "n_nav_only": { "type": "integer" },
    "n_unmarked": { "type": "integer" },
    "n_complete_sleeves": {
      "type": "integer",
      "description": "Header-declared sleeve-day complete count. Mill SSOT is derived from days[] × {claude,gpt,grok,gemini}."
    },
    "n_residual_sleeves": { "type": "integer" },
    "coverage_note": { "type": "string" },
    "days": {
      "type": "array",
      "items": { "$ref": "#/$defs/factDay" }
    },
    "unmarked": {
      "type": "array",
      "items": { "$ref": "#/$defs/unmarkedDay" }
    }
  },
  "additionalProperties": true,
  "$defs": {
    "sleeveId": {
      "type": "string",
      "enum": ["claude", "gpt", "grok", "gemini"]
    },
    "navMap": {
      "type": "object",
      "additionalProperties": { "type": ["number", "null"] }
    },
    "lot": {
      "type": "object",
      "properties": {
        "n": { "type": "string" },
        "sym": { "type": "string" },
        "venue": { "type": "string" },
        "qty": { "type": "number" },
        "avg_cost": { "type": "number" },
        "mark": { "type": "number" },
        "ccy": { "type": "string" }
      },
      "additionalProperties": true
    },
    "factDay": {
      "type": "object",
      "required": ["day", "as_of"],
      "properties": {
        "day": { "type": "integer", "minimum": 1, "maximum": 201 },
        "as_of": { "type": "string" },
        "entry": { "type": "string" },
        "source": { "type": ["string", "null"] },
        "nav": { "$ref": "#/$defs/navMap" },
        "cash": { "$ref": "#/$defs/navMap" },
        "lots": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": { "$ref": "#/$defs/lot" }
          }
        },
        "residual": {
          "type": "object",
          "additionalProperties": { "type": "boolean" }
        },
        "market": { "type": "object" },
        "labels": { "type": "object" },
        "notes": { "type": "string" }
      },
      "additionalProperties": true
    },
    "unmarkedDay": {
      "type": "object",
      "required": ["day", "as_of"],
      "properties": {
        "day": { "type": "integer", "minimum": 1, "maximum": 201 },
        "as_of": { "type": "string" },
        "entry": { "const": "unmarked" }
      },
      "additionalProperties": true
    }
  }
}
