{
  "manifest_version": "1.0",
  "case_id": "SP-251201",
  "slug": "forty-eight-hours-of-stock",
  "revision": "2026.09.01",
  "catalog_snapshot": "2026-01-15",
  "analysis_cutoff": "2025-12-01T06:45:00-05:00",
  "generated_from": "the-analyst synthetic enterprise world",
  "selection": {
    "supply_domain": "full supply domain retained; non-supply world tables omitted",
    "watchlist": "six lowest naive-cover pairs from each of five deterministic product strata",
    "watchlist_rows": 30,
    "watchlist_products": 27
  },
  "files": [
    {
      "table": "scenario.supply_watchlist",
      "source_table": null,
      "path": "/data/cases/forty-eight-hours-of-stock/scenario/supply_watchlist.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/scenario/supply_watchlist.parquet",
      "rows": 30,
      "bytes": 9150,
      "sha256": "870e13b01b6d977da212cfdd40a264be81a61581c4adf5316f5e288cc499037d",
      "columns": [
        "warehouse_id",
        "product_id",
        "snapshot_date",
        "on_hand_quantity",
        "allocated_quantity",
        "backorder_quantity",
        "workbook_available_units",
        "mean_units_per_issue_day",
        "workbook_claimed_cover_hours",
        "position_age_days",
        "watchlist_reason_code",
        "decision_at"
      ],
      "note": "Thirty review pairs selected across several demand histories; workbook calculations are claims, not answers."
    },
    {
      "table": "scenario.opening_balance",
      "source_table": null,
      "path": "/data/cases/forty-eight-hours-of-stock/scenario/opening_balance.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/scenario/opening_balance.parquet",
      "rows": 81,
      "bytes": 4417,
      "sha256": "a97f87354ce91f79028aeb982a7d9dce6c6d312774e3b06d47e28e410793e912",
      "columns": [
        "warehouse_id",
        "product_id",
        "approved_opening_quantity",
        "decision_at",
        "source_convention"
      ],
      "note": "Controller-approved opening quantity for each watchlist product at all three donor/recipient warehouses."
    },
    {
      "table": "scenario.action_constraints",
      "source_table": null,
      "path": "/data/cases/forty-eight-hours-of-stock/scenario/action_constraints.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/scenario/action_constraints.parquet",
      "rows": 10,
      "bytes": 4293,
      "sha256": "ec33588730ceda139068010c289d47e7adbf7368517c106c948c49f7c1078761",
      "columns": [
        "constraint_code",
        "scope_from",
        "scope_to",
        "value",
        "unit",
        "note"
      ],
      "note": "Published portfolio budget, review, donor-reserve, and transfer-lane limits."
    },
    {
      "table": "supply.inventory_movement",
      "source_table": "supply.inventory_movement",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/inventory_movement.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/inventory_movement.parquet",
      "rows": 520000,
      "bytes": 11579090,
      "sha256": "c4523507922d321df6ac8eda094578442b050de3d3d70dd3bb663acce77a8f35",
      "columns": [
        "inventory_movement_id",
        "warehouse_id",
        "product_id",
        "movement_at",
        "movement_type_code",
        "quantity_delta",
        "reference_type_code",
        "reference_number",
        "scanner_device_code",
        "scanner_replay_flag",
        "replay_of_inventory_movement_id",
        "goods_receipt_id",
        "posted_at"
      ],
      "note": "Full technical movement ledger, including linked scanner replays and later rows."
    },
    {
      "table": "supply.inventory_position_daily",
      "source_table": "supply.inventory_position_daily",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/inventory_position_daily.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/inventory_position_daily.parquet",
      "rows": 330000,
      "bytes": 5276945,
      "sha256": "b7d248ecd2729c035b2881852ac3a8b2401e59e384ee0573bc2992051a57f8a3",
      "columns": [
        "inventory_position_daily_id",
        "snapshot_date",
        "warehouse_id",
        "product_id",
        "on_hand_quantity",
        "allocated_quantity",
        "on_order_quantity",
        "backorder_quantity",
        "unit_cost_cents",
        "last_count_date",
        "demand_units_7d",
        "receipt_units_7d",
        "stockout_hours_7d",
        "demand_units_14d",
        "receipt_units_14d",
        "stockout_hours_14d",
        "demand_units_30d",
        "receipt_units_30d",
        "stockout_hours_30d",
        "demand_units_60d",
        "receipt_units_60d",
        "stockout_hours_60d",
        "demand_units_90d",
        "receipt_units_90d",
        "stockout_hours_90d"
      ],
      "note": "Full sparse sampled position history with reconciled trailing fields."
    },
    {
      "table": "supply.purchase_order",
      "source_table": "supply.purchase_order",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/purchase_order.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/purchase_order.parquet",
      "rows": 24000,
      "bytes": 401897,
      "sha256": "0694c557ce87486cbbb97884dc69353d9c7da20f5d03aa94935dee941b991cec",
      "columns": [
        "purchase_order_id",
        "purchase_order_number",
        "vendor_id",
        "warehouse_id",
        "ordered_at",
        "expected_date",
        "status_code",
        "currency_code",
        "buyer_employee_id",
        "source_system_code"
      ],
      "note": "Full PO header population; current status must not be projected backward."
    },
    {
      "table": "supply.purchase_order_line",
      "source_table": "supply.purchase_order_line",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/purchase_order_line.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/purchase_order_line.parquet",
      "rows": 96000,
      "bytes": 1384281,
      "sha256": "355803826d8365ff036fc6a3b1ab4f7a85fea90328000587c1987da76cef6fbe",
      "columns": [
        "purchase_order_line_id",
        "purchase_order_id",
        "line_number",
        "product_id",
        "ordered_quantity",
        "unit_cost_cents",
        "extended_cost_cents",
        "promised_date",
        "cancelled_quantity"
      ],
      "note": "Full PO line population; ordered and cancelled quantity remain at line grain."
    },
    {
      "table": "supply.goods_receipt",
      "source_table": "supply.goods_receipt",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/goods_receipt.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/goods_receipt.parquet",
      "rows": 82000,
      "bytes": 1044814,
      "sha256": "a5be0c4856b728e210549249b37fc3fea5d0497026d4b2220813a73e0be4034a",
      "columns": [
        "goods_receipt_id",
        "purchase_order_line_id",
        "warehouse_id",
        "received_at",
        "received_quantity",
        "rejected_quantity",
        "lot_number",
        "inspection_code"
      ],
      "note": "Full split and rejected receipt-event population."
    },
    {
      "table": "supply.product_vendor",
      "source_table": "supply.product_vendor",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/product_vendor.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/product_vendor.parquet",
      "rows": 1440,
      "bytes": 22356,
      "sha256": "56caaf6d285dde77b5304d996593c99ae88222b333dbd0188724f495cc6c63c8",
      "columns": [
        "product_vendor_id",
        "product_id",
        "vendor_id",
        "vendor_product_code",
        "is_primary_vendor",
        "contract_unit_cost_cents",
        "contract_lead_time_days",
        "minimum_order_quantity",
        "effective_from",
        "effective_to"
      ],
      "note": "Effective approved vendor-product relationships, costs, lead times, and MOQs."
    },
    {
      "table": "supply.vendor",
      "source_table": "supply.vendor",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/vendor.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/vendor.parquet",
      "rows": 85,
      "bytes": 3863,
      "sha256": "b22299406e55079deffbbdbd99af568fe09e3fc99ee6384ec544a67abb9e1392",
      "columns": [
        "vendor_id",
        "vendor_name",
        "vendor_type",
        "home_region_id",
        "payment_terms_days",
        "standard_lead_time_days",
        "risk_tier",
        "active_from",
        "active_to"
      ],
      "note": "Vendor terms and risk tiers for transparent uncertainty pooling."
    },
    {
      "table": "supply.warehouse",
      "source_table": "supply.warehouse",
      "path": "/data/cases/forty-eight-hours-of-stock/supply/warehouse.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/supply/warehouse.parquet",
      "rows": 3,
      "bytes": 3250,
      "sha256": "bda166e24fcad1912db3be0acd781e318a25122191cd75c45974913f1891b350",
      "columns": [
        "warehouse_id",
        "warehouse_name",
        "region_id",
        "postal_area_id",
        "manager_employee_id",
        "opened_date",
        "floor_area_sqft",
        "capacity_units",
        "timezone_name",
        "is_active"
      ],
      "note": "Three warehouse locations, regions, capacity, and timezone."
    },
    {
      "table": "catalog.product",
      "source_table": "catalog.product",
      "path": "/data/cases/forty-eight-hours-of-stock/catalog/product.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/catalog/product.parquet",
      "rows": 720,
      "bytes": 19574,
      "sha256": "e2bc0c21b9ea7c664e316b1e7af2311cceb23cb3a468730bf0a717fbe38b06f9",
      "columns": [
        "product_id",
        "sku",
        "product_name",
        "category_id",
        "product_type",
        "brand_name",
        "unit_cost_cents",
        "current_list_price_cents",
        "warranty_months",
        "is_connected_capable",
        "active_from",
        "active_to",
        "lifecycle_status"
      ],
      "note": "Real synthetic SKU names, types, lifecycle state, and unit costs."
    },
    {
      "table": "catalog.product_substitution",
      "source_table": "catalog.product_substitution",
      "path": "/data/cases/forty-eight-hours-of-stock/catalog/product_substitution.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/catalog/product_substitution.parquet",
      "rows": 1440,
      "bytes": 10704,
      "sha256": "4dbcf46ec7d578f347f17a2a875746fce80ef794da804391c82ef42acad8723b",
      "columns": [
        "substitution_id",
        "requested_product_id",
        "substitute_product_id",
        "substitution_rank",
        "approved_from",
        "approved_to",
        "requires_customer_approval"
      ],
      "note": "Effective substitution options and customer-approval requirements."
    },
    {
      "table": "core.business_calendar",
      "source_table": "core.business_calendar",
      "path": "/data/cases/forty-eight-hours-of-stock/core/business_calendar.parquet",
      "python_path": "/data/cases/forty-eight-hours-of-stock/core/business_calendar.parquet",
      "rows": 1096,
      "bytes": 7637,
      "sha256": "467743d29c7a50fa41de40ceb697f938770a3a6c14286dfb96b76acd164c083f",
      "columns": [
        "calendar_date",
        "calendar_year",
        "calendar_quarter",
        "calendar_month",
        "month_name",
        "day_of_week",
        "day_name",
        "is_weekend",
        "is_month_end",
        "fiscal_year",
        "fiscal_period"
      ],
      "note": "Complete date spine for explicit zero-demand days."
    }
  ],
  "table_mappings": {
    "scenario.supply_watchlist": "/data/cases/forty-eight-hours-of-stock/scenario/supply_watchlist.parquet",
    "scenario.opening_balance": "/data/cases/forty-eight-hours-of-stock/scenario/opening_balance.parquet",
    "scenario.action_constraints": "/data/cases/forty-eight-hours-of-stock/scenario/action_constraints.parquet",
    "supply.inventory_movement": "/data/cases/forty-eight-hours-of-stock/supply/inventory_movement.parquet",
    "supply.inventory_position_daily": "/data/cases/forty-eight-hours-of-stock/supply/inventory_position_daily.parquet",
    "supply.purchase_order": "/data/cases/forty-eight-hours-of-stock/supply/purchase_order.parquet",
    "supply.purchase_order_line": "/data/cases/forty-eight-hours-of-stock/supply/purchase_order_line.parquet",
    "supply.goods_receipt": "/data/cases/forty-eight-hours-of-stock/supply/goods_receipt.parquet",
    "supply.product_vendor": "/data/cases/forty-eight-hours-of-stock/supply/product_vendor.parquet",
    "supply.vendor": "/data/cases/forty-eight-hours-of-stock/supply/vendor.parquet",
    "supply.warehouse": "/data/cases/forty-eight-hours-of-stock/supply/warehouse.parquet",
    "catalog.product": "/data/cases/forty-eight-hours-of-stock/catalog/product.parquet",
    "catalog.product_substitution": "/data/cases/forty-eight-hours-of-stock/catalog/product_substitution.parquet",
    "core.business_calendar": "/data/cases/forty-eight-hours-of-stock/core/business_calendar.parquet"
  },
  "learner_cautions": [
    "inventory_movement is a technical-event ledger; explicit scanner replays must not be counted as physical movements.",
    "inventory_position_daily is a sparse sample, not a complete daily stock spine.",
    "received quantity is gross; accepted quantity is received minus rejected, and one PO line may have several receipts.",
    "The pack deliberately retains rows after the forecast origin so every transformation must enforce its own cutoff."
  ],
  "validation_reference": "generator/case_packs/reports/cases_04_06_validation.md",
  "totals": {
    "files": 14,
    "rows": 1056905,
    "bytes": 19772271
  }
}
