{
  "id": "type-n20",
  "revision": "f34d27962f33a015f020a1517391398ca170ec37639f2082e7069ffab1c7c51c",
  "regions": [
    {
      "id": "operations",
      "label": "Operations",
      "parent": null
    },
    {
      "id": "runtime",
      "label": "Runtime",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "plan",
      "label": "Deployment plan",
      "kind": "N35",
      "region": "operations",
      "ports": [
        {
          "id": "review",
          "profile": "P01",
          "contract": "DeploymentPlanFingerprintV1",
          "polarity": "Offer"
        },
        {
          "id": "execute",
          "profile": "P01",
          "contract": "DeploymentPlanFingerprintV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "human",
      "label": "Operator approval",
      "kind": "N20",
      "region": "operations",
      "ports": [
        {
          "id": "review",
          "profile": "P01",
          "contract": "DeploymentPlanFingerprintV1",
          "polarity": "Require"
        },
        {
          "id": "approval",
          "profile": "P20",
          "contract": "PlanBoundApprovalV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "policy",
      "label": "Approval policy",
      "kind": "N33",
      "region": "operations",
      "ports": [
        {
          "id": "approval",
          "profile": "P20",
          "contract": "PlanBoundApprovalV1",
          "polarity": "Require"
        },
        {
          "id": "grant",
          "profile": "P20",
          "contract": "AdmittedDeploymentGrantV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "execute",
      "label": "Deployment executor",
      "kind": "N40",
      "region": "runtime",
      "ports": [
        {
          "id": "grant",
          "profile": "P20",
          "contract": "AdmittedDeploymentGrantV1",
          "polarity": "Require"
        },
        {
          "id": "plan",
          "profile": "P01",
          "contract": "DeploymentPlanFingerprintV1",
          "polarity": "Require"
        },
        {
          "id": "receipt",
          "profile": "P24",
          "contract": "DeploymentExecutionReceiptV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "receipt",
      "label": "Execution receipt",
      "kind": "N37",
      "region": "operations",
      "ports": [
        {
          "id": "record",
          "profile": "P24",
          "contract": "DeploymentExecutionReceiptV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "review",
      "kind": "H02",
      "incidences": [
        {
          "node": "plan",
          "port": "review",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "human",
          "port": "review",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "decision",
      "kind": "H02",
      "incidences": [
        {
          "node": "human",
          "port": "approval",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "policy",
          "port": "approval",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "admit",
      "kind": "H23",
      "incidences": [
        {
          "node": "policy",
          "port": "grant",
          "role": "principal",
          "ordinal": 0
        },
        {
          "node": "execute",
          "port": "grant",
          "role": "resource",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "plan",
      "kind": "H02",
      "incidences": [
        {
          "node": "plan",
          "port": "execute",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "execute",
          "port": "plan",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "receipt",
      "kind": "H27",
      "incidences": [
        {
          "node": "execute",
          "port": "receipt",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "receipt",
          "port": "record",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
