{
  "provenance": {
    "asset_id": "AST-0001",
    "spec_id": "SPEC-AST-0001-v2",
    "version": 2,
    "status": "published",
    "hash": "8d859dcde450f1151d028d38d38c865b9ae52990baab1192d7c1974ea167b792",
    "source": "db"
  },
  "spec": {
    "spec_id": "SPEC-AST-0001-v2",
    "asset_id": "AST-0001",
    "version": 2,
    "parent_version": 1,
    "status": "published",
    "name": "Xarelto Budget New",
    "purpose": "Canada Xarelto budget check — growth plus a market breakdown. Still refuses the conflicting forecast KPI.",
    "domain": "Supply Chain",
    "surface": "desktop",
    "owners": {
      "business_owner_id": "OWN-019",
      "technical_owner_id": "OWN-019"
    },
    "refresh_policy": {
      "mode": "daily",
      "source_model_ids": [
        "SM-057"
      ]
    },
    "pages": [
      {
        "page_id": "page-budget",
        "title": "Xarelto budget",
        "rotation_s": 20,
        "visuals": [
          {
            "visual_id": "V-0001-growth",
            "type": "kpi_tile",
            "title": "Net Sales Growth",
            "kpi_id": "KPI-004",
            "dims": [],
            "filters": {
              "product": "Xarelto",
              "market": "CA"
            },
            "grain": "month",
            "window": "ytd",
            "unit": "%",
            "threshold": {
              "good": 5,
              "warn": 0,
              "direction": "up_good"
            }
          },
          {
            "visual_id": "V-0001-market",
            "type": "bar",
            "title": "Growth by market",
            "kpi_id": "KPI-004",
            "dims": [
              "market"
            ],
            "filters": {
              "product": "Xarelto"
            },
            "grain": "month",
            "window": "ytd",
            "unit": "%",
            "threshold": {
              "good": 5,
              "warn": 0,
              "direction": "up_good"
            }
          }
        ]
      }
    ],
    "review_cadence_days": 90,
    "lineage": {
      "upstream_model_ids": [
        "SM-057"
      ]
    },
    "exceptions": [
      "KPI-009 left unbound: definition_conflict on Demand Forecast Accuracy Legacy."
    ],
    "rationale": [
      {
        "decision": "v2 adds a market breakdown on the same canonical KPI",
        "because": "The Canada budget ask needed a market split. KPI-004 already covered it, so no new metric was introduced.",
        "evidence_refs": [
          "AST-0001",
          "KPI-004",
          "SPEC-AST-0001-v1"
        ]
      }
    ]
  },
  "ledger_summary": [
    {
      "version": 1,
      "status": "superseded",
      "path": "baseline",
      "at": "2024-04-16T09:00:00.000Z",
      "author": "requester",
      "hash": "d8315a4d3160f64928da08b1c3adfa432e216f7158c57f5d8d367cdcc10da0a6"
    },
    {
      "version": 2,
      "status": "published",
      "path": "patch",
      "at": "2026-08-03T11:30:00.000Z",
      "author": "platform_owner",
      "hash": "8d859dcde450f1151d028d38d38c865b9ae52990baab1192d7c1974ea167b792"
    }
  ],
  "kpi_definitions": [
    {
      "kpi_id": "KPI-004",
      "name": "Net Sales Growth",
      "definition_status": "canonical",
      "formula": "(sales_t - sales_t-1) / sales_t-1",
      "unit": "%"
    }
  ]
}