{
  "id": "view-telemetry",
  "revision": "0441208bb24d3157e530e45d2e9c2b72510616386cbbfe219ef44624a493ee43",
  "regions": [
    {
      "id": "product",
      "label": "One product flow"
    },
    {
      "id": "client",
      "label": "Compose client",
      "parent": "product"
    },
    {
      "id": "server",
      "label": "Messaging service",
      "parent": "product"
    },
    {
      "id": "evidence",
      "label": "Observations and Shadow",
      "parent": "product"
    }
  ],
  "nodes": [
    {
      "id": "route",
      "label": "Conversation RouteBinding",
      "kind": "N12",
      "region": "client",
      "ports": [
        {
          "id": "surface",
          "profile": "P08",
          "contract": "ConversationStateV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "surface",
      "label": "Conversation ComposeNode",
      "kind": "N11",
      "region": "client",
      "ports": [
        {
          "id": "state",
          "profile": "P08",
          "contract": "ConversationStateV1",
          "polarity": "Require"
        },
        {
          "id": "send",
          "profile": "P02",
          "contract": "MessagingApiV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "service",
      "label": "MessagingService send",
      "kind": "N02",
      "region": "server",
      "ports": [
        {
          "id": "api",
          "profile": "P02",
          "contract": "MessagingApiV1",
          "polarity": "Offer"
        },
        {
          "id": "write",
          "profile": "P09",
          "contract": "MessagePatchV1",
          "polarity": "Require"
        },
        {
          "id": "observe",
          "profile": "P24",
          "contract": "PortInvocationV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "store",
      "label": "Message authority",
      "kind": "N21",
      "region": "server",
      "ports": [
        {
          "id": "write",
          "profile": "P09",
          "contract": "MessagePatchV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "spans",
      "label": "PortTelemetryInterceptor spans",
      "kind": "N37",
      "region": "evidence",
      "ports": [
        {
          "id": "input",
          "profile": "P24",
          "contract": "PortInvocationV1",
          "polarity": "Require"
        },
        {
          "id": "evidence",
          "profile": "P24",
          "contract": "TraceEvidenceV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "shadow",
      "label": "Shadow capture with redacted fixtures",
      "kind": "N36",
      "region": "evidence",
      "ports": [
        {
          "id": "evidence",
          "profile": "P24",
          "contract": "ShadowCaptureV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "visitor",
      "label": "Flow debugger visitor",
      "kind": "N38",
      "region": "evidence",
      "ports": [
        {
          "id": "trace",
          "profile": "P24",
          "contract": "TraceEvidenceV1",
          "polarity": "Require"
        },
        {
          "id": "shadow",
          "profile": "P24",
          "contract": "ShadowCaptureV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "finding",
      "label": "Flow finding with coverage",
      "kind": "N37",
      "region": "evidence",
      "ports": [
        {
          "id": "finding",
          "profile": "P24",
          "contract": "TraceEvidenceV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "unrelated",
      "label": "Unrelated campaign service",
      "kind": "N02",
      "region": "server",
      "ports": [
        {
          "id": "api",
          "profile": "P02",
          "contract": "CampaignApiV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "state",
      "kind": "H02",
      "incidences": [
        {
          "node": "route",
          "port": "surface",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "surface",
          "port": "state",
          "role": "sink",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "send-rpc",
      "kind": "H05",
      "incidences": [
        {
          "node": "surface",
          "port": "send",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "service",
          "port": "api",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "conditional-write",
      "kind": "H05",
      "incidences": [
        {
          "node": "service",
          "port": "write",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "store",
          "port": "write",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "port-observation",
      "kind": "H01",
      "incidences": [
        {
          "node": "service",
          "port": "observe",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "spans",
          "port": "input",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "trace-evidence",
      "kind": "H27",
      "incidences": [
        {
          "node": "spans",
          "port": "evidence",
          "role": "input",
          "ordinal": 0
        },
        {
          "node": "visitor",
          "port": "trace",
          "role": "transform",
          "ordinal": 0
        },
        {
          "node": "finding",
          "port": "finding",
          "role": "output",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "shadow-evidence",
      "kind": "H28",
      "incidences": [
        {
          "node": "shadow",
          "port": "evidence",
          "role": "evidence",
          "ordinal": 0
        },
        {
          "node": "visitor",
          "port": "shadow",
          "role": "verifier",
          "ordinal": 0
        },
        {
          "node": "finding",
          "port": "finding",
          "role": "claim",
          "ordinal": 0
        }
      ]
    }
  ]
}
