{
  "id": "robot-allocation",
  "revision": "57d3d7b236867fdf1b2251c728a4569af7de18a8d9ad26114db789c675957c96",
  "regions": [
    {
      "id": "fleet",
      "label": "Fleet coordination"
    },
    {
      "id": "robot",
      "label": "Robot-local execution"
    }
  ],
  "nodes": [
    {
      "id": "planner",
      "label": "Fleet mission planner",
      "kind": "N01",
      "region": "fleet",
      "ports": [
        {
          "id": "capacity",
          "profile": "P01",
          "contract": "FleetCapacityV1",
          "polarity": "Require"
        },
        {
          "id": "mission",
          "profile": "P01",
          "contract": "MissionProposalV1",
          "polarity": "Offer"
        },
        {
          "id": "demand",
          "profile": "P24",
          "contract": "DemandRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "capacity",
      "label": "Robot capacity view",
      "kind": "N22",
      "region": "fleet",
      "ports": [
        {
          "id": "snapshot",
          "profile": "P01",
          "contract": "FleetCapacityV1",
          "polarity": "Offer"
        },
        {
          "id": "supply",
          "profile": "P24",
          "contract": "SupplyRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "mission",
      "label": "Mission service",
      "kind": "N19",
      "region": "fleet",
      "ports": [
        {
          "id": "proposal",
          "profile": "P01",
          "contract": "MissionProposalV1",
          "polarity": "Require"
        },
        {
          "id": "assign",
          "profile": "P02",
          "contract": "MissionAssignV1",
          "polarity": "Offer"
        },
        {
          "id": "assignment",
          "profile": "P24",
          "contract": "AssignmentRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "robot",
      "label": "Robot mission actor",
      "kind": "N05",
      "region": "robot",
      "ports": [
        {
          "id": "mission",
          "profile": "P02",
          "contract": "MissionAssignV1",
          "polarity": "Require"
        },
        {
          "id": "motion",
          "profile": "P20",
          "contract": "MotionGrantV1",
          "polarity": "Require"
        },
        {
          "id": "actuate",
          "profile": "P02",
          "contract": "MotionCommandV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "safety",
      "label": "Local safety controller",
      "kind": "N33",
      "region": "robot",
      "ports": [
        {
          "id": "grant",
          "profile": "P20",
          "contract": "MotionGrantV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "actuator",
      "label": "Actuator adapter",
      "kind": "N15",
      "region": "robot",
      "ports": [
        {
          "id": "move",
          "profile": "P02",
          "contract": "MotionCommandV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "capacity",
      "kind": "H02",
      "incidences": [
        {
          "node": "capacity",
          "port": "snapshot",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "planner",
          "port": "capacity",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "plan",
      "kind": "H02",
      "incidences": [
        {
          "node": "planner",
          "port": "mission",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "mission",
          "port": "proposal",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "delivery",
      "kind": "H05",
      "incidences": [
        {
          "node": "mission",
          "port": "assign",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "robot",
          "port": "mission",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "safe",
      "kind": "H23",
      "incidences": [
        {
          "node": "safety",
          "port": "grant",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "robot",
          "port": "motion",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "actuator",
      "kind": "H05",
      "incidences": [
        {
          "node": "actuator",
          "port": "move",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "robot",
          "port": "actuate",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "allocation",
      "kind": "H09",
      "incidences": [
        {
          "node": "planner",
          "port": "demand",
          "role": "demand",
          "ordinal": 0
        },
        {
          "node": "capacity",
          "port": "supply",
          "role": "supply",
          "ordinal": 1
        },
        {
          "node": "mission",
          "port": "assignment",
          "role": "assignment",
          "ordinal": 2
        }
      ]
    }
  ]
}
