{
  "id": "type-p05",
  "revision": "8ccb96c3af89fd4e8487fe29a71e655878540d3fe90b5a6eb722684f9e87c6d3",
  "regions": [
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    },
    {
      "id": "storage",
      "label": "Storage",
      "parent": null
    },
    {
      "id": "web",
      "label": "Web",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "reader",
      "label": "Audit cursor reader",
      "kind": "N04",
      "region": "common-logic",
      "ports": [
        {
          "id": "next",
          "profile": "P05",
          "contract": "AuditPageCursorAtCutV1",
          "polarity": "Require"
        },
        {
          "id": "page",
          "profile": "P01",
          "contract": "AuditPageV1",
          "polarity": "Offer"
        },
        {
          "id": "export",
          "profile": "P01",
          "contract": "AuditPageV1",
          "polarity": "Offer"
        },
        {
          "id": "more",
          "profile": "P04",
          "contract": "ReadNextAuditPageV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "log",
      "label": "Audit log authority",
      "kind": "N21",
      "region": "storage",
      "ports": [
        {
          "id": "next",
          "profile": "P05",
          "contract": "AuditPageCursorAtCutV1",
          "polarity": "Offer"
        },
        {
          "id": "cursor",
          "profile": "P21",
          "contract": "AuditCursorLeaseV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "ui",
      "label": "Audit table",
      "kind": "N11",
      "region": "web",
      "ports": [
        {
          "id": "page",
          "profile": "P01",
          "contract": "AuditPageV1",
          "polarity": "Require"
        },
        {
          "id": "more",
          "profile": "P04",
          "contract": "ReadNextAuditPageV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "export",
      "label": "Audit exporter",
      "kind": "N02",
      "region": "server",
      "ports": [
        {
          "id": "batch",
          "profile": "P01",
          "contract": "AuditPageV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "lease",
      "label": "Cursor lease owner",
      "kind": "N27",
      "region": "server",
      "ports": [
        {
          "id": "cursor",
          "profile": "P21",
          "contract": "AuditCursorLeaseV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "next",
      "kind": "H05",
      "incidences": [
        {
          "node": "reader",
          "port": "next",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "log",
          "port": "next",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "page",
      "kind": "H02",
      "incidences": [
        {
          "node": "reader",
          "port": "page",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "page",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "export",
      "kind": "H02",
      "incidences": [
        {
          "node": "reader",
          "port": "export",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "export",
          "port": "batch",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "more",
      "kind": "H04",
      "incidences": [
        {
          "node": "ui",
          "port": "more",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "reader",
          "port": "more",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "lease",
      "kind": "H19",
      "incidences": [
        {
          "node": "lease",
          "port": "cursor",
          "role": "owner",
          "ordinal": 0
        },
        {
          "node": "log",
          "port": "cursor",
          "role": "resource",
          "ordinal": 0
        }
      ]
    }
  ]
}
