{
  "id": "mobile-community",
  "revision": "57940c5ac864e359093ec40028152376c918b29435b97abe63e86e70495f3139",
  "regions": [
    {
      "id": "device",
      "label": "Mobile device"
    },
    {
      "id": "edge",
      "label": "Edge services"
    }
  ],
  "nodes": [
    {
      "id": "route",
      "label": "App routes",
      "kind": "N12",
      "region": "device",
      "ports": [
        {
          "id": "destination",
          "profile": "P11",
          "contract": "ConversationRouteV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "screen",
      "label": "Conversation Surface",
      "kind": "N11",
      "region": "device",
      "ports": [
        {
          "id": "route",
          "profile": "P11",
          "contract": "ConversationRouteV1",
          "polarity": "Require"
        },
        {
          "id": "intent",
          "profile": "P04",
          "contract": "MessageIntentV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "controller",
      "label": "Conversation logic",
      "kind": "N02",
      "region": "device",
      "ports": [
        {
          "id": "input",
          "profile": "P04",
          "contract": "MessageIntentV1",
          "polarity": "Require"
        },
        {
          "id": "authority",
          "profile": "P20",
          "contract": "ScopedGrantV1",
          "polarity": "Require"
        },
        {
          "id": "send",
          "profile": "P02",
          "contract": "SendMessageV1",
          "polarity": "Require"
        },
        {
          "id": "span",
          "profile": "P24",
          "contract": "TraceEnvelopeV1",
          "polarity": "Offer"
        },
        {
          "id": "effect",
          "profile": "P24",
          "contract": "EffectRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "auth",
      "label": "Session boundary",
      "kind": "N33",
      "region": "edge",
      "ports": [
        {
          "id": "grant",
          "profile": "P20",
          "contract": "ScopedGrantV1",
          "polarity": "Offer"
        },
        {
          "id": "principal",
          "profile": "P24",
          "contract": "PrincipalV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "chat",
      "label": "Messaging service",
      "kind": "N19",
      "region": "edge",
      "ports": [
        {
          "id": "send",
          "profile": "P02",
          "contract": "SendMessageV1",
          "polarity": "Offer"
        },
        {
          "id": "storage",
          "profile": "P02",
          "contract": "MessageLedgerV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "log",
      "label": "Message authority",
      "kind": "N21",
      "region": "edge",
      "ports": [
        {
          "id": "append",
          "profile": "P02",
          "contract": "MessageLedgerV1",
          "polarity": "Offer"
        },
        {
          "id": "resource",
          "profile": "P24",
          "contract": "ConversationRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "trace",
      "label": "Trace exporter",
      "kind": "N38",
      "region": "edge",
      "ports": [
        {
          "id": "span",
          "profile": "P24",
          "contract": "TraceEnvelopeV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "nav",
      "kind": "H36",
      "incidences": [
        {
          "node": "route",
          "port": "destination",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "screen",
          "port": "route",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "intent",
      "kind": "H02",
      "incidences": [
        {
          "node": "screen",
          "port": "intent",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "controller",
          "port": "input",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "grant",
      "kind": "H23",
      "incidences": [
        {
          "node": "auth",
          "port": "grant",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "controller",
          "port": "authority",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "service",
      "kind": "H05",
      "incidences": [
        {
          "node": "chat",
          "port": "send",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "controller",
          "port": "send",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "persist",
      "kind": "H05",
      "incidences": [
        {
          "node": "log",
          "port": "append",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "chat",
          "port": "storage",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "observe",
      "kind": "H04",
      "incidences": [
        {
          "node": "controller",
          "port": "span",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "trace",
          "port": "span",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "scope",
      "kind": "H23",
      "incidences": [
        {
          "node": "auth",
          "port": "principal",
          "role": "principal",
          "ordinal": 0
        },
        {
          "node": "controller",
          "port": "effect",
          "role": "effect",
          "ordinal": 1
        },
        {
          "node": "log",
          "port": "resource",
          "role": "resource",
          "ordinal": 2
        }
      ]
    }
  ]
}
