{
  "id": "type-h21",
  "revision": "9142f2899f681f855e47d4f62a561cb8321e879fdbbadc1f3ebeaa98962655bf",
  "regions": [
    {
      "id": "desired-service",
      "label": "Desired service",
      "parent": null
    },
    {
      "id": "region-a",
      "label": "Region A",
      "parent": null
    },
    {
      "id": "control-plane",
      "label": "Control plane",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "worker",
      "label": "Image variant worker",
      "kind": "N27",
      "region": "desired-service",
      "ports": [
        {
          "id": "place",
          "profile": "P19",
          "contract": "ImageWorkerHostPlacementV1",
          "polarity": "Neutral"
        },
        {
          "id": "requirements",
          "profile": "P19",
          "contract": "ImageWorkerRequirementsV1",
          "polarity": "Offer"
        },
        {
          "id": "read",
          "profile": "P02",
          "contract": "ImageObjectReadV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "host",
      "label": "Regional JVM host",
      "kind": "N27",
      "region": "region-a",
      "ports": [
        {
          "id": "place",
          "profile": "P19",
          "contract": "ImageWorkerHostPlacementV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "store",
      "label": "Image object store",
      "kind": "N26",
      "region": "region-a",
      "ports": [
        {
          "id": "read",
          "profile": "P02",
          "contract": "ImageObjectReadV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "pool",
      "label": "Host capacity inventory",
      "kind": "N28",
      "region": "control-plane",
      "ports": [
        {
          "id": "capacity",
          "profile": "P19",
          "contract": "HostCapacityAtCutV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "admit",
      "label": "Placement admission",
      "kind": "N03",
      "region": "control-plane",
      "ports": [
        {
          "id": "capacity",
          "profile": "P19",
          "contract": "HostCapacityAtCutV1",
          "polarity": "Require"
        },
        {
          "id": "requirements",
          "profile": "P19",
          "contract": "ImageWorkerRequirementsV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "placement",
      "kind": "H21",
      "incidences": [
        {
          "node": "worker",
          "port": "place",
          "role": "subject",
          "ordinal": 0
        },
        {
          "node": "host",
          "port": "place",
          "role": "host",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "capacity",
      "kind": "H02",
      "incidences": [
        {
          "node": "pool",
          "port": "capacity",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "admit",
          "port": "capacity",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "requirement",
      "kind": "H02",
      "incidences": [
        {
          "node": "worker",
          "port": "requirements",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "admit",
          "port": "requirements",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "read",
      "kind": "H05",
      "incidences": [
        {
          "node": "worker",
          "port": "read",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "store",
          "port": "read",
          "role": "callee",
          "ordinal": 0
        }
      ]
    }
  ]
}
