{
  "provenance": {
    "asset_id": "AST-0286",
    "spec_id": "SPEC-AST-0286-v1",
    "version": 1,
    "status": "published",
    "hash": "d1c4ba7fe9b1b58c663ea5c10ff1527d81c93faa390366fb07d9622f9a78fc90",
    "source": "fixture"
  },
  "spec": {
    "spec_id": "SPEC-AST-0286-v1",
    "asset_id": "AST-0286",
    "version": 1,
    "parent_version": null,
    "status": "published",
    "name": "Supply Coverage & OTIF",
    "purpose": "Monthly inventory coverage and on-time in-full for the supply wall — values from pack monthly facts.",
    "domain": "Supply Chain",
    "surface": "wall",
    "owners": {
      "business_owner_id": "OWN-001",
      "technical_owner_id": "OWN-001"
    },
    "refresh_policy": {
      "mode": "daily",
      "source_model_ids": [
        "SM-030"
      ]
    },
    "pages": [
      {
        "page_id": "page-main",
        "title": "Supply risk",
        "rotation_s": 20,
        "visuals": [
          {
            "visual_id": "V-0286-inv",
            "type": "kpi_tile",
            "title": "Inventory coverage",
            "kpi_id": "KPI-016",
            "dims": [],
            "filters": {},
            "grain": "monthly",
            "window": "last_3m",
            "unit": "wks",
            "threshold": {
              "good": 8,
              "warn": 5,
              "direction": "up_good"
            }
          },
          {
            "visual_id": "V-0286-otif",
            "type": "kpi_tile",
            "title": "OTIF",
            "kpi_id": "KPI-020",
            "dims": [],
            "filters": {},
            "grain": "monthly",
            "window": "last_3m",
            "unit": "%",
            "threshold": {
              "good": 95,
              "warn": 90,
              "direction": "up_good"
            }
          },
          {
            "visual_id": "V-0286-otif-market",
            "type": "bar",
            "title": "OTIF by market",
            "kpi_id": "KPI-020",
            "dims": [
              "market"
            ],
            "filters": {},
            "grain": "monthly",
            "window": "last_3m",
            "unit": "%",
            "threshold": {
              "good": 95,
              "warn": 90,
              "direction": "up_good"
            }
          },
          {
            "visual_id": "V-0286-inv-market",
            "type": "bar",
            "title": "Inventory coverage by market",
            "kpi_id": "KPI-016",
            "dims": [
              "market"
            ],
            "filters": {},
            "grain": "monthly",
            "window": "last_3m",
            "unit": "wks",
            "threshold": {
              "good": 8,
              "warn": 5,
              "direction": "up_good"
            }
          }
        ]
      }
    ],
    "review_cadence_days": 90,
    "lineage": {
      "upstream_model_ids": [
        "SM-030"
      ]
    },
    "exceptions": [],
    "rationale": [
      {
        "decision": "Pin SCR-03 to AST-0286 (canonical KPI-016 + KPI-020)",
        "because": "Certified active Supply Chain asset with active owner; Asset_KPI_Map carries Inventory Coverage and OTIF mapped in lib/query/mapping.ts. AST-0052 only has variants KPI-018/KPI-013.",
        "evidence_refs": [
          "AST-0286",
          "KPI-016",
          "KPI-020",
          "SCR-03"
        ]
      }
    ]
  },
  "ledger_summary": [],
  "kpi_definitions": [
    {
      "kpi_id": "KPI-016",
      "name": "Inventory Coverage",
      "definition_status": "canonical",
      "formula": "inventory_weeks_syn",
      "unit": "weeks"
    },
    {
      "kpi_id": "KPI-020",
      "name": "On-Time In-Full",
      "definition_status": "canonical",
      "formula": "otif_pct_syn",
      "unit": "%"
    }
  ]
}