{
  "id": "type-p18",
  "revision": "5c0557b4259f7db948c3b9113388abcbdadf07e986564a2ac1e1b73c96d55550",
  "regions": [
    {
      "id": "native",
      "label": "Native",
      "parent": null
    },
    {
      "id": "delivery",
      "label": "Delivery",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "model",
      "label": "Mapped model resource",
      "kind": "N26",
      "region": "native",
      "ports": [
        {
          "id": "lease",
          "profile": "P18",
          "contract": "ImmutableModelReadLeaseV1",
          "polarity": "Offer"
        },
        {
          "id": "unmap",
          "profile": "P13",
          "contract": "ModelReadersDrainedV1",
          "polarity": "Require"
        },
        {
          "id": "candidate",
          "profile": "P23",
          "contract": "CandidateModelDigestV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "a",
      "label": "Inference worker A",
      "kind": "N18",
      "region": "native",
      "ports": [
        {
          "id": "model",
          "profile": "P18",
          "contract": "ImmutableModelReadLeaseV1",
          "polarity": "Require"
        },
        {
          "id": "lease",
          "profile": "P21",
          "contract": "ModelReaderLeaseScopeV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "b",
      "label": "Inference worker B",
      "kind": "N18",
      "region": "native",
      "ports": [
        {
          "id": "model",
          "profile": "P18",
          "contract": "ImmutableModelReadLeaseV1",
          "polarity": "Require"
        },
        {
          "id": "lease",
          "profile": "P21",
          "contract": "ModelReaderLeaseScopeV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "lifecycle",
      "label": "Model lease lifecycle",
      "kind": "N05",
      "region": "native",
      "ports": [
        {
          "id": "scope",
          "profile": "P21",
          "contract": "ModelReaderLeaseScopeV1",
          "polarity": "Offer"
        },
        {
          "id": "drained",
          "profile": "P13",
          "contract": "ModelReadersDrainedV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "candidate",
      "label": "Candidate model",
      "kind": "N35",
      "region": "delivery",
      "ports": [
        {
          "id": "ref",
          "profile": "P23",
          "contract": "CandidateModelDigestV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "readers",
      "kind": "H07",
      "incidences": [
        {
          "node": "model",
          "port": "lease",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "a",
          "port": "model",
          "role": "subscriber",
          "ordinal": 0
        },
        {
          "node": "b",
          "port": "model",
          "role": "subscriber",
          "ordinal": 1
        }
      ]
    },
    {
      "id": "scope",
      "kind": "H19",
      "incidences": [
        {
          "node": "lifecycle",
          "port": "scope",
          "role": "owner",
          "ordinal": 0
        },
        {
          "node": "a",
          "port": "lease",
          "role": "resource",
          "ordinal": 0
        },
        {
          "node": "b",
          "port": "lease",
          "role": "resource",
          "ordinal": 1
        }
      ]
    },
    {
      "id": "replace",
      "kind": "H03",
      "incidences": [
        {
          "node": "lifecycle",
          "port": "drained",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "model",
          "port": "unmap",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "candidate",
      "kind": "H26",
      "incidences": [
        {
          "node": "candidate",
          "port": "ref",
          "role": "artifact",
          "ordinal": 0
        },
        {
          "node": "model",
          "port": "candidate",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    }
  ]
}
