{
  "id": "type-p23",
  "revision": "771bdafc3738c2cb73f7058ba24756c5f43bca29a76f8d2905bf98f670ad94ed",
  "regions": [
    {
      "id": "delivery",
      "label": "Delivery",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "storage",
      "label": "Storage",
      "parent": null
    },
    {
      "id": "build",
      "label": "Build",
      "parent": null
    },
    {
      "id": "runtime",
      "label": "Runtime",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "manifest",
      "label": "Plugin reference",
      "kind": "N35",
      "region": "delivery",
      "ports": [
        {
          "id": "ref",
          "profile": "P23",
          "contract": "PluginDigestAbiRefV1",
          "polarity": "Offer"
        },
        {
          "id": "expected",
          "profile": "P23",
          "contract": "PluginDigestAbiRefV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "fetch",
      "label": "Artifact fetch adapter",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "ref",
          "profile": "P23",
          "contract": "PluginDigestAbiRefV1",
          "polarity": "Require"
        },
        {
          "id": "load",
          "profile": "P02",
          "contract": "FetchArtifactBytesV1",
          "polarity": "Require"
        },
        {
          "id": "bytes",
          "profile": "P17",
          "contract": "DownloadedArtifactViewV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "store",
      "label": "Plugin object store",
      "kind": "N26",
      "region": "storage",
      "ports": [
        {
          "id": "load",
          "profile": "P02",
          "contract": "FetchArtifactBytesV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "verify",
      "label": "Digest and ABI verifier",
      "kind": "N01",
      "region": "build",
      "ports": [
        {
          "id": "bytes",
          "profile": "P17",
          "contract": "DownloadedArtifactViewV1",
          "polarity": "Require"
        },
        {
          "id": "expected",
          "profile": "P23",
          "contract": "PluginDigestAbiRefV1",
          "polarity": "Require"
        },
        {
          "id": "evidence",
          "profile": "P24",
          "contract": "PluginCompatibilityEvidenceV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "host",
      "label": "Plugin host",
      "kind": "N27",
      "region": "runtime",
      "ports": [
        {
          "id": "evidence",
          "profile": "P24",
          "contract": "PluginCompatibilityEvidenceV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "ref",
      "kind": "H26",
      "incidences": [
        {
          "node": "manifest",
          "port": "ref",
          "role": "artifact",
          "ordinal": 0
        },
        {
          "node": "fetch",
          "port": "ref",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "load",
      "kind": "H05",
      "incidences": [
        {
          "node": "fetch",
          "port": "load",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "store",
          "port": "load",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "verify",
      "kind": "H02",
      "incidences": [
        {
          "node": "fetch",
          "port": "bytes",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "verify",
          "port": "bytes",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "expected",
      "kind": "H02",
      "incidences": [
        {
          "node": "manifest",
          "port": "expected",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "verify",
          "port": "expected",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "admit",
      "kind": "H02",
      "incidences": [
        {
          "node": "verify",
          "port": "evidence",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "host",
          "port": "evidence",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
