{
  "id": "type-h15",
  "revision": "ab3145279ee85dbf2a154bd07953bb3b47c7d46f014286111ce98fb876ccda1b",
  "regions": [
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "control-plane",
      "label": "Control plane",
      "parent": null
    },
    {
      "id": "zone-a",
      "label": "Zone A",
      "parent": null
    },
    {
      "id": "zone-b",
      "label": "Zone B",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "client",
      "label": "Conversation request",
      "kind": "N19",
      "region": "mobile",
      "ports": [
        {
          "id": "request",
          "profile": "P02",
          "contract": "ConversationKeyedRequestV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "router",
      "label": "Conversation partition router",
      "kind": "N03",
      "region": "server",
      "ports": [
        {
          "id": "request",
          "profile": "P02",
          "contract": "ConversationKeyedRequestV1",
          "polarity": "Offer"
        },
        {
          "id": "map",
          "profile": "P01",
          "contract": "ConversationPartitionMapV1",
          "polarity": "Require"
        },
        {
          "id": "assignment",
          "profile": "P19",
          "contract": "ConversationPartitionAssignmentV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "map",
      "label": "Partition map authority",
      "kind": "N21",
      "region": "control-plane",
      "ports": [
        {
          "id": "revision",
          "profile": "P01",
          "contract": "ConversationPartitionMapV1",
          "polarity": "Offer"
        },
        {
          "id": "epoch",
          "profile": "P22",
          "contract": "PartitionEpochHandoffV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "a",
      "label": "Partition A actor host",
      "kind": "N27",
      "region": "zone-a",
      "ports": [
        {
          "id": "assignment",
          "profile": "P19",
          "contract": "ConversationPartitionAssignmentV1",
          "polarity": "Neutral"
        },
        {
          "id": "handoff",
          "profile": "P22",
          "contract": "PartitionEpochHandoffV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "b",
      "label": "Partition B actor host",
      "kind": "N27",
      "region": "zone-b",
      "ports": [
        {
          "id": "assignment",
          "profile": "P19",
          "contract": "ConversationPartitionAssignmentV1",
          "polarity": "Neutral"
        },
        {
          "id": "handoff",
          "profile": "P22",
          "contract": "PartitionEpochHandoffV1",
          "polarity": "Neutral"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "request",
      "kind": "H05",
      "incidences": [
        {
          "node": "client",
          "port": "request",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "router",
          "port": "request",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "map",
      "kind": "H02",
      "incidences": [
        {
          "node": "map",
          "port": "revision",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "router",
          "port": "map",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "assignment",
      "kind": "H15",
      "incidences": [
        {
          "node": "router",
          "port": "assignment",
          "role": "router",
          "ordinal": 0
        },
        {
          "node": "a",
          "port": "assignment",
          "role": "partition",
          "ordinal": 0
        },
        {
          "node": "b",
          "port": "assignment",
          "role": "partition",
          "ordinal": 1
        }
      ]
    },
    {
      "id": "handoff",
      "kind": "H35",
      "incidences": [
        {
          "node": "a",
          "port": "handoff",
          "role": "old",
          "ordinal": 0
        },
        {
          "node": "b",
          "port": "handoff",
          "role": "new",
          "ordinal": 0
        },
        {
          "node": "map",
          "port": "epoch",
          "role": "authority",
          "ordinal": 0
        }
      ]
    }
  ]
}
