{
  "ok": true,
  "tool": "api_abstraction_map",
  "schemaVersion": "abstraction-map-1.3",
  "invariant": "Every measurement comes from the typed, compiled program: layer = longest dependency path to a leaf (0 = no user-definition dependencies), fanOut = direct dependencies, edge span = layer difference, size = node count of the compiled definition, repeatedBlockMass = redundant mass of shape-isomorphic blocks (locals and literals erased) repeated inside one body, clonePairs = whole bodies isomorphic with literals kept (same compiled structure, not proof of intended reuse). signatureId is the fully qualified checked signature from the type vocabulary; signature is its display label. These are structural measurements, not a quality verdict. A scoped browser view or a shared signature does not establish behavioral equivalence, an access policy, or intended architecture.",
  "nodes": [
    {
      "id": "Yichus/Examples/OrderAllocation::is_complete",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "is_complete",
      "signature": "Allocation -> Bool",
      "signatureId": "Yichus/Examples/OrderAllocation::Allocation -> Bosatsu/Predef::Bool",
      "exported": false,
      "layer": 0,
      "fanIn": 3,
      "fanOut": 0,
      "size": 8,
      "repeatedBlockMass": 0,
      "repeatedBlockGroups": 0,
      "repeatedBlockInstances": 0
    },
    {
      "id": "Yichus/Examples/OrderAllocation::min_int",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "min_int",
      "signature": "(Int, Int) -> Int",
      "signatureId": "(Bosatsu/Predef::Int, Bosatsu/Predef::Int) -> Bosatsu/Predef::Int",
      "exported": false,
      "layer": 0,
      "fanIn": 3,
      "fanOut": 0,
      "size": 16,
      "repeatedBlockMass": 0,
      "repeatedBlockGroups": 0,
      "repeatedBlockInstances": 0
    },
    {
      "id": "Yichus/Examples/OrderAllocation::nonnegative",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "nonnegative",
      "signature": "Int -> Int",
      "signatureId": "Bosatsu/Predef::Int -> Bosatsu/Predef::Int",
      "exported": false,
      "layer": 0,
      "fanIn": 4,
      "fanOut": 0,
      "size": 16,
      "repeatedBlockMass": 0,
      "repeatedBlockGroups": 0,
      "repeatedBlockInstances": 0
    },
    {
      "id": "Yichus/Examples/OrderAllocation::sellable_units",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "sellable_units",
      "signature": "Stock -> Int",
      "signatureId": "Yichus/Examples/OrderAllocation::Stock -> Bosatsu/Predef::Int",
      "exported": false,
      "layer": 1,
      "fanIn": 3,
      "fanOut": 1,
      "size": 25,
      "repeatedBlockMass": 0,
      "repeatedBlockGroups": 0,
      "repeatedBlockInstances": 0
    },
    {
      "id": "Yichus/Examples/OrderAllocation::allocation_plan",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "allocation_plan",
      "signature": "(Stock, Int) -> Allocation",
      "signatureId": "(Yichus/Examples/OrderAllocation::Stock, Bosatsu/Predef::Int) -> Yichus/Examples/OrderAllocation::Allocation",
      "exported": true,
      "layer": 2,
      "fanIn": 1,
      "fanOut": 3,
      "size": 40,
      "repeatedBlockMass": 16,
      "repeatedBlockGroups": 1,
      "repeatedBlockInstances": 3
    },
    {
      "id": "Yichus/Examples/OrderAllocation::cart_preview",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "cart_preview",
      "signature": "(String, Stock, Int) -> CartPreview",
      "signatureId": "(Bosatsu/Predef::String, Yichus/Examples/OrderAllocation::Stock, Bosatsu/Predef::Int) -> Yichus/Examples/OrderAllocation::CartPreview",
      "exported": true,
      "layer": 2,
      "fanIn": 0,
      "fanOut": 4,
      "size": 48,
      "repeatedBlockMass": 16,
      "repeatedBlockGroups": 1,
      "repeatedBlockInstances": 3
    },
    {
      "id": "Yichus/Examples/OrderAllocation::support_replacement",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "support_replacement",
      "signature": "(String, Stock, Int) -> SupportReplacement",
      "signatureId": "(Bosatsu/Predef::String, Yichus/Examples/OrderAllocation::Stock, Bosatsu/Predef::Int) -> Yichus/Examples/OrderAllocation::SupportReplacement",
      "exported": true,
      "layer": 2,
      "fanIn": 0,
      "fanOut": 4,
      "size": 60,
      "repeatedBlockMass": 16,
      "repeatedBlockGroups": 1,
      "repeatedBlockInstances": 3
    },
    {
      "id": "Yichus/Examples/OrderAllocation::checkout_order",
      "package": "Yichus/Examples/OrderAllocation",
      "name": "checkout_order",
      "signature": "(String, Stock, Int) -> CheckoutDecision",
      "signatureId": "(Bosatsu/Predef::String, Yichus/Examples/OrderAllocation::Stock, Bosatsu/Predef::Int) -> Yichus/Examples/OrderAllocation::CheckoutDecision",
      "exported": true,
      "layer": 3,
      "fanIn": 0,
      "fanOut": 2,
      "size": 13,
      "repeatedBlockMass": 0,
      "repeatedBlockGroups": 0,
      "repeatedBlockInstances": 0
    }
  ],
  "edges": [
    {
      "from": "Yichus/Examples/OrderAllocation::allocation_plan",
      "to": "Yichus/Examples/OrderAllocation::min_int",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::allocation_plan",
      "to": "Yichus/Examples/OrderAllocation::nonnegative",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::allocation_plan",
      "to": "Yichus/Examples/OrderAllocation::sellable_units",
      "span": 1
    },
    {
      "from": "Yichus/Examples/OrderAllocation::cart_preview",
      "to": "Yichus/Examples/OrderAllocation::is_complete",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::cart_preview",
      "to": "Yichus/Examples/OrderAllocation::min_int",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::cart_preview",
      "to": "Yichus/Examples/OrderAllocation::nonnegative",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::cart_preview",
      "to": "Yichus/Examples/OrderAllocation::sellable_units",
      "span": 1
    },
    {
      "from": "Yichus/Examples/OrderAllocation::checkout_order",
      "to": "Yichus/Examples/OrderAllocation::allocation_plan",
      "span": 1
    },
    {
      "from": "Yichus/Examples/OrderAllocation::checkout_order",
      "to": "Yichus/Examples/OrderAllocation::is_complete",
      "span": 3
    },
    {
      "from": "Yichus/Examples/OrderAllocation::sellable_units",
      "to": "Yichus/Examples/OrderAllocation::nonnegative",
      "span": 1
    },
    {
      "from": "Yichus/Examples/OrderAllocation::support_replacement",
      "to": "Yichus/Examples/OrderAllocation::is_complete",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::support_replacement",
      "to": "Yichus/Examples/OrderAllocation::min_int",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::support_replacement",
      "to": "Yichus/Examples/OrderAllocation::nonnegative",
      "span": 2
    },
    {
      "from": "Yichus/Examples/OrderAllocation::support_replacement",
      "to": "Yichus/Examples/OrderAllocation::sellable_units",
      "span": 1
    }
  ],
  "clonePairs": [],
  "measures": {
    "definitions": 8,
    "edges": 14,
    "layers": 4,
    "layerSkips": 9,
    "maxDirectDeps": 4,
    "widestDefinition": "Yichus/Examples/OrderAllocation::cart_preview",
    "usedOnce": 1,
    "usedMany": 4,
    "maxSize": 60,
    "largestDefinition": "Yichus/Examples/OrderAllocation::support_replacement",
    "duplicatedMass": 48,
    "clonePairs": 0
  }
}
