{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://packrift-benchmark-navigator.vercel.app/data/packingsolver-fixtures/schemas/fixture_order_summaries.schema.json",
  "title": "Packrift Fixture Order Summaries CSV row schema",
  "description": "Scenario-level summaries used to audit total volume and cube-utilization bands. This schema validates JSON objects produced by parsing the CSV row as strings.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "order_id",
    "scenario_family",
    "target_carton_sku",
    "target_carton_volume_cuin",
    "line_count",
    "estimated_total_item_volume_cuin",
    "estimated_cube_utilization"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "Generated scenario identifier.",
      "pattern": "^packrift-20260531-\\d{4}-[a-z0-9-]+$"
    },
    "scenario_family": {
      "type": "string",
      "description": "Generated review scenario family.",
      "enum": [
        "apparel-return",
        "beauty-sampler",
        "book-media",
        "bulk-lightweight",
        "electronics-accessory",
        "home-goods-small",
        "marketplace-replacement",
        "sample-kit",
        "subscription-bundle",
        "warehouse-restock"
      ]
    },
    "target_carton_sku": {
      "type": "string",
      "description": "Scenario anchor carton SKU."
    },
    "target_carton_volume_cuin": {
      "type": "string",
      "description": "Target carton cube in cubic inches.",
      "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
    },
    "line_count": {
      "type": "string",
      "description": "Number of order lines in fixture_orders.",
      "pattern": "^(?:0|[1-9][0-9]*)$"
    },
    "estimated_total_item_volume_cuin": {
      "type": "string",
      "description": "Sum of generated line cube.",
      "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
    },
    "estimated_cube_utilization": {
      "type": "string",
      "description": "Estimated item cube divided by target carton cube.",
      "pattern": "^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
    }
  }
}
