[
  {
    "id": "01-system-context",
    "title": "AI Agent Orchestration Platform — System Context",
    "layout": "context",
    "colWidth": 250,
    "system": {
      "label": "AI Agent Orchestration Platform",
      "sub": "Azure · control + execution"
    },
    "groups": [
      {
        "side": "top",
        "title": "Identity and governance",
        "nodes": [
          {
            "id": "entra",
            "label": "Microsoft Entra ID",
            "kind": "external",
            "sub": "SSO · OIDC · agent ID",
            "rel": "tokens",
            "dir": "in",
            "icon": "azure_aad"
          },
          {
            "id": "purview",
            "label": "Microsoft Purview",
            "kind": "external",
            "sub": "classification",
            "rel": "labels",
            "dir": "in",
            "icon": "azure_AzurePurviewAccount (Analytics)"
          },
          {
            "id": "sentinel",
            "label": "Microsoft Sentinel",
            "kind": "external",
            "sub": "SIEM",
            "rel": "security events",
            "kind2": "async",
            "icon": "azure_sentinel"
          }
        ]
      },
      {
        "side": "left",
        "title": "People",
        "nodes": [
          {
            "id": "dev",
            "label": "Agent Developer",
            "kind": "actor",
            "sub": "SDK · CLI · builder",
            "rel": "defines agents",
            "dir": "in"
          },
          {
            "id": "user",
            "label": "Business User",
            "kind": "actor",
            "sub": "chat · app · API",
            "rel": "runs agents",
            "dir": "in"
          },
          {
            "id": "approver",
            "label": "Approver",
            "kind": "actor",
            "sub": "Teams card",
            "rel": "approves actions",
            "dir": "in"
          },
          {
            "id": "admin",
            "label": "Platform Admin",
            "kind": "actor",
            "sub": "console",
            "rel": "sets policy",
            "dir": "in"
          },
          {
            "id": "sre",
            "label": "SRE",
            "kind": "actor",
            "sub": "on call",
            "rel": "operates",
            "dir": "in"
          }
        ]
      },
      {
        "side": "right",
        "title": "Model providers",
        "nodes": [
          {
            "id": "foundry",
            "label": "Azure AI Foundry",
            "kind": "external",
            "sub": "GPT · embeddings",
            "rel": "inference",
            "icon": "azure_ai-foundry"
          },
          {
            "id": "fmodels",
            "label": "Foundry Models",
            "kind": "external",
            "sub": "partner catalogue",
            "rel": "specialist routes",
            "icon": "azure_foundry-models"
          },
          {
            "id": "kaito",
            "label": "Open-Weight Models",
            "kind": "external",
            "sub": "AKS · KAITO",
            "rel": "sovereign routes",
            "icon": "azure_kubernetes-services"
          },
          {
            "id": "extllm",
            "label": "External LLM APIs",
            "kind": "external",
            "sub": "egress controlled",
            "rel": "fallback only",
            "icon": "fa5_cloud"
          }
        ]
      },
      {
        "side": "bottom",
        "title": "Tools and systems of record",
        "nodes": [
          {
            "id": "mcp",
            "label": "MCP Tool Servers",
            "kind": "external",
            "sub": "internal + partner",
            "rel": "tool calls",
            "icon": "fa5_plug"
          },
          {
            "id": "saas",
            "label": "SaaS Applications",
            "kind": "external",
            "sub": "SAP · SFDC · SNOW",
            "rel": "actions",
            "icon": "fa5_building"
          },
          {
            "id": "entapi",
            "label": "Enterprise APIs",
            "kind": "external",
            "sub": "via APIM",
            "rel": "read and write",
            "icon": "fa5_plug"
          },
          {
            "id": "content",
            "label": "Content Estate",
            "kind": "external",
            "sub": "SharePoint · ADLS",
            "rel": "grounding",
            "icon": "fa5_folder_open"
          },
          {
            "id": "teams",
            "label": "Microsoft Teams",
            "kind": "external",
            "sub": "Graph",
            "rel": "notifications",
            "dir": "out",
            "kind2": "async",
            "icon": "teams"
          }
        ]
      }
    ],
    "note": "Model and tool endpoints are reached only through the platform gateway. No agent holds a provider key.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "02-high-level-architecture",
    "title": "AI Agent Orchestration Platform — High-Level Architecture",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1780
    },
    "stages": [
      {
        "title": "Entry",
        "nodes": [
          {
            "id": "h-fd",
            "label": "Front Door",
            "kind": "integration",
            "sub": "WAF · anycast",
            "icon": "azure_AzureFrontDoor (Networking)"
          },
          {
            "id": "h-apim",
            "label": "Platform API",
            "kind": "integration",
            "sub": "APIM · OIDC",
            "icon": "azure_AzureAPIManagement (Web)"
          },
          {
            "id": "h-sdk",
            "label": "SDK, CLI, Console",
            "kind": "app",
            "sub": "Python · .NET · TS",
            "icon": "python"
          }
        ]
      },
      {
        "title": "Admission",
        "nodes": [
          {
            "id": "h-adm",
            "label": "Admission Service",
            "kind": "app",
            "sub": "resolve and pin"
          },
          {
            "id": "h-pol",
            "label": "Policy Engine",
            "kind": "security",
            "sub": "OPA · signed bundle",
            "icon": "opa"
          },
          {
            "id": "h-bud",
            "label": "Budget Guard",
            "kind": "security",
            "sub": "cost and token cap",
            "icon": "azure_cost-budgets"
          }
        ]
      },
      {
        "title": "Orchestration",
        "nodes": [
          {
            "id": "h-orch",
            "label": "Durable Orchestrator",
            "kind": "app",
            "sub": "Durable Functions",
            "icon": "azure_functions"
          },
          {
            "id": "h-sched",
            "label": "Scheduler",
            "kind": "app",
            "sub": "priority classes"
          },
          {
            "id": "h-coord",
            "label": "Agent Coordinator",
            "kind": "app",
            "sub": "multi-agent patterns"
          },
          {
            "id": "h-hitl",
            "label": "Approval Service",
            "kind": "app",
            "sub": "external events",
            "icon": "fa5_user_check"
          }
        ]
      },
      {
        "title": "Agent runtime",
        "nodes": [
          {
            "id": "h-exec",
            "label": "Agent Executor",
            "kind": "app",
            "sub": "Container Apps",
            "icon": "agent"
          },
          {
            "id": "h-ctx",
            "label": "Context Manager",
            "kind": "app",
            "sub": "assemble · compress"
          },
          {
            "id": "h-grd",
            "label": "Guardrail Chain",
            "kind": "security",
            "sub": "Content Safety",
            "icon": "azure_content-safety"
          },
          {
            "id": "h-sbx",
            "label": "Session Sandbox",
            "kind": "platform",
            "sub": "dynamic sessions",
            "icon": "azure_azure-enclaves"
          }
        ]
      },
      {
        "title": "Model and tool access",
        "nodes": [
          {
            "id": "h-gw",
            "label": "AI Gateway",
            "kind": "integration",
            "sub": "APIM GenAI policy"
          },
          {
            "id": "h-tool",
            "label": "Tool Broker",
            "kind": "integration",
            "sub": "MCP · REST"
          },
          {
            "id": "h-mem",
            "label": "Memory Service",
            "kind": "app",
            "sub": "scoped retrieval",
            "icon": "fa5_memory"
          }
        ]
      },
      {
        "title": "Evidence",
        "nodes": [
          {
            "id": "h-state",
            "label": "Execution Store",
            "kind": "store",
            "sub": "Cosmos DB",
            "icon": "azure_azure-cosmos-db"
          },
          {
            "id": "h-trace",
            "label": "Trace and Cost",
            "kind": "platform",
            "sub": "Monitor · ADX",
            "icon": "azure_monitor"
          },
          {
            "id": "h-audit",
            "label": "Audit Ledger",
            "kind": "store",
            "sub": "immutable blob",
            "icon": "azure_blobstorage"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "h-orch",
        "to": "h-state",
        "label": "checkpoint",
        "route": "gutter"
      },
      {
        "from": "h-exec",
        "to": "h-trace",
        "label": "spans",
        "kind": "async",
        "route": "gutter"
      },
      {
        "from": "h-hitl",
        "to": "h-audit",
        "label": "decision",
        "kind": "async",
        "route": "gutter"
      }
    ],
    "note": "One picture for the reader who sees only one. Tenancy, regions and failure paths are later views.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "03-control-and-execution-planes",
    "title": "Control Plane and Execution Plane — The Governing Boundary",
    "layout": "nested",
    "canvas": {
      "width": 1720
    },
    "boxes": [
      {
        "title": "Control Plane · what a run is allowed to be",
        "kind": "cloud",
        "icon": "azure",
        "dir": "row",
        "children": [
          {
            "title": "Registries",
            "kind": "plain",
            "nodes": [
              {
                "id": "p-areg",
                "label": "Agent Registry",
                "kind": "app",
                "sub": "versioned specs"
              },
              {
                "id": "p-wreg",
                "label": "Workflow Registry",
                "kind": "app",
                "sub": "published graphs"
              },
              {
                "id": "p-treg",
                "label": "Tool Registry",
                "kind": "app",
                "sub": "API Center",
                "icon": "azure_api-center"
              },
              {
                "id": "p-mreg",
                "label": "Model Registry",
                "kind": "app",
                "sub": "routes and quotas",
                "icon": "azure_foundry-control-plane"
              }
            ]
          },
          {
            "title": "Governance",
            "kind": "plain",
            "nodes": [
              {
                "id": "p-pol",
                "label": "Policy Authoring",
                "kind": "security",
                "sub": "Rego · versioned",
                "icon": "opa"
              },
              {
                "id": "p-idn",
                "label": "Identity and RBAC",
                "kind": "security",
                "sub": "Entra · scopes",
                "icon": "azure_aad"
              },
              {
                "id": "p-sec",
                "label": "Credential Broker",
                "kind": "security",
                "sub": "Key Vault refs",
                "icon": "azure_AzureKeyVault (Security)"
              },
              {
                "id": "p-cfg",
                "label": "Config Promotion",
                "kind": "app",
                "sub": "App Configuration",
                "icon": "azure_app-configuration"
              }
            ]
          },
          {
            "title": "Control data",
            "kind": "plain",
            "nodes": [
              {
                "id": "p-sql",
                "label": "Definition Store",
                "kind": "store",
                "sub": "Azure SQL · HA",
                "icon": "azure_azure-sql"
              },
              {
                "id": "p-bundle",
                "label": "Bundle Publisher",
                "kind": "integration",
                "sub": "signed · immutable"
              }
            ]
          }
        ]
      },
      {
        "title": "Execution Plane · what a run actually does",
        "kind": "cloud",
        "icon": "azure",
        "dir": "row",
        "children": [
          {
            "title": "Orchestration",
            "kind": "plain",
            "nodes": [
              {
                "id": "e-orch",
                "label": "Durable Orchestrator",
                "kind": "app",
                "sub": "replay-safe",
                "icon": "azure_functions"
              },
              {
                "id": "e-sched",
                "label": "Scheduler",
                "kind": "app",
                "sub": "queue classes"
              },
              {
                "id": "e-bus",
                "label": "Work Queues",
                "kind": "queue",
                "sub": "Service Bus",
                "icon": "azure_azure-service-bus"
              }
            ]
          },
          {
            "title": "Runtime",
            "kind": "plain",
            "nodes": [
              {
                "id": "e-work",
                "label": "Runtime Workers",
                "kind": "app",
                "sub": "stateless · KEDA",
                "icon": "azure_worker-container-app"
              },
              {
                "id": "e-side",
                "label": "Policy Sidecar",
                "kind": "security",
                "sub": "local decisions",
                "icon": "opa"
              },
              {
                "id": "e-sbx",
                "label": "Session Sandbox",
                "kind": "platform",
                "sub": "Hyper-V isolated",
                "icon": "azure_azure-enclaves"
              }
            ]
          },
          {
            "title": "Execution data",
            "kind": "plain",
            "nodes": [
              {
                "id": "e-state",
                "label": "Execution Store",
                "kind": "store",
                "sub": "Cosmos · partitioned",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "e-cache",
                "label": "Turn Cache",
                "kind": "store",
                "sub": "Managed Redis",
                "icon": "azure_redis"
              },
              {
                "id": "e-art",
                "label": "Artifact Store",
                "kind": "store",
                "sub": "ADLS Gen2",
                "icon": "azure_datalake"
              }
            ]
          }
        ]
      }
    ],
    "outside": [
      {
        "id": "o-gw",
        "label": "AI Gateway and Tool Broker",
        "kind": "integration",
        "sub": "APIM · shared"
      },
      {
        "id": "o-obs",
        "label": "Observability and Cost Plane",
        "kind": "platform",
        "sub": "Monitor · ADX"
      }
    ],
    "edges": [
      {
        "from": "p-bundle",
        "to": "e-work",
        "label": "signed bundle",
        "kind": "async"
      },
      {
        "from": "p-sec",
        "to": "e-work",
        "label": "scoped token"
      },
      {
        "from": "e-orch",
        "to": "e-state",
        "label": "checkpoint"
      },
      {
        "from": "e-orch",
        "to": "e-bus",
        "label": "dispatch",
        "kind": "async"
      },
      {
        "from": "e-work",
        "to": "o-gw",
        "label": "gateway"
      },
      {
        "from": "e-work",
        "to": "o-obs",
        "label": "telemetry",
        "kind": "async"
      }
    ],
    "note": "A control-plane outage stops new admissions. Runs already admitted carry a pinned bundle and continue.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "04-layered-architecture",
    "title": "Layered Architecture — What Depends on What",
    "layout": "bands",
    "canvas": {
      "width": 1800
    },
    "layerHeaderWidth": 160,
    "bands": [
      {
        "name": "Experience",
        "nodes": [
          {
            "id": "l-builder",
            "label": "Agent Builder",
            "kind": "app"
          },
          {
            "id": "l-designer",
            "label": "Workflow Designer",
            "kind": "app"
          },
          {
            "id": "l-console",
            "label": "Admin Console",
            "kind": "app"
          },
          {
            "id": "l-sdk",
            "label": "SDK and CLI",
            "kind": "app",
            "icon": "python"
          },
          {
            "id": "l-chan",
            "label": "Chat and App Channels",
            "kind": "app"
          }
        ]
      },
      {
        "name": "Platform API",
        "nodes": [
          {
            "id": "l-apim",
            "label": "API Management",
            "kind": "integration",
            "icon": "azure_AzureAPIManagement (Web)"
          },
          {
            "id": "l-authz",
            "label": "AuthN and RBAC",
            "kind": "security",
            "icon": "azure_aad"
          },
          {
            "id": "l-stream",
            "label": "Streaming Endpoint",
            "kind": "integration",
            "icon": "azure_AzureAPIManagement (Web)"
          },
          {
            "id": "l-hook",
            "label": "Webhook Ingress",
            "kind": "integration",
            "icon": "azure_AzureAPIManagement (Web)"
          }
        ]
      },
      {
        "name": "Control plane",
        "nodes": [
          {
            "id": "l-areg",
            "label": "Agent Registry",
            "kind": "app"
          },
          {
            "id": "l-wreg",
            "label": "Workflow Registry",
            "kind": "app"
          },
          {
            "id": "l-treg",
            "label": "Tool Registry",
            "kind": "app",
            "icon": "azure_api-center"
          },
          {
            "id": "l-mreg",
            "label": "Model Registry",
            "kind": "app",
            "icon": "azure_foundry-control-plane"
          },
          {
            "id": "l-polsvc",
            "label": "Policy Service",
            "kind": "security",
            "icon": "opa"
          },
          {
            "id": "l-prompt",
            "label": "Prompt and Config",
            "kind": "app"
          }
        ]
      },
      {
        "name": "Orchestration",
        "nodes": [
          {
            "id": "l-orch",
            "label": "Durable Orchestrator",
            "kind": "app",
            "icon": "azure_functions"
          },
          {
            "id": "l-sched",
            "label": "Scheduler",
            "kind": "app"
          },
          {
            "id": "l-coord",
            "label": "Agent Coordinator",
            "kind": "app"
          },
          {
            "id": "l-evt",
            "label": "Event Manager",
            "kind": "app"
          },
          {
            "id": "l-appr",
            "label": "Approval Service",
            "kind": "app",
            "icon": "fa5_user_check"
          },
          {
            "id": "l-statemgr",
            "label": "State Manager",
            "kind": "app",
            "icon": "fa5_cube"
          }
        ]
      },
      {
        "name": "Agent runtime",
        "nodes": [
          {
            "id": "l-exec",
            "label": "Agent Executor",
            "kind": "app",
            "icon": "agent"
          },
          {
            "id": "l-ctx",
            "label": "Context Manager",
            "kind": "app"
          },
          {
            "id": "l-guard",
            "label": "Guardrail Chain",
            "kind": "security",
            "icon": "azure_content-safety"
          },
          {
            "id": "l-toolx",
            "label": "Tool Executor",
            "kind": "app"
          },
          {
            "id": "l-mem",
            "label": "Memory Service",
            "kind": "app",
            "icon": "fa5_memory"
          },
          {
            "id": "l-ckpt",
            "label": "Checkpointer",
            "kind": "app"
          },
          {
            "id": "l-sbx",
            "label": "Sandbox",
            "kind": "platform"
          }
        ]
      },
      {
        "name": "Access",
        "nodes": [
          {
            "id": "l-gw",
            "label": "AI Gateway",
            "kind": "integration"
          },
          {
            "id": "l-broker",
            "label": "Tool Broker",
            "kind": "integration"
          },
          {
            "id": "l-ret",
            "label": "Retrieval Service",
            "kind": "app"
          },
          {
            "id": "l-credb",
            "label": "Credential Broker",
            "kind": "security",
            "icon": "azure_AzureKeyVault (Security)"
          }
        ]
      },
      {
        "name": "Data",
        "nodes": [
          {
            "id": "l-sql",
            "label": "Azure SQL",
            "kind": "store",
            "icon": "azure_azure-sql"
          },
          {
            "id": "l-cos",
            "label": "Cosmos DB",
            "kind": "store",
            "icon": "azure_azure-cosmos-db"
          },
          {
            "id": "l-redis",
            "label": "Managed Redis",
            "kind": "store",
            "icon": "azure_redis"
          },
          {
            "id": "l-search",
            "label": "Azure AI Search",
            "kind": "store",
            "icon": "azure_cognitive-search"
          },
          {
            "id": "l-adls",
            "label": "ADLS Gen2",
            "kind": "store",
            "icon": "azure_datalake"
          },
          {
            "id": "l-sb",
            "label": "Service Bus",
            "kind": "queue",
            "icon": "azure_azure-service-bus"
          },
          {
            "id": "l-kv",
            "label": "Key Vault",
            "kind": "security",
            "icon": "azure_AzureKeyVault (Security)"
          }
        ]
      },
      {
        "name": "Assurance",
        "nodes": [
          {
            "id": "l-mon",
            "label": "Azure Monitor",
            "kind": "platform",
            "icon": "azure_monitor"
          },
          {
            "id": "l-adx",
            "label": "Data Explorer",
            "kind": "store",
            "icon": "azure_azure-data-explorer-clusters"
          },
          {
            "id": "l-graf",
            "label": "Managed Grafana",
            "kind": "platform",
            "icon": "azure_azure-managed-grafana"
          },
          {
            "id": "l-eval",
            "label": "Evaluation Service",
            "kind": "app",
            "icon": "azure_azure-machine-learning"
          },
          {
            "id": "l-audit",
            "label": "Audit Ledger",
            "kind": "store",
            "icon": "azure_blobstorage"
          },
          {
            "id": "l-siem",
            "label": "Microsoft Sentinel",
            "kind": "security",
            "icon": "azure_sentinel"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "l-sdk",
        "to": "l-apim",
        "label": "HTTPS"
      },
      {
        "from": "l-apim",
        "to": "l-areg",
        "label": "REST"
      },
      {
        "from": "l-apim",
        "to": "l-orch",
        "label": "submit run"
      },
      {
        "from": "l-orch",
        "to": "l-exec",
        "label": "dispatch",
        "kind": "async"
      },
      {
        "from": "l-exec",
        "to": "l-gw",
        "label": "inference"
      },
      {
        "from": "l-exec",
        "to": "l-broker",
        "label": "tool call"
      },
      {
        "from": "l-gw",
        "to": "l-cos",
        "label": "meter",
        "kind": "async"
      },
      {
        "from": "l-ckpt",
        "to": "l-cos",
        "label": "state"
      },
      {
        "from": "l-exec",
        "to": "l-mon",
        "label": "spans",
        "kind": "async"
      },
      {
        "from": "l-eval",
        "to": "l-prompt",
        "label": "promotion gate",
        "kind": "batch"
      }
    ],
    "note": "Dependencies point downward. The one exception is drawn: evaluation scores feed the promotion gate in the control plane.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "05-container-architecture",
    "title": "Container and Component Architecture — Azure Deployable Units",
    "layout": "nested",
    "canvas": {
      "width": 1780
    },
    "boxes": [
      {
        "title": "Subscription: agentplat-prod · VNet 10.40.0.0/16",
        "kind": "cloud",
        "icon": "azure",
        "dir": "col",
        "children": [
          {
            "title": "Edge subnet",
            "kind": "boundary",
            "nodes": [
              {
                "id": "c-fd",
                "label": "Front Door + WAF",
                "kind": "integration",
                "sub": "Premium · Private Link",
                "icon": "azure_AzureFrontDoor (Networking)"
              },
              {
                "id": "c-apim",
                "label": "API Management",
                "kind": "integration",
                "sub": "Premium · internal VNet",
                "icon": "azure_AzureAPIManagement (Web)"
              }
            ]
          },
          {
            "title": "Control plane subnet · AKS (3 AZs)",
            "kind": "boundary",
            "nodes": [
              {
                "id": "c-regapi",
                "label": "Registry API",
                "kind": "app",
                "sub": ".NET 9 · 6 pods"
              },
              {
                "id": "c-polsvc",
                "label": "Policy Service",
                "kind": "security",
                "sub": "OPA · 4 pods",
                "icon": "opa"
              },
              {
                "id": "c-cfg",
                "label": "Config Service",
                "kind": "app",
                "sub": "App Config · 3 pods",
                "icon": "azure_app-configuration"
              },
              {
                "id": "c-cred",
                "label": "Credential Broker",
                "kind": "security",
                "sub": "workload identity",
                "icon": "azure_AzureKeyVault (Security)"
              },
              {
                "id": "c-bff",
                "label": "Console BFF",
                "kind": "app",
                "sub": "TypeScript · 4 pods"
              }
            ]
          },
          {
            "title": "Execution plane · Container Apps environment",
            "kind": "boundary",
            "nodes": [
              {
                "id": "c-orch",
                "label": "Durable Orchestrator",
                "kind": "app",
                "sub": "Functions · 10-80",
                "icon": "azure_functions"
              },
              {
                "id": "c-sched",
                "label": "Scheduler",
                "kind": "app",
                "sub": "leader-elected · 3"
              },
              {
                "id": "c-work",
                "label": "Runtime Workers",
                "kind": "app",
                "sub": "Python · KEDA 20-400",
                "icon": "azure_worker-container-app"
              },
              {
                "id": "c-toolx",
                "label": "Tool Executor",
                "kind": "app",
                "sub": "Go · KEDA 10-120"
              },
              {
                "id": "c-appr",
                "label": "Approval Service",
                "kind": "app",
                "sub": ".NET 9 · 3 pods",
                "icon": "fa5_user_check"
              },
              {
                "id": "c-mem",
                "label": "Memory Service",
                "kind": "app",
                "sub": "Python · 6 pods",
                "icon": "fa5_memory"
              }
            ]
          },
          {
            "title": "Session pool · Hyper-V isolated, no default egress",
            "kind": "boundary",
            "nodes": [
              {
                "id": "c-code",
                "label": "Code Sessions",
                "kind": "platform",
                "sub": "dynamic sessions",
                "icon": "azure_azure-enclaves"
              },
              {
                "id": "c-brow",
                "label": "Browser Sessions",
                "kind": "platform",
                "sub": "computer use",
                "icon": "azure_azure-enclaves"
              }
            ]
          },
          {
            "title": "Data subnet · private endpoints only",
            "kind": "boundary",
            "nodes": [
              {
                "id": "c-sql",
                "label": "Azure SQL",
                "kind": "store",
                "sub": "Business Critical",
                "icon": "azure_azure-sql"
              },
              {
                "id": "c-cos",
                "label": "Cosmos DB",
                "kind": "store",
                "sub": "session consistency",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "c-redis",
                "label": "Managed Redis",
                "kind": "store",
                "sub": "Balanced B5",
                "icon": "azure_redis"
              },
              {
                "id": "c-search",
                "label": "Azure AI Search",
                "kind": "store",
                "sub": "S2 · 3 replicas",
                "icon": "azure_cognitive-search"
              },
              {
                "id": "c-adls",
                "label": "ADLS Gen2",
                "kind": "store",
                "sub": "ZRS · lifecycle",
                "icon": "azure_datalake"
              },
              {
                "id": "c-sb",
                "label": "Service Bus",
                "kind": "queue",
                "sub": "Premium · 4 MU",
                "icon": "azure_azure-service-bus"
              },
              {
                "id": "c-kv",
                "label": "Key Vault",
                "kind": "security",
                "sub": "HSM · RBAC",
                "icon": "azure_AzureKeyVault (Security)"
              }
            ]
          }
        ]
      }
    ],
    "outside": [
      {
        "id": "c-foundry",
        "label": "Azure AI Foundry",
        "kind": "external",
        "sub": "PTU + PAYG",
        "icon": "azure_ai-foundry"
      },
      {
        "id": "c-mcp",
        "label": "MCP Tool Servers",
        "kind": "external",
        "sub": "internal + partner",
        "icon": "fa5_plug"
      },
      {
        "id": "c-saas",
        "label": "SaaS Applications",
        "kind": "external",
        "sub": "SAP · SFDC · SNOW",
        "icon": "fa5_building"
      }
    ],
    "edges": [
      {
        "from": "c-fd",
        "to": "c-apim",
        "label": "HTTPS"
      },
      {
        "from": "c-apim",
        "to": "c-regapi",
        "label": "REST"
      },
      {
        "from": "c-apim",
        "to": "c-orch",
        "label": "submit run"
      },
      {
        "from": "c-orch",
        "to": "c-sb",
        "label": "dispatch",
        "kind": "async"
      },
      {
        "from": "c-work",
        "to": "c-code",
        "label": "exec request"
      },
      {
        "from": "c-work",
        "to": "c-apim",
        "label": "gateway hop"
      },
      {
        "from": "c-apim",
        "to": "c-foundry",
        "label": "inference"
      },
      {
        "from": "c-toolx",
        "to": "c-mcp",
        "label": "MCP"
      },
      {
        "from": "c-toolx",
        "to": "c-saas",
        "label": "REST"
      },
      {
        "from": "c-orch",
        "to": "c-cos",
        "label": "checkpoint"
      }
    ],
    "note": "Replica ranges are the sizing basis for 5,000 concurrent executions. Every data service is reached over a private endpoint.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "06-integration-catalogue",
    "title": "Integration and Interface Catalogue",
    "layout": "hub",
    "left": {
      "title": "Inbound",
      "nodes": [
        {
          "id": "i-chat",
          "label": "Chat Channels",
          "kind": "external",
          "rel": "SSE · realtime",
          "icon": "teams"
        },
        {
          "id": "i-app",
          "label": "Business Applications",
          "kind": "external",
          "rel": "REST · realtime",
          "icon": "fa5_building"
        },
        {
          "id": "i-evt",
          "label": "Event Sources",
          "kind": "external",
          "rel": "CloudEvents",
          "kind2": "async",
          "icon": "azure_event-grid-topics"
        },
        {
          "id": "i-hook",
          "label": "Partner Webhooks",
          "kind": "external",
          "rel": "HMAC signed",
          "kind2": "async"
        },
        {
          "id": "i-cicd",
          "label": "CI/CD Pipelines",
          "kind": "external",
          "rel": "OIDC · deploy"
        }
      ]
    },
    "centre": {
      "title": "Platform edge",
      "nodes": [
        {
          "id": "i-fd",
          "label": "Front Door + WAF",
          "kind": "integration",
          "sub": "TLS 1.3 · anycast",
          "icon": "azure_AzureFrontDoor (Networking)"
        },
        {
          "id": "i-apim",
          "label": "API Management",
          "kind": "integration",
          "sub": "38 public operations",
          "icon": "azure_AzureAPIManagement (Web)"
        },
        {
          "id": "i-eg",
          "label": "Event Grid",
          "kind": "queue",
          "sub": "6 published topics",
          "icon": "azure_event-grid-topics"
        },
        {
          "id": "i-timer",
          "label": "Scheduled Triggers",
          "kind": "integration",
          "sub": "cron · per project"
        },
        {
          "id": "i-core",
          "label": "Platform Core",
          "kind": "app",
          "sub": "control + execution"
        }
      ]
    },
    "right": {
      "title": "Outbound",
      "nodes": [
        {
          "id": "i-foundry",
          "label": "Azure AI Foundry",
          "kind": "external",
          "rel": "inference · sync",
          "dir": "out",
          "icon": "azure_ai-foundry"
        },
        {
          "id": "i-fm",
          "label": "Foundry Models",
          "kind": "external",
          "rel": "inference · sync",
          "dir": "out",
          "icon": "azure_foundry-models"
        },
        {
          "id": "i-mcp",
          "label": "MCP Tool Servers",
          "kind": "external",
          "rel": "MCP · on demand",
          "dir": "out",
          "icon": "fa5_plug"
        },
        {
          "id": "i-api",
          "label": "Enterprise APIs",
          "kind": "external",
          "rel": "REST · on demand",
          "dir": "out",
          "icon": "fa5_plug"
        },
        {
          "id": "i-saas",
          "label": "SaaS Applications",
          "kind": "external",
          "rel": "REST · on demand",
          "dir": "out",
          "icon": "fa5_building"
        },
        {
          "id": "i-graph",
          "label": "Microsoft Graph",
          "kind": "external",
          "rel": "cards · events",
          "dir": "out",
          "kind2": "async",
          "icon": "teams"
        },
        {
          "id": "i-purv",
          "label": "Microsoft Purview",
          "kind": "external",
          "rel": "lineage · nightly",
          "dir": "out",
          "kind2": "batch",
          "icon": "azure_AzurePurviewAccount (Analytics)"
        },
        {
          "id": "i-sent",
          "label": "Microsoft Sentinel",
          "kind": "external",
          "rel": "security events",
          "dir": "out",
          "kind2": "async",
          "icon": "azure_sentinel"
        }
      ]
    },
    "note": "Every interface is owned by the platform except the MCP wire contract and the Graph card schema.",
    "meta": {
      "v": "1.0",
      "owner": "Integration Architecture",
      "date": "2026-08"
    },
    "canvas": {
      "width": 1800
    }
  },
  {
    "id": "07-agent-runtime-internals",
    "title": "Agent Runtime — Inside One Worker",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1800
    },
    "stages": [
      {
        "title": "Lease",
        "nodes": [
          {
            "id": "r-lease",
            "label": "Queue Lease",
            "kind": "queue",
            "sub": "session locked"
          },
          {
            "id": "r-idem",
            "label": "Idempotency Check",
            "kind": "decision",
            "sub": "step key"
          },
          {
            "id": "r-bundle",
            "label": "Bundle Load",
            "kind": "app",
            "sub": "pinned version"
          }
        ]
      },
      {
        "title": "Prepare",
        "nodes": [
          {
            "id": "r-ctx",
            "label": "Context Manager",
            "kind": "app",
            "sub": "assemble window"
          },
          {
            "id": "r-memr",
            "label": "Memory Read",
            "kind": "app",
            "sub": "scoped · audited",
            "icon": "fa5_memory"
          },
          {
            "id": "r-limit",
            "label": "Limit Check",
            "kind": "security",
            "sub": "tokens · depth · cost"
          }
        ]
      },
      {
        "title": "Guard in",
        "nodes": [
          {
            "id": "r-shield",
            "label": "Prompt Shields",
            "kind": "security",
            "sub": "injection · jailbreak",
            "icon": "azure_content-safety"
          },
          {
            "id": "r-pii",
            "label": "PII Redaction",
            "kind": "security",
            "sub": "detect · mask"
          },
          {
            "id": "r-cls",
            "label": "Classification Gate",
            "kind": "decision",
            "sub": "residency route"
          }
        ]
      },
      {
        "title": "Reason",
        "nodes": [
          {
            "id": "r-agent",
            "label": "Agent Loop",
            "kind": "app",
            "sub": "framework adapter",
            "icon": "agent"
          },
          {
            "id": "r-gwcall",
            "label": "AI Gateway Call",
            "kind": "integration",
            "sub": "stream · retries",
            "icon": "azure_ai-gateway"
          },
          {
            "id": "r-plan",
            "label": "Plan or Delegate",
            "kind": "decision",
            "sub": "coordinator hop"
          }
        ]
      },
      {
        "title": "Act",
        "nodes": [
          {
            "id": "r-tval",
            "label": "Tool Call Validation",
            "kind": "security",
            "sub": "schema · permission"
          },
          {
            "id": "r-tool",
            "label": "Tool Executor",
            "kind": "app",
            "sub": "timeout · retry"
          },
          {
            "id": "r-sbx",
            "label": "Session Sandbox",
            "kind": "platform",
            "sub": "code · browser",
            "icon": "azure_azure-enclaves"
          }
        ]
      },
      {
        "title": "Guard out",
        "nodes": [
          {
            "id": "r-schema",
            "label": "Structured Output",
            "kind": "security",
            "sub": "schema enforced"
          },
          {
            "id": "r-ground",
            "label": "Groundedness Check",
            "kind": "security",
            "sub": "citation bound"
          },
          {
            "id": "r-esc",
            "label": "Escalate to Human",
            "kind": "decision",
            "sub": "on fail"
          }
        ]
      },
      {
        "title": "Commit",
        "nodes": [
          {
            "id": "r-ckpt",
            "label": "Checkpoint",
            "kind": "store",
            "sub": "durable state"
          },
          {
            "id": "r-memw",
            "label": "Memory Write",
            "kind": "app",
            "sub": "policy TTL",
            "icon": "fa5_memory"
          },
          {
            "id": "r-emit",
            "label": "Emit Telemetry",
            "kind": "platform",
            "sub": "OTel GenAI"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "r-esc",
        "to": "r-ckpt",
        "label": "awaits",
        "kind": "async",
        "route": "gutter"
      },
      {
        "from": "r-tool",
        "to": "r-agent",
        "label": "tool result",
        "route": "gutter"
      }
    ],
    "note": "The worker holds no long-lived secret and no state between steps. Everything durable is written at Commit.",
    "meta": {
      "v": "1.0",
      "owner": "Runtime Engineering",
      "date": "2026-08"
    }
  },
  {
    "id": "08-model-gateway-and-routing",
    "title": "Model Abstraction — AI Gateway, Routing and Fallback",
    "layout": "nested",
    "canvas": {
      "width": 1720
    },
    "boxes": [
      {
        "title": "AI Gateway · Azure API Management",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Request policy chain",
            "kind": "plain",
            "nodes": [
              {
                "id": "g-auth",
                "label": "Identity Check",
                "kind": "security",
                "sub": "agent identity",
                "icon": "fa5_id_badge"
              },
              {
                "id": "g-tlimit",
                "label": "Token Rate Limit",
                "kind": "security",
                "sub": "per tenant · TPM"
              },
              {
                "id": "g-cache",
                "label": "Semantic Cache",
                "kind": "store",
                "sub": "Redis · vector",
                "icon": "azure_redis"
              },
              {
                "id": "g-red",
                "label": "Egress Guard",
                "kind": "security",
                "sub": "classification"
              }
            ]
          },
          {
            "title": "Router",
            "kind": "plain",
            "nodes": [
              {
                "id": "g-cap",
                "label": "Capability Match",
                "kind": "decision",
                "sub": "modality · context"
              },
              {
                "id": "g-pol",
                "label": "Route Policy",
                "kind": "decision",
                "sub": "cost · latency · region"
              },
              {
                "id": "g-lb",
                "label": "Weighted Pool",
                "kind": "integration",
                "sub": "load balanced"
              },
              {
                "id": "g-cb",
                "label": "Circuit Breaker",
                "kind": "security",
                "sub": "429 · 5xx trip"
              }
            ]
          },
          {
            "title": "Response policy chain",
            "kind": "plain",
            "nodes": [
              {
                "id": "g-meter",
                "label": "Token Metric Emit",
                "kind": "platform",
                "sub": "per execution"
              },
              {
                "id": "g-stream",
                "label": "Stream Relay",
                "kind": "integration",
                "sub": "SSE passthrough"
              },
              {
                "id": "g-fb",
                "label": "Fallback Chain",
                "kind": "decision",
                "sub": "next healthy route"
              }
            ]
          }
        ]
      },
      {
        "title": "Model backends",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Azure AI Foundry",
            "kind": "plain",
            "nodes": [
              {
                "id": "g-ptu",
                "label": "Reasoning PTU Pool",
                "kind": "external",
                "sub": "reserved capacity",
                "icon": "azure_azure-openai"
              },
              {
                "id": "g-payg",
                "label": "PAYG Spillover",
                "kind": "external",
                "sub": "burst · 3 regions",
                "icon": "azure_azure-openai"
              },
              {
                "id": "g-emb",
                "label": "Embedding Models",
                "kind": "external",
                "sub": "batch friendly",
                "icon": "azure_azure-openai"
              }
            ]
          },
          {
            "title": "Alternate providers",
            "kind": "plain",
            "nodes": [
              {
                "id": "g-fm",
                "label": "Foundry Models",
                "kind": "external",
                "sub": "partner catalogue",
                "icon": "azure_foundry-models"
              },
              {
                "id": "g-kaito",
                "label": "Open-Weight on AKS",
                "kind": "external",
                "sub": "KAITO · GPU pool",
                "icon": "azure_kubernetes-services"
              },
              {
                "id": "g-rerank",
                "label": "Reranker",
                "kind": "external",
                "sub": "self-hosted"
              }
            ]
          }
        ]
      }
    ],
    "outside": [
      {
        "id": "g-mreg",
        "label": "Model Registry",
        "kind": "app",
        "sub": "control plane",
        "icon": "azure_foundry-control-plane"
      },
      {
        "id": "g-health",
        "label": "Provider Health",
        "kind": "platform",
        "sub": "probe · 30 s"
      },
      {
        "id": "g-cost",
        "label": "Cost Meter",
        "kind": "store",
        "sub": "Event Hubs · ADX",
        "icon": "azure_cost-analysis"
      }
    ],
    "edges": [
      {
        "from": "g-mreg",
        "to": "g-pol",
        "label": "route table",
        "kind": "async"
      },
      {
        "from": "g-health",
        "to": "g-cb",
        "label": "backend state",
        "kind": "async"
      },
      {
        "from": "g-lb",
        "to": "g-ptu",
        "label": "primary"
      },
      {
        "from": "g-fb",
        "to": "g-payg",
        "label": "on trip",
        "kind": "error"
      },
      {
        "from": "g-fb",
        "to": "g-fm",
        "label": "on trip",
        "kind": "error"
      },
      {
        "from": "g-meter",
        "to": "g-cost",
        "label": "tokens",
        "kind": "async",
        "route": "gutter"
      }
    ],
    "note": "No agent holds a provider key. The gateway presents its own managed identity to every backend.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "09-tool-plane-and-permissions",
    "title": "Tool Plane — Discovery, Authorisation and Invocation by Tool Class",
    "layout": "swimlane",
    "canvas": {
      "width": 1800
    },
    "laneHeaderWidth": 150,
    "stages": [
      "Discover",
      "Authorise",
      "Invoke",
      "Validate",
      "Record"
    ],
    "lanes": [
      {
        "title": "HTTP and REST",
        "cells": [
          [
            {
              "id": "t1a",
              "label": "API Center entry",
              "kind": "app",
              "icon": "azure_api-center"
            }
          ],
          [
            {
              "id": "t1b",
              "label": "Agent scope grant",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t1c",
              "label": "APIM egress",
              "kind": "integration",
              "icon": "azure_AzureAPIManagement (Web)"
            }
          ],
          [
            {
              "id": "t1d",
              "label": "JSON Schema",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t1e",
              "label": "Tool call span",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "MCP servers",
        "cells": [
          [
            {
              "id": "t2a",
              "label": "MCP tools/list",
              "kind": "app"
            }
          ],
          [
            {
              "id": "t2b",
              "label": "Server allow-list",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t2c",
              "label": "MCP over HTTP",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "t2d",
              "label": "Result schema",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t2e",
              "label": "Tool call span",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Data and search",
        "cells": [
          [
            {
              "id": "t3a",
              "label": "Index catalogue",
              "kind": "app",
              "icon": "azure_cognitive-search"
            }
          ],
          [
            {
              "id": "t3b",
              "label": "Row-level filter",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t3c",
              "label": "AI Search query",
              "kind": "store",
              "icon": "azure_cognitive-search"
            }
          ],
          [
            {
              "id": "t3d",
              "label": "Citation binding",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t3e",
              "label": "Provenance record",
              "kind": "store"
            }
          ]
        ]
      },
      {
        "title": "Code and browser",
        "cells": [
          [
            {
              "id": "t4a",
              "label": "Session template",
              "kind": "app"
            }
          ],
          [
            {
              "id": "t4b",
              "label": "Egress policy",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t4c",
              "label": "Dynamic session",
              "kind": "platform",
              "icon": "azure_azure-enclaves"
            }
          ],
          [
            {
              "id": "t4d",
              "label": "Output size cap",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t4e",
              "label": "Artifact to ADLS",
              "kind": "store",
              "icon": "azure_datalake"
            }
          ]
        ]
      },
      {
        "title": "Sensitive actions",
        "cells": [
          [
            {
              "id": "t5a",
              "label": "Marked in registry",
              "kind": "app"
            }
          ],
          [
            {
              "id": "t5b",
              "label": "Human approval",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "t5c",
              "label": "Idempotency key",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "t5d",
              "label": "Effect assertion",
              "kind": "security"
            }
          ],
          [
            {
              "id": "t5e",
              "label": "Audit ledger",
              "kind": "store",
              "icon": "azure_blobstorage"
            }
          ]
        ]
      }
    ],
    "note": "Every lane ends in a record. A tool the registry does not list cannot be called, whatever the model asks for.",
    "meta": {
      "v": "1.0",
      "owner": "Integration Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "10-messaging-and-queue-topology",
    "title": "Event and Messaging Topology",
    "layout": "nested",
    "canvas": {
      "width": 1740
    },
    "boxes": [
      {
        "title": "Azure Service Bus Premium · work distribution",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Work queue classes",
            "kind": "plain",
            "nodes": [
              {
                "id": "q-int",
                "label": "Interactive",
                "kind": "queue",
                "sub": "p95 lease under 2 s",
                "icon": "azure_AzureServiceBusQueue (Integration)"
              },
              {
                "id": "q-batch",
                "label": "Batch",
                "kind": "queue",
                "sub": "throughput first",
                "icon": "azure_AzureServiceBusQueue (Integration)"
              },
              {
                "id": "q-long",
                "label": "Long-Running",
                "kind": "queue",
                "sub": "hours to days",
                "icon": "azure_AzureServiceBusQueue (Integration)"
              },
              {
                "id": "q-retry",
                "label": "Retry Scheduled",
                "kind": "queue",
                "sub": "backoff + jitter",
                "icon": "azure_AzureServiceBusQueue (Integration)"
              }
            ]
          },
          {
            "title": "Delivery controls",
            "kind": "plain",
            "nodes": [
              {
                "id": "q-sess",
                "label": "Session Ordering",
                "kind": "integration",
                "sub": "per execution"
              },
              {
                "id": "q-lock",
                "label": "Lock Renewal",
                "kind": "integration",
                "sub": "heartbeat",
                "icon": "fa5_heartbeat"
              },
              {
                "id": "q-dlq",
                "label": "Dead Letter",
                "kind": "queue",
                "sub": "per queue",
                "icon": "azure_AzureServiceBusQueue (Integration)"
              }
            ]
          }
        ]
      },
      {
        "title": "Azure Event Grid · lifecycle and webhooks",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Published topics",
            "kind": "plain",
            "nodes": [
              {
                "id": "q-agt",
                "label": "Agent Lifecycle",
                "kind": "queue",
                "sub": "start · pause · end",
                "icon": "azure_event-grid-topics"
              },
              {
                "id": "q-wf",
                "label": "Workflow Events",
                "kind": "queue",
                "sub": "state transitions",
                "icon": "azure_event-grid-topics"
              },
              {
                "id": "q-appr",
                "label": "Approval Events",
                "kind": "queue",
                "sub": "raised · decided",
                "icon": "azure_event-grid-topics"
              },
              {
                "id": "q-guard",
                "label": "Guardrail Events",
                "kind": "queue",
                "sub": "block · escalate",
                "icon": "azure_event-grid-topics"
              }
            ]
          },
          {
            "title": "External edges",
            "kind": "plain",
            "nodes": [
              {
                "id": "q-in",
                "label": "Webhook Ingress",
                "kind": "integration",
                "sub": "HMAC · replay guard",
                "icon": "azure_AzureAPIManagement (Web)"
              },
              {
                "id": "q-out",
                "label": "Partner Delivery",
                "kind": "integration",
                "sub": "retry 24 h"
              }
            ]
          }
        ]
      },
      {
        "title": "Azure Event Hubs · telemetry firehose",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Streams",
            "kind": "plain",
            "nodes": [
              {
                "id": "q-otel",
                "label": "Trace Stream",
                "kind": "queue",
                "sub": "OTel GenAI",
                "icon": "azure_event-hubs"
              },
              {
                "id": "q-tok",
                "label": "Token Meter",
                "kind": "queue",
                "sub": "per model call",
                "icon": "azure_event-hubs"
              },
              {
                "id": "q-cap",
                "label": "Capture to ADLS",
                "kind": "store",
                "sub": "Avro · 5 min",
                "icon": "azure_datalake"
              }
            ]
          }
        ]
      }
    ],
    "outside": [
      {
        "id": "q-triage",
        "label": "DLQ Triage Worker",
        "kind": "app",
        "sub": "classify · replay"
      },
      {
        "id": "q-alert",
        "label": "Operator Alert",
        "kind": "platform",
        "sub": "depth and age SLO"
      }
    ],
    "edges": [
      {
        "from": "q-dlq",
        "to": "q-triage",
        "label": "poison message",
        "kind": "error"
      },
      {
        "from": "q-triage",
        "to": "q-retry",
        "label": "replay",
        "kind": "async"
      },
      {
        "from": "q-dlq",
        "to": "q-alert",
        "label": "depth breach",
        "kind": "error"
      },
      {
        "from": "q-appr",
        "to": "q-out",
        "label": "notify",
        "kind": "async"
      },
      {
        "from": "q-tok",
        "to": "q-cap",
        "label": "capture",
        "kind": "batch"
      }
    ],
    "note": "Delivery is at-least-once everywhere. Effects are made idempotent at the handler, never assumed at the broker.",
    "meta": {
      "v": "1.0",
      "owner": "Platform Engineering",
      "date": "2026-08"
    }
  },
  {
    "id": "11-definition-lifecycle",
    "title": "Definition Lifecycle — Versioning an Agent, Workflow, Prompt or Policy",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1760
    },
    "stages": [
      {
        "title": "Author",
        "nodes": [
          {
            "id": "d-spec",
            "label": "Agent Spec",
            "kind": "app",
            "sub": "YAML · typed schema"
          },
          {
            "id": "d-local",
            "label": "Local Runtime",
            "kind": "app",
            "sub": "same contract",
            "icon": "python"
          },
          {
            "id": "d-git",
            "label": "Git Repository",
            "kind": "store",
            "sub": "source of truth",
            "icon": "github"
          }
        ]
      },
      {
        "title": "Validate",
        "nodes": [
          {
            "id": "d-lint",
            "label": "Schema Lint",
            "kind": "security",
            "sub": "spec version"
          },
          {
            "id": "d-policy",
            "label": "Policy Simulation",
            "kind": "security",
            "sub": "dry run",
            "icon": "opa"
          },
          {
            "id": "d-eval",
            "label": "Golden Evaluation",
            "kind": "app",
            "sub": "regression suite",
            "icon": "azure_azure-machine-learning"
          }
        ]
      },
      {
        "title": "Review",
        "nodes": [
          {
            "id": "d-diff",
            "label": "Behaviour Diff",
            "kind": "app",
            "sub": "vs live version"
          },
          {
            "id": "d-appr",
            "label": "Owner Approval",
            "kind": "decision",
            "sub": "RBAC gated"
          },
          {
            "id": "d-risk",
            "label": "Risk Classification",
            "kind": "security",
            "sub": "tool blast radius"
          }
        ]
      },
      {
        "title": "Publish",
        "nodes": [
          {
            "id": "d-ver",
            "label": "Immutable Version",
            "kind": "store",
            "sub": "content hash"
          },
          {
            "id": "d-sign",
            "label": "Bundle Signing",
            "kind": "security",
            "sub": "Key Vault key",
            "icon": "azure_AzureKeyVault (Security)"
          },
          {
            "id": "d-reg",
            "label": "Registry Entry",
            "kind": "app",
            "sub": "draft to published"
          }
        ]
      },
      {
        "title": "Promote",
        "nodes": [
          {
            "id": "d-dev",
            "label": "Development",
            "kind": "app",
            "sub": "auto",
            "icon": "fa5_layer_group"
          },
          {
            "id": "d-test",
            "label": "Test and Staging",
            "kind": "app",
            "sub": "eval gate",
            "icon": "fa5_layer_group"
          },
          {
            "id": "d-prod",
            "label": "Production Canary",
            "kind": "app",
            "sub": "5 percent · 24 h",
            "icon": "fa5_layer_group"
          }
        ]
      },
      {
        "title": "Operate",
        "nodes": [
          {
            "id": "d-pin",
            "label": "Version Pinning",
            "kind": "security",
            "sub": "at admission",
            "icon": "fa5_thumbtack"
          },
          {
            "id": "d-ab",
            "label": "A/B Split",
            "kind": "decision",
            "sub": "traffic weight"
          },
          {
            "id": "d-roll",
            "label": "Rollback",
            "kind": "app",
            "sub": "prior hash"
          },
          {
            "id": "d-ret",
            "label": "Retire",
            "kind": "app",
            "sub": "drain in-flight"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "d-eval",
        "to": "d-diff",
        "label": "scores"
      },
      {
        "from": "d-prod",
        "to": "d-roll",
        "label": "canary fails",
        "kind": "error",
        "route": "gutter"
      },
      {
        "from": "d-pin",
        "to": "d-ver",
        "label": "resolve hash",
        "route": "gutter"
      }
    ],
    "note": "A published version is immutable. Change means a new version; rollback means re-pointing the alias, never editing.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "12-data-architecture-zones",
    "title": "Data Architecture — Storage Zones by Ownership and Rebuildability",
    "layout": "nested",
    "canvas": {
      "width": 1740
    },
    "boxes": [
      {
        "title": "Authoritative · loss is unrecoverable · backup and DR mandatory",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Configuration and governance",
            "kind": "plain",
            "nodes": [
              {
                "id": "z-sql",
                "label": "Definition Store",
                "kind": "store",
                "sub": "Azure SQL · PITR 35 d",
                "icon": "azure_azure-sql"
              },
              {
                "id": "z-kv",
                "label": "Credential Store",
                "kind": "security",
                "sub": "Key Vault · soft delete",
                "icon": "azure_AzureKeyVault (Security)"
              },
              {
                "id": "z-pol",
                "label": "Policy Bundles",
                "kind": "store",
                "sub": "signed · versioned",
                "icon": "opa"
              }
            ]
          },
          {
            "title": "Execution truth",
            "kind": "plain",
            "nodes": [
              {
                "id": "z-cos",
                "label": "Execution Store",
                "kind": "store",
                "sub": "Cosmos · continuous BU",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "z-hist",
                "label": "Orchestration History",
                "kind": "store",
                "sub": "durable · replayable",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "z-aud",
                "label": "Audit Ledger",
                "kind": "store",
                "sub": "immutable blob · 7 y",
                "icon": "azure_blobstorage"
              }
            ]
          }
        ]
      },
      {
        "title": "Rebuildable · derived, restorable by reprocessing",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Indexes and caches",
            "kind": "plain",
            "nodes": [
              {
                "id": "z-search",
                "label": "Knowledge Index",
                "kind": "store",
                "sub": "AI Search · reindex",
                "icon": "azure_cognitive-search"
              },
              {
                "id": "z-redis",
                "label": "Turn and Route Cache",
                "kind": "store",
                "sub": "Redis · TTL 60 m",
                "icon": "azure_redis"
              },
              {
                "id": "z-semc",
                "label": "Semantic Cache",
                "kind": "store",
                "sub": "Redis vector · 24 h",
                "icon": "azure_redis"
              }
            ]
          },
          {
            "title": "Analytical projections",
            "kind": "plain",
            "nodes": [
              {
                "id": "z-adx",
                "label": "Telemetry Store",
                "kind": "store",
                "sub": "ADX · 90 d hot",
                "icon": "azure_azure-data-explorer-clusters"
              },
              {
                "id": "z-proj",
                "label": "Run Projections",
                "kind": "store",
                "sub": "console read model",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "z-cost",
                "label": "Cost Facts",
                "kind": "store",
                "sub": "daily rollup · 24 m",
                "icon": "azure_azure-data-explorer-clusters"
              }
            ]
          }
        ]
      },
      {
        "title": "Large payload · lifecycle and retention policy driven",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Object storage",
            "kind": "plain",
            "nodes": [
              {
                "id": "z-art",
                "label": "Run Artifacts",
                "kind": "store",
                "sub": "ADLS · tier at 30 d",
                "icon": "azure_datalake"
              },
              {
                "id": "z-pr",
                "label": "Prompt and Response",
                "kind": "store",
                "sub": "opt-in · 30 d",
                "icon": "azure_datalake"
              },
              {
                "id": "z-eval",
                "label": "Golden Datasets",
                "kind": "store",
                "sub": "versioned · retained",
                "icon": "azure_datalake"
              },
              {
                "id": "z-cap",
                "label": "Event Capture",
                "kind": "store",
                "sub": "Avro · 12 m",
                "icon": "azure_datalake"
              }
            ]
          }
        ]
      }
    ],
    "outside": [
      {
        "id": "z-vault",
        "label": "Backup Vault",
        "kind": "platform",
        "sub": "GRS · immutable",
        "icon": "azure_backup-vault"
      },
      {
        "id": "z-geo",
        "label": "Paired-Region Replica",
        "kind": "store",
        "sub": "RPO 5 min",
        "icon": "azure_resiliency"
      },
      {
        "id": "z-purv",
        "label": "Microsoft Purview",
        "kind": "external",
        "sub": "catalogue · lineage",
        "icon": "azure_AzurePurviewAccount (Analytics)"
      }
    ],
    "edges": [
      {
        "from": "z-sql",
        "to": "z-vault",
        "label": "nightly",
        "kind": "batch"
      },
      {
        "from": "z-cos",
        "to": "z-geo",
        "label": "continuous",
        "kind": "async"
      },
      {
        "from": "z-aud",
        "to": "z-vault",
        "label": "WORM copy",
        "kind": "batch"
      },
      {
        "from": "z-art",
        "to": "z-search",
        "label": "reindex",
        "kind": "batch"
      },
      {
        "from": "z-cap",
        "to": "z-adx",
        "label": "ingest",
        "kind": "batch"
      },
      {
        "from": "z-sql",
        "to": "z-purv",
        "label": "scan",
        "kind": "batch"
      }
    ],
    "note": "Only the top zone needs disaster recovery. Everything in the middle zone is rebuilt from it, and that is the sizing basis for RTO.",
    "meta": {
      "v": "1.0",
      "owner": "Data Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "13-memory-subsystem",
    "title": "Memory Subsystem — Scope, Store, Retrieval, Permission, Retention",
    "layout": "grid",
    "canvas": {
      "width": 1800
    },
    "laneHeaderWidth": 160,
    "columns": [
      "Written by",
      "Store",
      "Retrieval",
      "Permission",
      "Retention"
    ],
    "rows": [
      {
        "title": "Execution state",
        "cells": [
          [
            {
              "id": "y1a",
              "label": "Orchestrator",
              "kind": "app"
            }
          ],
          [
            {
              "id": "y1b",
              "label": "Cosmos DB",
              "kind": "store",
              "icon": "azure_azure-cosmos-db"
            }
          ],
          [
            {
              "id": "y1c",
              "label": "By execution id",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "y1d",
              "label": "Run owner only",
              "kind": "security"
            }
          ],
          [
            {
              "id": "y1e",
              "label": "90 days",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Conversation",
        "cells": [
          [
            {
              "id": "y2a",
              "label": "Agent Executor",
              "kind": "app",
              "icon": "agent"
            }
          ],
          [
            {
              "id": "y2b",
              "label": "Cosmos DB",
              "kind": "store",
              "icon": "azure_azure-cosmos-db"
            }
          ],
          [
            {
              "id": "y2c",
              "label": "Recent turns",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "y2d",
              "label": "Session subject",
              "kind": "security"
            }
          ],
          [
            {
              "id": "y2e",
              "label": "Tenant policy",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Episodic",
        "cells": [
          [
            {
              "id": "y3a",
              "label": "Memory Service",
              "kind": "app",
              "icon": "fa5_memory"
            }
          ],
          [
            {
              "id": "y3b",
              "label": "Cosmos + vectors",
              "kind": "store",
              "icon": "azure_azure-cosmos-db"
            }
          ],
          [
            {
              "id": "y3c",
              "label": "Similarity + recency",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "y3d",
              "label": "Agent scope grant",
              "kind": "security"
            }
          ],
          [
            {
              "id": "y3e",
              "label": "Decay then expire",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Knowledge",
        "cells": [
          [
            {
              "id": "y4a",
              "label": "Ingestion Pipeline",
              "kind": "app"
            }
          ],
          [
            {
              "id": "y4b",
              "label": "Azure AI Search",
              "kind": "store",
              "icon": "azure_cognitive-search"
            }
          ],
          [
            {
              "id": "y4c",
              "label": "Hybrid + reranker",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "y4d",
              "label": "Security trimming",
              "kind": "security"
            }
          ],
          [
            {
              "id": "y4e",
              "label": "Source lifecycle",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Profile and org",
        "cells": [
          [
            {
              "id": "y5a",
              "label": "Admin and user",
              "kind": "actor"
            }
          ],
          [
            {
              "id": "y5b",
              "label": "Azure SQL",
              "kind": "store",
              "icon": "azure_azure-sql"
            }
          ],
          [
            {
              "id": "y5c",
              "label": "Direct lookup",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "y5d",
              "label": "Consent flagged",
              "kind": "security"
            }
          ],
          [
            {
              "id": "y5e",
              "label": "Erasure on request",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Artifacts",
        "cells": [
          [
            {
              "id": "y6a",
              "label": "Tool Executor",
              "kind": "app"
            }
          ],
          [
            {
              "id": "y6b",
              "label": "ADLS Gen2",
              "kind": "store",
              "icon": "azure_datalake"
            }
          ],
          [
            {
              "id": "y6c",
              "label": "By artifact id",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "y6d",
              "label": "SAS · 15 minutes",
              "kind": "security"
            }
          ],
          [
            {
              "id": "y6e",
              "label": "Tier then delete",
              "kind": "platform"
            }
          ]
        ]
      }
    ],
    "note": "Every read is filtered by tenant and by the agent's declared memory scope, and every read is written to the audit ledger.",
    "meta": {
      "v": "1.0",
      "owner": "Data Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "14-context-assembly-pipeline",
    "title": "Context Management — Assembling One Model Invocation",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1780
    },
    "stages": [
      {
        "title": "Resolve",
        "nodes": [
          {
            "id": "x-strat",
            "label": "Context Strategy",
            "kind": "app",
            "sub": "per agent spec"
          },
          {
            "id": "x-budget",
            "label": "Window Budget",
            "kind": "decision",
            "sub": "reserve for output"
          }
        ]
      },
      {
        "title": "Gather",
        "nodes": [
          {
            "id": "x-sys",
            "label": "System Instruction",
            "kind": "app",
            "sub": "pinned version"
          },
          {
            "id": "x-hist",
            "label": "Conversation Slice",
            "kind": "store",
            "sub": "last N turns"
          },
          {
            "id": "x-mem",
            "label": "Memory Recall",
            "kind": "app",
            "sub": "scoped query",
            "icon": "fa5_memory"
          },
          {
            "id": "x-kb",
            "label": "Knowledge Retrieval",
            "kind": "store",
            "sub": "hybrid search",
            "icon": "azure_cognitive-search"
          }
        ]
      },
      {
        "title": "Rank",
        "nodes": [
          {
            "id": "x-rerank",
            "label": "Reranker",
            "kind": "app",
            "sub": "cross-encoder"
          },
          {
            "id": "x-dedup",
            "label": "Deduplicate",
            "kind": "app",
            "sub": "near-duplicate drop"
          },
          {
            "id": "x-rel",
            "label": "Relevance Cut",
            "kind": "decision",
            "sub": "score threshold"
          }
        ]
      },
      {
        "title": "Compress",
        "nodes": [
          {
            "id": "x-sum",
            "label": "Rolling Summary",
            "kind": "app",
            "sub": "cheap model"
          },
          {
            "id": "x-trim",
            "label": "Tool Output Trim",
            "kind": "app",
            "sub": "head and tail"
          },
          {
            "id": "x-fit",
            "label": "Fit to Window",
            "kind": "decision",
            "sub": "hard cap"
          }
        ]
      },
      {
        "title": "Protect",
        "nodes": [
          {
            "id": "x-pii",
            "label": "PII Redaction",
            "kind": "security",
            "sub": "reversible token"
          },
          {
            "id": "x-untrust",
            "label": "Untrusted Fencing",
            "kind": "security",
            "sub": "content delimiters"
          },
          {
            "id": "x-class",
            "label": "Classification Check",
            "kind": "security",
            "sub": "route constraint"
          }
        ]
      },
      {
        "title": "Assemble",
        "nodes": [
          {
            "id": "x-msg",
            "label": "Message Array",
            "kind": "app",
            "sub": "provider neutral"
          },
          {
            "id": "x-prov",
            "label": "Provenance Tags",
            "kind": "app",
            "sub": "source per block"
          },
          {
            "id": "x-acct",
            "label": "Token Accounting",
            "kind": "platform",
            "sub": "pre-call estimate"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "x-fit",
        "to": "x-rel",
        "label": "still over budget",
        "kind": "error",
        "route": "gutter"
      },
      {
        "from": "x-class",
        "to": "x-msg",
        "label": "route pinned"
      },
      {
        "from": "x-prov",
        "to": "x-acct",
        "label": "cited blocks"
      }
    ],
    "note": "Retrieved content is fenced as untrusted before it reaches the model. Provenance survives into the trace, so any claim is attributable.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "15-data-flow-by-class",
    "title": "Data Flow by Data Class — Produce, Transport, Land, Serve, Retain",
    "layout": "swimlane",
    "canvas": {
      "width": 1800
    },
    "laneHeaderWidth": 165,
    "stages": [
      "Produce",
      "Transport",
      "Land",
      "Serve",
      "Retain"
    ],
    "lanes": [
      {
        "title": "Definitions",
        "cells": [
          [
            {
              "id": "f1a",
              "label": "Git commit",
              "kind": "app"
            }
          ],
          [
            {
              "id": "f1b",
              "label": "Pipeline · on merge",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f1c",
              "label": "Azure SQL",
              "kind": "store",
              "icon": "azure_azure-sql"
            }
          ],
          [
            {
              "id": "f1d",
              "label": "Signed bundle",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f1e",
              "label": "All versions kept",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Execution state",
        "cells": [
          [
            {
              "id": "f2a",
              "label": "Orchestrator step",
              "kind": "app"
            }
          ],
          [
            {
              "id": "f2b",
              "label": "Checkpoint · sync",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f2c",
              "label": "Cosmos DB",
              "kind": "store",
              "icon": "azure_azure-cosmos-db"
            }
          ],
          [
            {
              "id": "f2d",
              "label": "Query and replay",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f2e",
              "label": "90 d then archive",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Prompts and output",
        "cells": [
          [
            {
              "id": "f3a",
              "label": "Model call",
              "kind": "app"
            }
          ],
          [
            {
              "id": "f3b",
              "label": "Gateway capture",
              "kind": "integration",
              "icon": "azure_ai-gateway"
            }
          ],
          [
            {
              "id": "f3c",
              "label": "ADLS · encrypted",
              "kind": "store",
              "icon": "azure_datalake"
            }
          ],
          [
            {
              "id": "f3d",
              "label": "Trace deep link",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f3e",
              "label": "Off by default",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Memory and knowledge",
        "cells": [
          [
            {
              "id": "f4a",
              "label": "Source system",
              "kind": "external"
            }
          ],
          [
            {
              "id": "f4b",
              "label": "Ingestion · nightly",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f4c",
              "label": "AI Search index",
              "kind": "store",
              "icon": "azure_cognitive-search"
            }
          ],
          [
            {
              "id": "f4d",
              "label": "Trimmed retrieval",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f4e",
              "label": "Follows source",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Telemetry and cost",
        "cells": [
          [
            {
              "id": "f5a",
              "label": "OTel span",
              "kind": "app"
            }
          ],
          [
            {
              "id": "f5b",
              "label": "Event Hubs",
              "kind": "queue",
              "icon": "azure_event-hubs"
            }
          ],
          [
            {
              "id": "f5c",
              "label": "Monitor + ADX",
              "kind": "store"
            }
          ],
          [
            {
              "id": "f5d",
              "label": "Grafana · console",
              "kind": "platform",
              "icon": "azure_azure-managed-grafana"
            }
          ],
          [
            {
              "id": "f5e",
              "label": "90 d hot · 2 y cold",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Audit",
        "cells": [
          [
            {
              "id": "f6a",
              "label": "Privileged action",
              "kind": "security"
            }
          ],
          [
            {
              "id": "f6b",
              "label": "Append only",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "f6c",
              "label": "Immutable blob",
              "kind": "store",
              "icon": "azure_blobstorage"
            }
          ],
          [
            {
              "id": "f6d",
              "label": "Sentinel + export",
              "kind": "security",
              "icon": "azure_sentinel"
            }
          ],
          [
            {
              "id": "f6e",
              "label": "7 years · WORM",
              "kind": "platform"
            }
          ]
        ]
      }
    ],
    "note": "Prompt and completion capture is opt-in per project and defaults off. Everything else on this page is always on.",
    "meta": {
      "v": "1.0",
      "owner": "Data Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "16-platform-data-model",
    "title": "Platform Data Model — Core Entities",
    "layout": "er",
    "canvas": {
      "width": 1660,
      "cols": 4
    },
    "rowGap": 260,
    "entities": [
      {
        "id": "m-ten",
        "name": "tenant",
        "kind": "store",
        "row": 0,
        "col": 0,
        "attrs": [
          "tenant_id  PK",
          "entra_tenant  UQ",
          "residency_region",
          "quota_profile",
          "budget_ceiling"
        ]
      },
      {
        "id": "m-prj",
        "name": "project",
        "kind": "store",
        "row": 0,
        "col": 1,
        "attrs": [
          "project_id  PK",
          "tenant_id  FK",
          "environment",
          "monthly_budget",
          "capture_prompts"
        ]
      },
      {
        "id": "m-agv",
        "name": "agent_version",
        "kind": "store",
        "row": 0,
        "col": 2,
        "attrs": [
          "agent_version_id  PK",
          "project_id  FK",
          "spec_hash  UQ",
          "state",
          "model_route_id  FK"
        ]
      },
      {
        "id": "m-wfv",
        "name": "workflow_version",
        "kind": "store",
        "row": 0,
        "col": 3,
        "attrs": [
          "workflow_version_id  PK",
          "graph_hash  UQ",
          "pattern",
          "state",
          "compat_range"
        ]
      },
      {
        "id": "m-pol",
        "name": "policy",
        "kind": "store",
        "row": 1,
        "col": 0,
        "attrs": [
          "policy_id  PK",
          "scope_level",
          "scope_ref",
          "bundle_hash",
          "effective_from"
        ]
      },
      {
        "id": "m-exe",
        "name": "execution",
        "kind": "store",
        "row": 1,
        "col": 1,
        "attrs": [
          "execution_id  PK",
          "project_id  FK",
          "workflow_version_id  FK",
          "status",
          "correlation_id"
        ]
      },
      {
        "id": "m-stp",
        "name": "step",
        "kind": "store",
        "row": 1,
        "col": 2,
        "attrs": [
          "step_id  PK",
          "execution_id  FK",
          "agent_version_id  FK",
          "attempt",
          "checkpoint_ref"
        ]
      },
      {
        "id": "m-tb",
        "name": "tool_binding",
        "kind": "store",
        "row": 1,
        "col": 3,
        "attrs": [
          "binding_id  PK",
          "tool_version_id",
          "agent_version_id  FK",
          "sensitivity",
          "credential_ref"
        ]
      },
      {
        "id": "m-mem",
        "name": "memory_item",
        "kind": "store",
        "row": 2,
        "col": 0,
        "attrs": [
          "memory_id  PK",
          "scope_type",
          "scope_ref",
          "embedding_ref",
          "expires_at"
        ]
      },
      {
        "id": "m-cost",
        "name": "cost_record",
        "kind": "store",
        "row": 2,
        "col": 1,
        "attrs": [
          "cost_id  PK",
          "execution_id  FK",
          "prompt_tokens",
          "completion_tokens",
          "amount_usd"
        ]
      },
      {
        "id": "m-tc",
        "name": "tool_call",
        "kind": "store",
        "row": 2,
        "col": 2,
        "attrs": [
          "tool_call_id  PK",
          "step_id  FK",
          "idempotency_key  UQ",
          "outcome",
          "duration_ms"
        ]
      },
      {
        "id": "m-apr",
        "name": "approval",
        "kind": "store",
        "row": 2,
        "col": 3,
        "attrs": [
          "approval_id  PK",
          "binding_id  FK",
          "step_id  FK",
          "decision",
          "decided_by"
        ]
      }
    ],
    "relations": [
      {
        "from": "m-ten",
        "to": "m-prj",
        "label": "1 : N",
        "from_side": "e",
        "to_side": "w"
      },
      {
        "from": "m-ten",
        "to": "m-pol",
        "label": "1 : N",
        "from_side": "s",
        "to_side": "n"
      },
      {
        "from": "m-prj",
        "to": "m-agv",
        "label": "1 : N",
        "from_side": "e",
        "to_side": "w"
      },
      {
        "from": "m-agv",
        "to": "m-wfv",
        "label": "N : M",
        "from_side": "e",
        "to_side": "w"
      },
      {
        "from": "m-prj",
        "to": "m-exe",
        "label": "1 : N",
        "from_side": "s",
        "to_side": "n"
      },
      {
        "from": "m-exe",
        "to": "m-stp",
        "label": "1 : N",
        "from_side": "e",
        "to_side": "w"
      },
      {
        "from": "m-agv",
        "to": "m-stp",
        "label": "1 : N",
        "from_side": "s",
        "to_side": "n"
      },
      {
        "from": "m-stp",
        "to": "m-tc",
        "label": "1 : N",
        "from_side": "s",
        "to_side": "n"
      },
      {
        "from": "m-exe",
        "to": "m-cost",
        "label": "1 : N",
        "from_side": "s",
        "to_side": "n"
      },
      {
        "from": "m-tb",
        "to": "m-apr",
        "label": "1 : N",
        "from_side": "s",
        "to_side": "n"
      },
      {
        "from": "m-pol",
        "to": "m-mem",
        "label": "governs",
        "from_side": "s",
        "to_side": "n",
        "kind": "optional"
      }
    ],
    "note": "tenant_id is the partition key on every execution-plane container. No entity is reachable without it.",
    "meta": {
      "v": "1.0",
      "owner": "Data Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "17-agent-execution-sequence",
    "title": "Execute an Agent — Critical Flow with Streaming",
    "layout": "sequence",
    "lifelines": [
      {
        "id": "s-user",
        "label": "Caller",
        "kind": "actor"
      },
      {
        "id": "s-apim",
        "label": "API Management",
        "kind": "integration",
        "icon": "azure_AzureAPIManagement (Web)"
      },
      {
        "id": "s-adm",
        "label": "Admission Service",
        "kind": "app"
      },
      {
        "id": "s-orch",
        "label": "Durable Orchestrator",
        "kind": "app",
        "icon": "azure_functions"
      },
      {
        "id": "s-work",
        "label": "Runtime Worker",
        "kind": "app",
        "icon": "azure_worker-container-app"
      },
      {
        "id": "s-gw",
        "label": "AI Gateway",
        "kind": "integration"
      },
      {
        "id": "s-tool",
        "label": "Tool Broker",
        "kind": "integration"
      },
      {
        "id": "s-cos",
        "label": "Execution Store",
        "kind": "store",
        "icon": "azure_azure-cosmos-db"
      }
    ],
    "messages": [
      {
        "from": "s-user",
        "to": "s-apim",
        "label": "POST /v1/executions",
        "kind": "call"
      },
      {
        "from": "s-apim",
        "to": "s-apim",
        "label": "verify token, scope",
        "kind": "self"
      },
      {
        "from": "s-apim",
        "to": "s-adm",
        "label": "submit run",
        "kind": "call"
      },
      {
        "from": "s-adm",
        "to": "s-adm",
        "label": "pin versions, evaluate policy",
        "kind": "self"
      },
      {
        "from": "s-adm",
        "to": "s-user",
        "label": "429 budget exhausted",
        "kind": "error"
      },
      {
        "from": "s-adm",
        "to": "s-orch",
        "label": "start orchestration",
        "kind": "call"
      },
      {
        "from": "s-orch",
        "to": "s-cos",
        "label": "checkpoint: admitted",
        "kind": "call"
      },
      {
        "from": "s-orch",
        "to": "s-work",
        "label": "dispatch step",
        "kind": "async"
      },
      {
        "from": "s-work",
        "to": "s-work",
        "label": "assemble context, guard input",
        "kind": "self"
      },
      {
        "from": "s-work",
        "to": "s-gw",
        "label": "chat completion, stream",
        "kind": "call"
      },
      {
        "from": "s-gw",
        "to": "s-user",
        "label": "token stream",
        "kind": "async"
      },
      {
        "from": "s-gw",
        "to": "s-work",
        "label": "tool call requested",
        "kind": "return"
      },
      {
        "from": "s-work",
        "to": "s-tool",
        "label": "invoke with idempotency key",
        "kind": "call"
      },
      {
        "from": "s-tool",
        "to": "s-work",
        "label": "tool result",
        "kind": "return"
      },
      {
        "from": "s-work",
        "to": "s-gw",
        "label": "continue with result",
        "kind": "call"
      },
      {
        "from": "s-gw",
        "to": "s-work",
        "label": "final answer",
        "kind": "return"
      },
      {
        "from": "s-work",
        "to": "s-work",
        "label": "guard output, enforce schema",
        "kind": "self"
      },
      {
        "from": "s-work",
        "to": "s-cos",
        "label": "checkpoint: completed",
        "kind": "call"
      },
      {
        "from": "s-orch",
        "to": "s-user",
        "label": "200 result and cost",
        "kind": "return"
      }
    ],
    "note": "Tokens stream from the gateway to the caller while the run is still open. The result is not final until the checkpoint commits.",
    "meta": {
      "v": "1.0",
      "owner": "Runtime Engineering",
      "date": "2026-08"
    }
  },
  {
    "id": "18-multi-agent-patterns",
    "title": "Multi-Agent Coordination — Six Patterns on One Runtime",
    "layout": "swimlane",
    "canvas": {
      "width": 1800
    },
    "laneHeaderWidth": 170,
    "stages": [
      "Trigger",
      "Decompose",
      "Delegate",
      "Execute",
      "Converge"
    ],
    "lanes": [
      {
        "title": "Supervisor and worker",
        "cells": [
          [
            {
              "id": "n1a",
              "label": "Single goal",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n1b",
              "label": "Supervisor splits",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n1c",
              "label": "Fan-out to workers",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "n1d",
              "label": "Isolated contexts",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n1e",
              "label": "Supervisor merges",
              "kind": "app"
            }
          ]
        ]
      },
      {
        "title": "Planner and executor",
        "cells": [
          [
            {
              "id": "n2a",
              "label": "Open task",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n2b",
              "label": "Plan as DAG",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "n2c",
              "label": "Steps to queue",
              "kind": "queue"
            }
          ],
          [
            {
              "id": "n2d",
              "label": "Executor per step",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n2e",
              "label": "Replan on failure",
              "kind": "decision"
            }
          ]
        ]
      },
      {
        "title": "Hierarchical teams",
        "cells": [
          [
            {
              "id": "n3a",
              "label": "Programme goal",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n3b",
              "label": "Team leads",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n3c",
              "label": "Depth limit 3",
              "kind": "security"
            }
          ],
          [
            {
              "id": "n3d",
              "label": "Team sub-runs",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n3e",
              "label": "Roll up by level",
              "kind": "app"
            }
          ]
        ]
      },
      {
        "title": "Peer collaboration",
        "cells": [
          [
            {
              "id": "n4a",
              "label": "Shared brief",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n4b",
              "label": "No fixed owner",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n4c",
              "label": "Message passing",
              "kind": "queue"
            }
          ],
          [
            {
              "id": "n4d",
              "label": "Shared scratchpad",
              "kind": "store"
            }
          ],
          [
            {
              "id": "n4e",
              "label": "Quorum or timeout",
              "kind": "decision"
            }
          ]
        ]
      },
      {
        "title": "Debate and critic",
        "cells": [
          [
            {
              "id": "n5a",
              "label": "Draft answer",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n5b",
              "label": "Critic prompt",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n5c",
              "label": "Round cap 3",
              "kind": "security"
            }
          ],
          [
            {
              "id": "n5d",
              "label": "Revise and rescore",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n5e",
              "label": "Best scored wins",
              "kind": "decision"
            }
          ]
        ]
      },
      {
        "title": "Specialist routing",
        "cells": [
          [
            {
              "id": "n6a",
              "label": "Ambiguous intent",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n6b",
              "label": "Capability match",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "n6c",
              "label": "Registry lookup",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n6d",
              "label": "One specialist",
              "kind": "app"
            }
          ],
          [
            {
              "id": "n6e",
              "label": "Return or reroute",
              "kind": "decision"
            }
          ]
        ]
      }
    ],
    "note": "All six run on the same orchestrator and the same worker image. The pattern is a workflow definition, not a different platform.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "19-durable-execution-and-replay",
    "title": "Durable Execution — Checkpoint, Failure, Recovery and Replay",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1780
    },
    "stages": [
      {
        "title": "Progress",
        "nodes": [
          {
            "id": "v-step",
            "label": "Step Completes",
            "kind": "app",
            "sub": "worker result"
          },
          {
            "id": "v-ckpt",
            "label": "Checkpoint Write",
            "kind": "store",
            "sub": "before ack"
          },
          {
            "id": "v-ack",
            "label": "Queue Ack",
            "kind": "queue",
            "sub": "lock released"
          }
        ]
      },
      {
        "title": "Failure",
        "nodes": [
          {
            "id": "v-proc",
            "label": "Process Crash",
            "kind": "risk",
            "sub": "pod evicted"
          },
          {
            "id": "v-node",
            "label": "Node or Zone Loss",
            "kind": "risk",
            "sub": "AZ outage"
          },
          {
            "id": "v-prov",
            "label": "Provider Outage",
            "kind": "risk",
            "sub": "model 5xx"
          }
        ]
      },
      {
        "title": "Detect",
        "nodes": [
          {
            "id": "v-lock",
            "label": "Lock Expiry",
            "kind": "integration",
            "sub": "no renewal"
          },
          {
            "id": "v-hb",
            "label": "Heartbeat Miss",
            "kind": "platform",
            "sub": "orchestrator",
            "icon": "fa5_heartbeat"
          },
          {
            "id": "v-class",
            "label": "Classify Failure",
            "kind": "decision",
            "sub": "eight classes"
          }
        ]
      },
      {
        "title": "Recover",
        "nodes": [
          {
            "id": "v-redel",
            "label": "Redeliver Message",
            "kind": "queue",
            "sub": "same session"
          },
          {
            "id": "v-idem",
            "label": "Idempotency Guard",
            "kind": "security",
            "sub": "step key seen"
          },
          {
            "id": "v-back",
            "label": "Scheduled Retry",
            "kind": "queue",
            "sub": "backoff + jitter"
          },
          {
            "id": "v-fail",
            "label": "Provider Failover",
            "kind": "integration",
            "sub": "next route"
          }
        ]
      },
      {
        "title": "Resume",
        "nodes": [
          {
            "id": "v-load",
            "label": "Load Checkpoint",
            "kind": "store",
            "sub": "last committed"
          },
          {
            "id": "v-pin",
            "label": "Pinned Definition",
            "kind": "security",
            "sub": "original hash",
            "icon": "fa5_thumbtack"
          },
          {
            "id": "v-cont",
            "label": "Continue Step",
            "kind": "app",
            "sub": "no re-execution"
          }
        ]
      },
      {
        "title": "Exhausted",
        "nodes": [
          {
            "id": "v-dlq",
            "label": "Dead Letter",
            "kind": "queue",
            "sub": "after max attempts",
            "icon": "azure_AzureServiceBusQueue (Integration)"
          },
          {
            "id": "v-comp",
            "label": "Compensate",
            "kind": "app",
            "sub": "reverse effects"
          },
          {
            "id": "v-esc",
            "label": "Human Escalation",
            "kind": "actor",
            "sub": "with full trace"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "v-class",
        "to": "v-back",
        "label": "transient"
      },
      {
        "from": "v-class",
        "to": "v-fail",
        "label": "provider"
      },
      {
        "from": "v-class",
        "to": "v-dlq",
        "label": "permanent",
        "kind": "error",
        "route": "gutter"
      },
      {
        "from": "v-cont",
        "to": "v-step",
        "label": "run continues",
        "route": "gutter"
      },
      {
        "from": "v-comp",
        "to": "v-esc",
        "label": "on partial reversal",
        "kind": "error"
      }
    ],
    "note": "The checkpoint is written before the queue acknowledgement, so a crash duplicates work rather than losing it.",
    "meta": {
      "v": "1.0",
      "owner": "Runtime Engineering",
      "date": "2026-08"
    }
  },
  {
    "id": "20-human-in-the-loop",
    "title": "Human-in-the-Loop — Approving a Sensitive Action",
    "layout": "sequence",
    "lifelines": [
      {
        "id": "a-work",
        "label": "Runtime Worker",
        "kind": "app",
        "icon": "azure_worker-container-app"
      },
      {
        "id": "a-pol",
        "label": "Policy Engine",
        "kind": "security",
        "icon": "opa"
      },
      {
        "id": "a-appr",
        "label": "Approval Service",
        "kind": "app",
        "icon": "fa5_user_check"
      },
      {
        "id": "a-orch",
        "label": "Durable Orchestrator",
        "kind": "app",
        "icon": "azure_functions"
      },
      {
        "id": "a-graph",
        "label": "Teams via Graph",
        "kind": "external",
        "icon": "teams"
      },
      {
        "id": "a-human",
        "label": "Approver",
        "kind": "actor"
      },
      {
        "id": "a-aud",
        "label": "Audit Ledger",
        "kind": "store",
        "icon": "azure_blobstorage"
      }
    ],
    "messages": [
      {
        "from": "a-work",
        "to": "a-pol",
        "label": "may I call this tool",
        "kind": "call"
      },
      {
        "from": "a-pol",
        "to": "a-work",
        "label": "approval required",
        "kind": "return"
      },
      {
        "from": "a-work",
        "to": "a-appr",
        "label": "raise request with evidence",
        "kind": "call"
      },
      {
        "from": "a-appr",
        "to": "a-aud",
        "label": "record raised",
        "kind": "async"
      },
      {
        "from": "a-appr",
        "to": "a-orch",
        "label": "suspend, await event",
        "kind": "call"
      },
      {
        "from": "a-appr",
        "to": "a-graph",
        "label": "adaptive card to queue",
        "kind": "async"
      },
      {
        "from": "a-graph",
        "to": "a-human",
        "label": "notify approver role",
        "kind": "async"
      },
      {
        "from": "a-human",
        "to": "a-appr",
        "label": "approve or reject",
        "kind": "call"
      },
      {
        "from": "a-appr",
        "to": "a-appr",
        "label": "verify role, not requester",
        "kind": "self"
      },
      {
        "from": "a-appr",
        "to": "a-aud",
        "label": "record decision and actor",
        "kind": "async"
      },
      {
        "from": "a-appr",
        "to": "a-orch",
        "label": "raise external event",
        "kind": "call"
      },
      {
        "from": "a-orch",
        "to": "a-work",
        "label": "resume from checkpoint",
        "kind": "call"
      },
      {
        "from": "a-appr",
        "to": "a-orch",
        "label": "SLA expired, auto-reject",
        "kind": "error"
      },
      {
        "from": "a-orch",
        "to": "a-aud",
        "label": "terminal state",
        "kind": "async"
      }
    ],
    "note": "The approver cannot be the requester. An unanswered request auto-rejects at the configured SLA and the run ends cleanly.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "21-guardrail-chain",
    "title": "Safety Guardrails — Detect, Decide, Act, Record by Threat Class",
    "layout": "swimlane",
    "canvas": {
      "width": 1720
    },
    "laneHeaderWidth": 180,
    "stages": [
      "Detect",
      "Decide",
      "Act",
      "Record"
    ],
    "lanes": [
      {
        "title": "Prompt injection",
        "cells": [
          [
            {
              "id": "k1a",
              "label": "Prompt Shields",
              "kind": "security",
              "icon": "azure_content-safety"
            }
          ],
          [
            {
              "id": "k1b",
              "label": "Severity threshold",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "k1c",
              "label": "Strip and refuse",
              "kind": "app"
            }
          ],
          [
            {
              "id": "k1d",
              "label": "Guardrail event",
              "kind": "queue"
            }
          ]
        ]
      },
      {
        "title": "Sensitive data egress",
        "cells": [
          [
            {
              "id": "k2a",
              "label": "PII and label scan",
              "kind": "security"
            }
          ],
          [
            {
              "id": "k2b",
              "label": "Classification rule",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "k2c",
              "label": "Redact or reroute",
              "kind": "app"
            }
          ],
          [
            {
              "id": "k2d",
              "label": "Audit with hash",
              "kind": "store",
              "icon": "azure_blobstorage"
            }
          ]
        ]
      },
      {
        "title": "Unsafe tool use",
        "cells": [
          [
            {
              "id": "k3a",
              "label": "Argument inspection",
              "kind": "security"
            }
          ],
          [
            {
              "id": "k3b",
              "label": "Permission and blast",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "k3c",
              "label": "Block or escalate",
              "kind": "app"
            }
          ],
          [
            {
              "id": "k3d",
              "label": "Audit ledger",
              "kind": "store",
              "icon": "azure_blobstorage"
            }
          ]
        ]
      },
      {
        "title": "Ungrounded output",
        "cells": [
          [
            {
              "id": "k4a",
              "label": "Groundedness check",
              "kind": "security"
            }
          ],
          [
            {
              "id": "k4b",
              "label": "Citation coverage",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "k4c",
              "label": "Retry then caveat",
              "kind": "app"
            }
          ],
          [
            {
              "id": "k4d",
              "label": "Quality metric",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Untrusted content",
        "cells": [
          [
            {
              "id": "k5a",
              "label": "Source trust tier",
              "kind": "security"
            }
          ],
          [
            {
              "id": "k5b",
              "label": "Fence or drop",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "k5c",
              "label": "No tool authority",
              "kind": "app"
            }
          ],
          [
            {
              "id": "k5d",
              "label": "Provenance tag",
              "kind": "store"
            }
          ]
        ]
      },
      {
        "title": "Harmful content",
        "cells": [
          [
            {
              "id": "k6a",
              "label": "Content Safety",
              "kind": "security",
              "icon": "azure_content-safety"
            }
          ],
          [
            {
              "id": "k6b",
              "label": "Category severity",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "k6c",
              "label": "Refuse and log",
              "kind": "app"
            }
          ],
          [
            {
              "id": "k6d",
              "label": "Sentinel signal",
              "kind": "security",
              "icon": "azure_sentinel"
            }
          ]
        ]
      }
    ],
    "note": "Content retrieved by a tool never gains the caller's authority. Fencing happens before the model sees it, not after.",
    "meta": {
      "v": "1.0",
      "owner": "Security Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "22-policy-and-budget",
    "title": "Policy and Budget Enforcement — Scope against Decision Point",
    "layout": "grid",
    "canvas": {
      "width": 1800
    },
    "laneHeaderWidth": 175,
    "columns": [
      "At admission",
      "Before model call",
      "Before tool call",
      "Before response",
      "At completion"
    ],
    "rows": [
      {
        "title": "Organisation",
        "cells": [
          [
            {
              "id": "b1a",
              "label": "Allowed regions",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b1b",
              "label": "Approved providers",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b1c",
              "label": "Banned tool classes",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b1d",
              "label": "Content restrictions",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b1e",
              "label": "Retention policy",
              "kind": "platform"
            }
          ]
        ]
      },
      {
        "title": "Project",
        "cells": [
          [
            {
              "id": "b2a",
              "label": "Monthly budget",
              "kind": "decision",
              "icon": "azure_cost-budgets"
            }
          ],
          [
            {
              "id": "b2b",
              "label": "Model allow-list",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b2c",
              "label": "Tool allow-list",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b2d",
              "label": "Capture opt-in",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "b2e",
              "label": "Cost attribution",
              "kind": "store",
              "icon": "azure_cost-analysis"
            }
          ]
        ]
      },
      {
        "title": "Agent",
        "cells": [
          [
            {
              "id": "b3a",
              "label": "Run concurrency",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "b3b",
              "label": "Token ceiling",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b3c",
              "label": "Granted scopes",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b3d",
              "label": "Output schema",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b3e",
              "label": "Per-agent spend",
              "kind": "store",
              "icon": "azure_cost-budgets"
            }
          ]
        ]
      },
      {
        "title": "Workflow",
        "cells": [
          [
            {
              "id": "b4a",
              "label": "Max duration",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "b4b",
              "label": "Recursion depth",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b4c",
              "label": "Approval steps",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "b4d",
              "label": "Compensation rule",
              "kind": "app"
            }
          ],
          [
            {
              "id": "b4e",
              "label": "Run cost record",
              "kind": "store"
            }
          ]
        ]
      },
      {
        "title": "Data classification",
        "cells": [
          [
            {
              "id": "b5a",
              "label": "Residency pinning",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b5b",
              "label": "Route constraint",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b5c",
              "label": "Egress denial",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b5d",
              "label": "Redaction rule",
              "kind": "security"
            }
          ],
          [
            {
              "id": "b5e",
              "label": "Deletion trigger",
              "kind": "platform"
            }
          ]
        ]
      }
    ],
    "note": "One Rego bundle, five evaluation points. Decisions are local to the worker, so a control-plane outage cannot fail them open.",
    "meta": {
      "v": "1.0",
      "owner": "Governance",
      "date": "2026-08"
    }
  },
  {
    "id": "23-deployment-topology",
    "title": "Deployment Topology — Regions, Zones and Failure Domains",
    "layout": "nested",
    "canvas": {
      "width": 1780
    },
    "boxes": [
      {
        "title": "Global · anycast and tenant-wide services",
        "kind": "cloud",
        "icon": "azure",
        "dir": "row",
        "children": [
          {
            "title": "Edge and identity",
            "kind": "plain",
            "nodes": [
              {
                "id": "w-fd",
                "label": "Front Door Premium",
                "kind": "integration",
                "sub": "WAF · health probe",
                "icon": "azure_AzureFrontDoor (Networking)"
              },
              {
                "id": "w-entra",
                "label": "Microsoft Entra ID",
                "kind": "security",
                "sub": "global tenant",
                "icon": "azure_aad"
              },
              {
                "id": "w-dns",
                "label": "Private DNS Zones",
                "kind": "integration",
                "sub": "hub linked",
                "icon": "azure_private-link"
              },
              {
                "id": "w-acr",
                "label": "Container Registry",
                "kind": "store",
                "sub": "geo-replicated",
                "icon": "azure_AzureContainerRegistry (Containers)"
              }
            ]
          }
        ]
      },
      {
        "title": "Primary region · West Europe · active",
        "kind": "cloud",
        "icon": "azure",
        "dir": "row",
        "children": [
          {
            "title": "Zones 1-3 · compute",
            "kind": "boundary",
            "nodes": [
              {
                "id": "w-apim1",
                "label": "API Management",
                "kind": "integration",
                "sub": "Premium · 3 units",
                "icon": "azure_AzureAPIManagement (Web)"
              },
              {
                "id": "w-aks1",
                "label": "AKS Control Plane",
                "kind": "app",
                "sub": "3 AZ node pools",
                "icon": "azure_kubernetes-services"
              },
              {
                "id": "w-aca1",
                "label": "Container Apps Env",
                "kind": "app",
                "sub": "workload profiles",
                "icon": "azure_container-apps-environments"
              },
              {
                "id": "w-gpu1",
                "label": "GPU Node Pool",
                "kind": "app",
                "sub": "KAITO · spot mix",
                "icon": "azure_kubernetes-services"
              }
            ]
          },
          {
            "title": "Zones 1-3 · state",
            "kind": "boundary",
            "nodes": [
              {
                "id": "w-cos1",
                "label": "Cosmos DB",
                "kind": "store",
                "sub": "single write region",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "w-sql1",
                "label": "Azure SQL",
                "kind": "store",
                "sub": "Business Critical",
                "icon": "azure_azure-sql"
              },
              {
                "id": "w-sb1",
                "label": "Service Bus",
                "kind": "queue",
                "sub": "Premium · ZR",
                "icon": "azure_azure-service-bus"
              },
              {
                "id": "w-redis1",
                "label": "Managed Redis",
                "kind": "store",
                "sub": "zone redundant",
                "icon": "azure_redis"
              },
              {
                "id": "w-adls1",
                "label": "ADLS Gen2",
                "kind": "store",
                "sub": "ZRS",
                "icon": "azure_datalake"
              }
            ]
          }
        ]
      },
      {
        "title": "Secondary region · North Europe · warm standby",
        "kind": "cloud",
        "icon": "azure",
        "dir": "row",
        "children": [
          {
            "title": "Control plane standby",
            "kind": "boundary",
            "nodes": [
              {
                "id": "w-apim2",
                "label": "API Management",
                "kind": "integration",
                "sub": "multi-region unit",
                "icon": "azure_AzureAPIManagement (Web)"
              },
              {
                "id": "w-aks2",
                "label": "AKS Standby",
                "kind": "app",
                "sub": "min replicas",
                "icon": "azure_kubernetes-services"
              },
              {
                "id": "w-sql2",
                "label": "SQL Geo-Replica",
                "kind": "store",
                "sub": "readable secondary",
                "icon": "azure_azure-sql"
              }
            ]
          },
          {
            "title": "Execution and data standby",
            "kind": "boundary",
            "nodes": [
              {
                "id": "w-cos2",
                "label": "Cosmos Read Region",
                "kind": "store",
                "sub": "failover priority 2",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "w-adls2",
                "label": "ADLS RA-GRS",
                "kind": "store",
                "sub": "read access",
                "icon": "azure_datalake"
              },
              {
                "id": "w-aca2",
                "label": "Container Apps Env",
                "kind": "app",
                "sub": "scaled to zero",
                "icon": "azure_container-apps-environments"
              }
            ]
          }
        ]
      }
    ],
    "outside": [
      {
        "id": "w-bast",
        "label": "Bastion and Jump Box",
        "kind": "security",
        "sub": "no public SSH",
        "icon": "azure_bastions"
      },
      {
        "id": "w-fw",
        "label": "Azure Firewall Premium",
        "kind": "security",
        "sub": "egress FQDN rules",
        "icon": "azure_AzureFirewall (Networking)"
      },
      {
        "id": "w-mon",
        "label": "Azure Monitor",
        "kind": "platform",
        "sub": "workspace per region",
        "icon": "azure_monitor"
      }
    ],
    "edges": [
      {
        "from": "w-fd",
        "to": "w-apim1",
        "label": "primary origin"
      },
      {
        "from": "w-fd",
        "to": "w-apim2",
        "label": "on failure",
        "kind": "error",
        "route": "gutter"
      },
      {
        "from": "w-cos1",
        "to": "w-cos2",
        "label": "replication",
        "kind": "async"
      },
      {
        "from": "w-sql1",
        "to": "w-sql2",
        "label": "auto-failover group",
        "kind": "async"
      },
      {
        "from": "w-aca1",
        "to": "w-fw",
        "label": "controlled egress"
      },
      {
        "from": "w-adls1",
        "to": "w-adls2",
        "label": "RA-GRS",
        "kind": "async"
      }
    ],
    "note": "Executions are region-pinned for residency. Failover replays from the last checkpoint in the surviving region; it does not migrate a live run.",
    "meta": {
      "v": "1.0",
      "owner": "Platform Engineering",
      "date": "2026-08"
    }
  },
  {
    "id": "24-cicd-and-promotion",
    "title": "CI/CD and Environment Promotion",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1800
    },
    "stages": [
      {
        "title": "Source",
        "nodes": [
          {
            "id": "cd-git",
            "label": "GitHub Repository",
            "kind": "store",
            "sub": "platform + agents",
            "icon": "github"
          },
          {
            "id": "cd-pr",
            "label": "Pull Request",
            "kind": "decision",
            "sub": "two reviewers",
            "icon": "github"
          },
          {
            "id": "cd-iac",
            "label": "Bicep Modules",
            "kind": "app",
            "sub": "infrastructure",
            "icon": "azure_templates"
          }
        ]
      },
      {
        "title": "Build",
        "nodes": [
          {
            "id": "cd-img",
            "label": "Container Build",
            "kind": "app",
            "sub": "reproducible"
          },
          {
            "id": "cd-sbom",
            "label": "SBOM and Scan",
            "kind": "security",
            "sub": "Defender · Trivy"
          },
          {
            "id": "cd-sign",
            "label": "Image Signing",
            "kind": "security",
            "sub": "Notation · KV key",
            "icon": "azure_AzureKeyVault (Security)"
          }
        ]
      },
      {
        "title": "Verify",
        "nodes": [
          {
            "id": "cd-unit",
            "label": "Unit and Contract",
            "kind": "app",
            "sub": "schema fixtures"
          },
          {
            "id": "cd-polt",
            "label": "Policy Simulation",
            "kind": "security",
            "sub": "Rego unit tests",
            "icon": "opa"
          },
          {
            "id": "cd-eval",
            "label": "Golden Evaluation",
            "kind": "app",
            "sub": "regression gate",
            "icon": "azure_azure-machine-learning"
          },
          {
            "id": "cd-red",
            "label": "Red Team Suite",
            "kind": "security",
            "sub": "injection probes"
          }
        ]
      },
      {
        "title": "Gate",
        "nodes": [
          {
            "id": "cd-dev",
            "label": "Development",
            "kind": "app",
            "sub": "auto on merge",
            "icon": "fa5_layer_group"
          },
          {
            "id": "cd-test",
            "label": "Test",
            "kind": "app",
            "sub": "eval score gate",
            "icon": "fa5_layer_group"
          },
          {
            "id": "cd-stg",
            "label": "Staging",
            "kind": "app",
            "sub": "load and soak",
            "icon": "fa5_layer_group"
          },
          {
            "id": "cd-apr",
            "label": "Change Approval",
            "kind": "decision",
            "sub": "owner + security"
          }
        ]
      },
      {
        "title": "Deploy",
        "nodes": [
          {
            "id": "cd-what",
            "label": "What-If Plan",
            "kind": "app",
            "sub": "drift check",
            "icon": "azure_templates"
          },
          {
            "id": "cd-bg",
            "label": "Blue/Green Revision",
            "kind": "app",
            "sub": "Container Apps",
            "icon": "azure_container-apps-environments"
          },
          {
            "id": "cd-can",
            "label": "Canary Weight",
            "kind": "decision",
            "sub": "5 to 50 to 100"
          }
        ]
      },
      {
        "title": "Watch",
        "nodes": [
          {
            "id": "cd-slo",
            "label": "SLO Watch",
            "kind": "platform",
            "sub": "24 h window"
          },
          {
            "id": "cd-qual",
            "label": "Online Quality",
            "kind": "platform",
            "sub": "success · escalation"
          },
          {
            "id": "cd-rb",
            "label": "Auto Rollback",
            "kind": "app",
            "sub": "prior revision"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "cd-eval",
        "to": "cd-test",
        "label": "score gate"
      },
      {
        "from": "cd-slo",
        "to": "cd-rb",
        "label": "burn rate breach",
        "kind": "error"
      },
      {
        "from": "cd-qual",
        "to": "cd-rb",
        "label": "quality regression",
        "kind": "error"
      },
      {
        "from": "cd-can",
        "to": "cd-slo",
        "label": "each step"
      }
    ],
    "note": "Agent definitions travel the same pipeline as code. A prompt change is a versioned deployment, not a console edit.",
    "meta": {
      "v": "1.0",
      "owner": "Platform Engineering",
      "date": "2026-08"
    }
  },
  {
    "id": "25-observability-and-tracing",
    "title": "Observability — Signal against Pipeline Stage",
    "layout": "grid",
    "canvas": {
      "width": 1800
    },
    "laneHeaderWidth": 175,
    "columns": [
      "Emit",
      "Collect",
      "Store",
      "Consume",
      "Act"
    ],
    "rows": [
      {
        "title": "Execution traces",
        "cells": [
          [
            {
              "id": "o1a",
              "label": "OTel GenAI spans",
              "kind": "app"
            }
          ],
          [
            {
              "id": "o1b",
              "label": "OTel Collector",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "o1c",
              "label": "Application Insights",
              "kind": "store",
              "icon": "azure_application-insights"
            }
          ],
          [
            {
              "id": "o1d",
              "label": "Execution graph",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "o1e",
              "label": "Failure analysis",
              "kind": "app"
            }
          ]
        ]
      },
      {
        "title": "Metrics and SLO",
        "cells": [
          [
            {
              "id": "o2a",
              "label": "Runtime counters",
              "kind": "app"
            }
          ],
          [
            {
              "id": "o2b",
              "label": "Managed Prometheus",
              "kind": "integration",
              "icon": "prometheus"
            }
          ],
          [
            {
              "id": "o2c",
              "label": "Monitor workspace",
              "kind": "store",
              "icon": "azure_monitor"
            }
          ],
          [
            {
              "id": "o2d",
              "label": "Managed Grafana",
              "kind": "platform",
              "icon": "azure_azure-managed-grafana"
            }
          ],
          [
            {
              "id": "o2e",
              "label": "Page on burn rate",
              "kind": "security"
            }
          ]
        ]
      },
      {
        "title": "Logs",
        "cells": [
          [
            {
              "id": "o3a",
              "label": "Structured JSON",
              "kind": "app"
            }
          ],
          [
            {
              "id": "o3b",
              "label": "Container insights",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "o3c",
              "label": "Log Analytics",
              "kind": "store",
              "icon": "azure_log-analytics-workspaces"
            }
          ],
          [
            {
              "id": "o3d",
              "label": "KQL incident search",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "o3e",
              "label": "Runbook link",
              "kind": "app"
            }
          ]
        ]
      },
      {
        "title": "Token and cost",
        "cells": [
          [
            {
              "id": "o4a",
              "label": "Gateway metric",
              "kind": "integration",
              "icon": "azure_ai-gateway"
            }
          ],
          [
            {
              "id": "o4b",
              "label": "Event Hubs",
              "kind": "queue",
              "icon": "azure_event-hubs"
            }
          ],
          [
            {
              "id": "o4c",
              "label": "Data Explorer",
              "kind": "store",
              "icon": "azure_azure-data-explorer-clusters"
            }
          ],
          [
            {
              "id": "o4d",
              "label": "Cost breakdown",
              "kind": "platform",
              "icon": "azure_cost-analysis"
            }
          ],
          [
            {
              "id": "o4e",
              "label": "Budget alert",
              "kind": "security",
              "icon": "azure_cost-budgets"
            }
          ]
        ]
      },
      {
        "title": "Guardrail decisions",
        "cells": [
          [
            {
              "id": "o5a",
              "label": "Decision event",
              "kind": "security"
            }
          ],
          [
            {
              "id": "o5b",
              "label": "Event Grid",
              "kind": "queue",
              "icon": "azure_event-grid-topics"
            }
          ],
          [
            {
              "id": "o5c",
              "label": "Audit ledger",
              "kind": "store",
              "icon": "azure_blobstorage"
            }
          ],
          [
            {
              "id": "o5d",
              "label": "Violation report",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "o5e",
              "label": "Sentinel rule",
              "kind": "security",
              "icon": "azure_sentinel"
            }
          ]
        ]
      },
      {
        "title": "Quality signals",
        "cells": [
          [
            {
              "id": "o6a",
              "label": "Judge and feedback",
              "kind": "app"
            }
          ],
          [
            {
              "id": "o6b",
              "label": "Evaluation runner",
              "kind": "integration",
              "icon": "azure_azure-machine-learning"
            }
          ],
          [
            {
              "id": "o6c",
              "label": "Eval results store",
              "kind": "store",
              "icon": "azure_azure-data-explorer-clusters"
            }
          ],
          [
            {
              "id": "o6d",
              "label": "Agent scorecard",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "o6e",
              "label": "Block promotion",
              "kind": "decision"
            }
          ]
        ]
      }
    ],
    "note": "Execution id, workflow id, agent id and correlation id are on every row, so one identifier joins a trace to its cost and its guardrail decisions.",
    "meta": {
      "v": "1.0",
      "owner": "SRE",
      "date": "2026-08"
    }
  },
  {
    "id": "26-cost-management",
    "title": "Cost Management — Meter, Attribute, Enforce, Optimise",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1740
    },
    "stages": [
      {
        "title": "Meter",
        "nodes": [
          {
            "id": "cm-tok",
            "label": "Token Counting",
            "kind": "integration",
            "sub": "gateway policy"
          },
          {
            "id": "cm-tool",
            "label": "Tool Call Units",
            "kind": "integration",
            "sub": "priced per API"
          },
          {
            "id": "cm-infra",
            "label": "Infrastructure Cost",
            "kind": "platform",
            "sub": "Cost Management",
            "icon": "azure_cost-management"
          }
        ]
      },
      {
        "title": "Attribute",
        "nodes": [
          {
            "id": "cm-tag",
            "label": "Execution Tagging",
            "kind": "app",
            "sub": "tenant · project"
          },
          {
            "id": "cm-roll",
            "label": "Rollup Job",
            "kind": "app",
            "sub": "hourly · ADX"
          },
          {
            "id": "cm-alloc",
            "label": "Shared Cost Split",
            "kind": "app",
            "sub": "by token share"
          }
        ]
      },
      {
        "title": "Enforce",
        "nodes": [
          {
            "id": "cm-pre",
            "label": "Pre-Call Estimate",
            "kind": "decision",
            "sub": "reserve tokens"
          },
          {
            "id": "cm-soft",
            "label": "Soft Limit",
            "kind": "security",
            "sub": "warn at 80 percent",
            "icon": "azure_cost-budgets"
          },
          {
            "id": "cm-hard",
            "label": "Hard Limit",
            "kind": "security",
            "sub": "block at ceiling",
            "icon": "azure_cost-budgets"
          }
        ]
      },
      {
        "title": "Optimise",
        "nodes": [
          {
            "id": "cm-route",
            "label": "Cost-Aware Routing",
            "kind": "decision",
            "sub": "cheapest passing"
          },
          {
            "id": "cm-cache",
            "label": "Cache Hit Rate",
            "kind": "store",
            "sub": "semantic + exact",
            "icon": "azure_redis"
          },
          {
            "id": "cm-ptu",
            "label": "PTU Utilisation",
            "kind": "platform",
            "sub": "reserve vs burst"
          },
          {
            "id": "cm-comp",
            "label": "Context Compression",
            "kind": "app",
            "sub": "tokens per run"
          }
        ]
      },
      {
        "title": "Report",
        "nodes": [
          {
            "id": "cm-dash",
            "label": "Cost Dashboard",
            "kind": "platform",
            "sub": "per tenant · agent",
            "icon": "azure_cost-analysis"
          },
          {
            "id": "cm-fc",
            "label": "Forecast",
            "kind": "app",
            "sub": "run-rate to month end",
            "icon": "fa5_chart_line"
          },
          {
            "id": "cm-charge",
            "label": "Chargeback Export",
            "kind": "store",
            "sub": "monthly · CSV",
            "icon": "azure_cost-management"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "cm-hard",
        "to": "cm-route",
        "label": "degrade first",
        "kind": "error"
      },
      {
        "from": "cm-fc",
        "to": "cm-soft",
        "label": "raise threshold",
        "route": "gutter"
      },
      {
        "from": "cm-cache",
        "to": "cm-tok",
        "label": "avoided tokens",
        "route": "gutter"
      }
    ],
    "note": "A breached budget degrades the route before it blocks the run. Blocking is the last step, not the first.",
    "meta": {
      "v": "1.0",
      "owner": "FinOps and Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "27-evaluation-quality-loop",
    "title": "Evaluation and Quality — The Loop That Closes",
    "layout": "cycle",
    "centre": {
      "label": "Agent Quality",
      "sub": "target 92 percent"
    },
    "nodes": [
      {
        "id": "q1",
        "label": "Capture",
        "kind": "store",
        "sub": "production traces"
      },
      {
        "id": "q2",
        "label": "Curate",
        "kind": "app",
        "sub": "golden datasets"
      },
      {
        "id": "q3",
        "label": "Evaluate Offline",
        "kind": "app",
        "sub": "assertions + judge",
        "icon": "azure_azure-machine-learning"
      },
      {
        "id": "q4",
        "label": "Gate",
        "kind": "decision",
        "sub": "promotion score"
      },
      {
        "id": "q5",
        "label": "Release Canary",
        "kind": "app",
        "sub": "5 percent traffic"
      },
      {
        "id": "q6",
        "label": "Evaluate Online",
        "kind": "platform",
        "sub": "live scoring"
      },
      {
        "id": "q7",
        "label": "Improve",
        "kind": "app",
        "sub": "prompt · model · tool"
      }
    ],
    "ringLabels": [
      "failed and escalated runs",
      "labelled cases",
      "scores per metric",
      "pass or block",
      "canary cohort",
      "live signal",
      "new candidate version"
    ],
    "rx": 460,
    "ry": 230,
    "note": "Metrics tracked each turn: task success, groundedness, tool-call correctness, latency, tokens, cost, failure and human escalation rate.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "28-security-zones",
    "title": "Security Architecture — Trust Zones and What Crosses Them",
    "layout": "zones",
    "canvas": {
      "width": 1740
    },
    "zones": [
      {
        "title": "Untrusted · internet",
        "kind": "trust",
        "nodes": [
          {
            "id": "sz-user",
            "label": "Business User",
            "kind": "actor"
          },
          {
            "id": "sz-part",
            "label": "Partner Webhook",
            "kind": "external",
            "sub": "HMAC signed"
          },
          {
            "id": "sz-inj",
            "label": "Injected Content",
            "kind": "risk",
            "sub": "in retrieved page"
          },
          {
            "id": "sz-att",
            "label": "Credential Attack",
            "kind": "risk",
            "sub": "token replay"
          }
        ]
      },
      {
        "title": "Perimeter · edge",
        "kind": "trust",
        "nodes": [
          {
            "id": "sz-ddos",
            "label": "DDoS Protection",
            "kind": "security",
            "sub": "network tier",
            "icon": "azure_ddos-protection-plans"
          },
          {
            "id": "sz-waf",
            "label": "Front Door + WAF",
            "kind": "security",
            "sub": "OWASP ruleset",
            "icon": "azure_AzureFrontDoor (Networking)"
          },
          {
            "id": "sz-apim",
            "label": "API Management",
            "kind": "integration",
            "sub": "OIDC · rate limit",
            "icon": "azure_AzureAPIManagement (Web)"
          }
        ]
      },
      {
        "title": "Control plane · private",
        "kind": "trust",
        "nodes": [
          {
            "id": "sz-reg",
            "label": "Registry API",
            "kind": "app",
            "sub": "mTLS · workload id"
          },
          {
            "id": "sz-pol",
            "label": "Policy Service",
            "kind": "security",
            "sub": "signs bundles",
            "icon": "opa"
          },
          {
            "id": "sz-cred",
            "label": "Credential Broker",
            "kind": "security",
            "sub": "no secret transit",
            "icon": "azure_AzureKeyVault (Security)"
          }
        ]
      },
      {
        "title": "Execution plane · private, no default egress",
        "kind": "trust",
        "nodes": [
          {
            "id": "sz-work",
            "label": "Runtime Workers",
            "kind": "app",
            "sub": "per-agent identity",
            "icon": "azure_worker-container-app"
          },
          {
            "id": "sz-tool",
            "label": "Tool Executor",
            "kind": "app",
            "sub": "scoped token only"
          },
          {
            "id": "sz-sbx",
            "label": "Session Sandbox",
            "kind": "platform",
            "sub": "Hyper-V · no network",
            "icon": "azure_azure-enclaves"
          },
          {
            "id": "sz-fw",
            "label": "Azure Firewall",
            "kind": "security",
            "sub": "FQDN allow-list",
            "icon": "azure_AzureFirewall (Networking)"
          }
        ]
      },
      {
        "title": "Data · restricted",
        "kind": "trust",
        "nodes": [
          {
            "id": "sz-cos",
            "label": "Execution Store",
            "kind": "store",
            "sub": "CMK · private link",
            "icon": "azure_azure-cosmos-db"
          },
          {
            "id": "sz-sql",
            "label": "Definition Store",
            "kind": "store",
            "sub": "CMK · row security",
            "icon": "azure_azure-sql"
          },
          {
            "id": "sz-kv",
            "label": "Key Vault HSM",
            "kind": "security",
            "sub": "90 day rotation",
            "icon": "azure_AzureKeyVault (Security)"
          },
          {
            "id": "sz-aud",
            "label": "Audit Ledger",
            "kind": "store",
            "sub": "WORM · 7 years",
            "icon": "azure_blobstorage"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "sz-user",
        "to": "sz-waf",
        "label": "HTTPS 443"
      },
      {
        "from": "sz-part",
        "to": "sz-apim",
        "label": "signed webhook"
      },
      {
        "from": "sz-att",
        "to": "sz-apim",
        "label": "rejected at edge",
        "kind": "error"
      },
      {
        "from": "sz-apim",
        "to": "sz-reg",
        "label": "mTLS + JWT"
      },
      {
        "from": "sz-apim",
        "to": "sz-work",
        "label": "mTLS + run token"
      },
      {
        "from": "sz-inj",
        "to": "sz-work",
        "label": "fenced",
        "kind": "error"
      },
      {
        "from": "sz-cred",
        "to": "sz-tool",
        "label": "15 min token"
      },
      {
        "from": "sz-work",
        "to": "sz-fw",
        "label": "egress inspected"
      },
      {
        "from": "sz-work",
        "to": "sz-cos",
        "label": "private endpoint"
      },
      {
        "from": "sz-pol",
        "to": "sz-kv",
        "label": "key",
        "route": "gutter"
      },
      {
        "from": "sz-tool",
        "to": "sz-aud",
        "label": "logged",
        "kind": "async"
      }
    ],
    "note": "An agent never inherits its caller's permissions. It carries its own identity, and every zone crossing is authenticated and logged.",
    "meta": {
      "v": "1.0",
      "owner": "Security Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "29-identity-and-delegation",
    "title": "Identity and Delegation — From User Sign-In to Tool Credential",
    "layout": "sequence",
    "lifelines": [
      {
        "id": "id-user",
        "label": "User",
        "kind": "actor"
      },
      {
        "id": "id-apim",
        "label": "API Management",
        "kind": "integration",
        "icon": "azure_AzureAPIManagement (Web)"
      },
      {
        "id": "id-entra",
        "label": "Microsoft Entra ID",
        "kind": "security",
        "icon": "azure_aad"
      },
      {
        "id": "id-adm",
        "label": "Admission Service",
        "kind": "app"
      },
      {
        "id": "id-work",
        "label": "Runtime Worker",
        "kind": "app",
        "icon": "azure_worker-container-app"
      },
      {
        "id": "id-cred",
        "label": "Credential Broker",
        "kind": "security",
        "icon": "azure_AzureKeyVault (Security)"
      },
      {
        "id": "id-kv",
        "label": "Key Vault",
        "kind": "security",
        "icon": "azure_AzureKeyVault (Security)"
      },
      {
        "id": "id-tool",
        "label": "Downstream Tool",
        "kind": "external"
      }
    ],
    "messages": [
      {
        "from": "id-user",
        "to": "id-entra",
        "label": "sign in, PKCE + MFA",
        "kind": "call"
      },
      {
        "from": "id-entra",
        "to": "id-user",
        "label": "id and access token",
        "kind": "return"
      },
      {
        "from": "id-user",
        "to": "id-apim",
        "label": "run agent, bearer",
        "kind": "call"
      },
      {
        "from": "id-apim",
        "to": "id-apim",
        "label": "validate audience and scope",
        "kind": "self"
      },
      {
        "from": "id-apim",
        "to": "id-adm",
        "label": "forward with caller claims",
        "kind": "call"
      },
      {
        "from": "id-adm",
        "to": "id-entra",
        "label": "mint agent identity token",
        "kind": "call"
      },
      {
        "from": "id-entra",
        "to": "id-adm",
        "label": "agent token, narrow scope",
        "kind": "return"
      },
      {
        "from": "id-adm",
        "to": "id-work",
        "label": "dispatch with agent token",
        "kind": "async"
      },
      {
        "from": "id-work",
        "to": "id-cred",
        "label": "request tool credential",
        "kind": "call"
      },
      {
        "from": "id-cred",
        "to": "id-cred",
        "label": "check binding and approval",
        "kind": "self"
      },
      {
        "from": "id-cred",
        "to": "id-kv",
        "label": "fetch by reference",
        "kind": "call"
      },
      {
        "from": "id-cred",
        "to": "id-work",
        "label": "15 minute scoped token",
        "kind": "return"
      },
      {
        "from": "id-work",
        "to": "id-tool",
        "label": "invoke with scoped token",
        "kind": "call"
      },
      {
        "from": "id-cred",
        "to": "id-work",
        "label": "denied, not in grant",
        "kind": "error"
      }
    ],
    "note": "The user token never leaves the perimeter. An agent gets its own identity, and the intersection of user and agent grant is what it can do.",
    "meta": {
      "v": "1.0",
      "owner": "Security Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "30-multi-tenant-isolation",
    "title": "Multi-Tenancy — Four Layers of Isolation",
    "layout": "nested",
    "canvas": {
      "width": 1760
    },
    "boxes": [
      {
        "title": "Layer 1 · Identity and admission",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Request scoping",
            "kind": "plain",
            "nodes": [
              {
                "id": "mt-map",
                "label": "Tenant Mapping",
                "kind": "security",
                "sub": "Entra tenant to id",
                "icon": "azure_aad"
              },
              {
                "id": "mt-claim",
                "label": "Tenant Claim",
                "kind": "security",
                "sub": "on every token",
                "icon": "fa5_id_badge"
              },
              {
                "id": "mt-prod",
                "label": "APIM Product",
                "kind": "integration",
                "sub": "per tenant key",
                "icon": "azure_AzureAPIManagement (Web)"
              },
              {
                "id": "mt-quota",
                "label": "Request Quota",
                "kind": "decision",
                "sub": "RPS and TPM"
              }
            ]
          }
        ]
      },
      {
        "title": "Layer 2 · Runtime",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Pooled tier",
            "kind": "plain",
            "nodes": [
              {
                "id": "mt-pool",
                "label": "Shared Worker Pool",
                "kind": "app",
                "sub": "tenant-scoped run",
                "icon": "azure_worker-container-app"
              },
              {
                "id": "mt-conc",
                "label": "Concurrency Cap",
                "kind": "decision",
                "sub": "per tenant"
              },
              {
                "id": "mt-sess",
                "label": "Session per Run",
                "kind": "platform",
                "sub": "destroyed after",
                "icon": "azure_azure-enclaves"
              }
            ]
          },
          {
            "title": "Dedicated tier",
            "kind": "plain",
            "nodes": [
              {
                "id": "mt-ded",
                "label": "Dedicated Env",
                "kind": "app",
                "sub": "own Container Apps",
                "icon": "azure_worker-container-app"
              },
              {
                "id": "mt-pe",
                "label": "Private Endpoints",
                "kind": "security",
                "sub": "tenant VNet",
                "icon": "azure_private-link"
              }
            ]
          }
        ]
      },
      {
        "title": "Layer 3 · Data and secrets",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Stores",
            "kind": "plain",
            "nodes": [
              {
                "id": "mt-part",
                "label": "Cosmos Partition",
                "kind": "store",
                "sub": "tenant_id key",
                "icon": "azure_azure-cosmos-db"
              },
              {
                "id": "mt-rls",
                "label": "SQL Row Security",
                "kind": "store",
                "sub": "session context",
                "icon": "azure_azure-sql"
              },
              {
                "id": "mt-idx",
                "label": "Search Index",
                "kind": "store",
                "sub": "one per tenant",
                "icon": "azure_cognitive-search"
              },
              {
                "id": "mt-cont",
                "label": "ADLS Container",
                "kind": "store",
                "sub": "one per tenant",
                "icon": "azure_datalake"
              }
            ]
          },
          {
            "title": "Credentials",
            "kind": "plain",
            "nodes": [
              {
                "id": "mt-kv",
                "label": "Tenant Key Vault",
                "kind": "security",
                "sub": "own CMK",
                "icon": "azure_AzureKeyVault (Security)"
              },
              {
                "id": "mt-rot",
                "label": "Rotation Schedule",
                "kind": "security",
                "sub": "90 days"
              }
            ]
          }
        ]
      },
      {
        "title": "Layer 4 · Telemetry, cost and audit",
        "kind": "boundary",
        "dir": "row",
        "children": [
          {
            "title": "Segregation",
            "kind": "plain",
            "nodes": [
              {
                "id": "mt-log",
                "label": "Log Scoping",
                "kind": "platform",
                "sub": "tenant dimension"
              },
              {
                "id": "mt-adx",
                "label": "ADX Row Policy",
                "kind": "store",
                "sub": "tenant filter",
                "icon": "azure_azure-data-explorer-clusters"
              },
              {
                "id": "mt-cost",
                "label": "Cost Attribution",
                "kind": "store",
                "sub": "tag on every call",
                "icon": "azure_cost-analysis"
              },
              {
                "id": "mt-aud",
                "label": "Audit Partition",
                "kind": "store",
                "sub": "export per tenant",
                "icon": "azure_blobstorage"
              }
            ]
          }
        ]
      }
    ],
    "outside": [
      {
        "id": "mt-noisy",
        "label": "Noisy Neighbour",
        "kind": "risk",
        "sub": "pooled tier only"
      },
      {
        "id": "mt-cross",
        "label": "Cross-Tenant Read",
        "kind": "risk",
        "sub": "tested each release"
      }
    ],
    "edges": [
      {
        "from": "mt-claim",
        "to": "mt-part",
        "label": "scopes every query"
      },
      {
        "from": "mt-conc",
        "to": "mt-noisy",
        "label": "bounds impact",
        "kind": "error"
      },
      {
        "from": "mt-rls",
        "to": "mt-cross",
        "label": "denies by default",
        "kind": "error"
      },
      {
        "from": "mt-ded",
        "to": "mt-kv",
        "label": "CMK"
      }
    ],
    "note": "The pooled tier accepts a bounded noisy-neighbour risk in exchange for cost. The dedicated tier removes it and is priced accordingly.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  },
  {
    "id": "31-failure-modes",
    "title": "Failure Modes — Signal, Classification, Response and Residual Risk",
    "layout": "grid",
    "canvas": {
      "width": 1800
    },
    "laneHeaderWidth": 180,
    "columns": [
      "Signal",
      "Class",
      "Immediate response",
      "Containment",
      "Residual risk"
    ],
    "rows": [
      {
        "title": "Model provider outage",
        "cells": [
          [
            {
              "id": "z1a",
              "label": "5xx and timeout",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "z1b",
              "label": "Provider",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z1c",
              "label": "Circuit break",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "z1d",
              "label": "Fallback route",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z1e",
              "label": "Quality drift",
              "kind": "risk"
            }
          ]
        ]
      },
      {
        "title": "Rate limit exhaustion",
        "cells": [
          [
            {
              "id": "z2a",
              "label": "429 burst",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "z2b",
              "label": "Transient",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z2c",
              "label": "Backoff + jitter",
              "kind": "queue"
            }
          ],
          [
            {
              "id": "z2d",
              "label": "PTU spillover",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z2e",
              "label": "Latency spike",
              "kind": "risk"
            }
          ]
        ]
      },
      {
        "title": "Tool unavailable",
        "cells": [
          [
            {
              "id": "z3a",
              "label": "Health probe red",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "z3b",
              "label": "Tool",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z3c",
              "label": "Retry then skip",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z3d",
              "label": "Degraded answer",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z3e",
              "label": "Incomplete result",
              "kind": "risk"
            }
          ]
        ]
      },
      {
        "title": "Agent loop divergence",
        "cells": [
          [
            {
              "id": "z4a",
              "label": "Step count rising",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "z4b",
              "label": "Agent or model",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z4c",
              "label": "Depth and token cap",
              "kind": "security"
            }
          ],
          [
            {
              "id": "z4d",
              "label": "Terminate run",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z4e",
              "label": "Wasted spend",
              "kind": "risk"
            }
          ]
        ]
      },
      {
        "title": "Poison message",
        "cells": [
          [
            {
              "id": "z5a",
              "label": "Delivery count",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "z5b",
              "label": "Permanent",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z5c",
              "label": "Dead letter",
              "kind": "queue",
              "icon": "azure_AzureServiceBusQueue (Integration)"
            }
          ],
          [
            {
              "id": "z5d",
              "label": "Triage and replay",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z5e",
              "label": "Manual backlog",
              "kind": "risk"
            }
          ]
        ]
      },
      {
        "title": "Policy or auth denial",
        "cells": [
          [
            {
              "id": "z6a",
              "label": "403 on tool call",
              "kind": "security"
            }
          ],
          [
            {
              "id": "z6b",
              "label": "Policy or auth",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z6c",
              "label": "Fail closed",
              "kind": "security"
            }
          ],
          [
            {
              "id": "z6d",
              "label": "Escalate to human",
              "kind": "actor"
            }
          ],
          [
            {
              "id": "z6e",
              "label": "Workflow stalls",
              "kind": "risk"
            }
          ]
        ]
      },
      {
        "title": "Region loss",
        "cells": [
          [
            {
              "id": "z7a",
              "label": "Probe failure",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "z7b",
              "label": "Infrastructure",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z7c",
              "label": "Front Door reroute",
              "kind": "integration"
            }
          ],
          [
            {
              "id": "z7d",
              "label": "Replay checkpoints",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z7e",
              "label": "RPO 5 min gap",
              "kind": "risk"
            }
          ]
        ]
      },
      {
        "title": "Control plane outage",
        "cells": [
          [
            {
              "id": "z8a",
              "label": "Registry 5xx",
              "kind": "platform"
            }
          ],
          [
            {
              "id": "z8b",
              "label": "Infrastructure",
              "kind": "decision"
            }
          ],
          [
            {
              "id": "z8c",
              "label": "Admissions stop",
              "kind": "security"
            }
          ],
          [
            {
              "id": "z8d",
              "label": "Cached bundles run",
              "kind": "app"
            }
          ],
          [
            {
              "id": "z8e",
              "label": "No new versions",
              "kind": "risk"
            }
          ]
        ]
      }
    ],
    "note": "Every row ends in a residual risk that is accepted, not eliminated. Those risks are the agenda for the operational review.",
    "meta": {
      "v": "1.0",
      "owner": "SRE and Architecture",
      "date": "2026-08"
    }
  },
  {
    "id": "32-delivery-roadmap",
    "title": "Delivery Roadmap — Foundation, MVP and Two Phases",
    "layout": "flow",
    "chain": true,
    "canvas": {
      "width": 1780
    },
    "stages": [
      {
        "title": "Foundation · 6 weeks",
        "nodes": [
          {
            "id": "rm-lz",
            "label": "Landing Zone",
            "kind": "platform",
            "sub": "subscription · Bicep"
          },
          {
            "id": "rm-net",
            "label": "Network and Private Link",
            "kind": "security",
            "sub": "no public data path",
            "icon": "azure_private-link"
          },
          {
            "id": "rm-idn",
            "label": "Entra and RBAC",
            "kind": "security",
            "sub": "roles · workload id",
            "icon": "azure_aad"
          },
          {
            "id": "rm-cicd",
            "label": "CI/CD Skeleton",
            "kind": "app",
            "sub": "build · sign · deploy"
          }
        ]
      },
      {
        "title": "MVP core · 12 weeks",
        "nodes": [
          {
            "id": "rm-areg",
            "label": "Agent Registry",
            "kind": "app",
            "sub": "versioned specs"
          },
          {
            "id": "rm-rt",
            "label": "Agent Runtime",
            "kind": "app",
            "sub": "single agent"
          },
          {
            "id": "rm-wf",
            "label": "Workflow Engine",
            "kind": "app",
            "sub": "sequential + branch"
          },
          {
            "id": "rm-gw",
            "label": "Model Gateway",
            "kind": "integration",
            "sub": "one provider pool",
            "icon": "azure_ai-gateway"
          },
          {
            "id": "rm-tool",
            "label": "Tool Registry",
            "kind": "app",
            "sub": "REST + MCP",
            "icon": "azure_api-center"
          }
        ]
      },
      {
        "title": "MVP controls · with core",
        "nodes": [
          {
            "id": "rm-dur",
            "label": "Durable State",
            "kind": "store",
            "sub": "checkpoint · resume"
          },
          {
            "id": "rm-grd",
            "label": "Guardrails",
            "kind": "security",
            "sub": "in · out · tool",
            "icon": "azure_content-safety"
          },
          {
            "id": "rm-trc",
            "label": "Execution Tracing",
            "kind": "platform",
            "sub": "OTel GenAI"
          },
          {
            "id": "rm-cost",
            "label": "Cost Tracking",
            "kind": "store",
            "sub": "token accounting",
            "icon": "azure_cost-analysis"
          },
          {
            "id": "rm-api",
            "label": "API, SDK, Console",
            "kind": "app",
            "sub": "the whole surface",
            "icon": "python"
          }
        ]
      },
      {
        "title": "Phase 2 · 2 quarters",
        "nodes": [
          {
            "id": "rm-multi",
            "label": "Multi-Agent Patterns",
            "kind": "app",
            "sub": "six patterns"
          },
          {
            "id": "rm-hitl",
            "label": "Human-in-the-Loop",
            "kind": "app",
            "sub": "approval queues"
          },
          {
            "id": "rm-mem",
            "label": "Advanced Memory",
            "kind": "store",
            "sub": "episodic · semantic",
            "icon": "fa5_memory"
          },
          {
            "id": "rm-route",
            "label": "Routing and Failover",
            "kind": "integration",
            "sub": "policy driven"
          },
          {
            "id": "rm-eval",
            "label": "Evaluation Framework",
            "kind": "app",
            "sub": "offline + online",
            "icon": "azure_azure-machine-learning"
          },
          {
            "id": "rm-ten",
            "label": "Multi-Tenancy",
            "kind": "security",
            "sub": "four layers",
            "icon": "azure_multi-tenancy"
          }
        ]
      },
      {
        "title": "Phase 3 · beyond",
        "nodes": [
          {
            "id": "rm-disc",
            "label": "Agent Discovery",
            "kind": "app",
            "sub": "dynamic delegation"
          },
          {
            "id": "rm-plan",
            "label": "Autonomous Planning",
            "kind": "app",
            "sub": "replanning"
          },
          {
            "id": "rm-region",
            "label": "Multi-Region Execution",
            "kind": "platform",
            "sub": "residency routing"
          },
          {
            "id": "rm-pac",
            "label": "Policy as Code",
            "kind": "security",
            "sub": "tenant authored",
            "icon": "opa"
          },
          {
            "id": "rm-mkt",
            "label": "Agent Marketplace",
            "kind": "app",
            "sub": "internal catalogue"
          }
        ]
      }
    ],
    "edges": [
      {
        "from": "rm-dur",
        "to": "rm-hitl",
        "label": "prerequisite",
        "route": "gutter"
      },
      {
        "from": "rm-trc",
        "to": "rm-eval",
        "label": "prerequisite",
        "route": "gutter"
      },
      {
        "from": "rm-ten",
        "to": "rm-region",
        "label": "prerequisite",
        "route": "gutter"
      }
    ],
    "note": "Durable state, tracing and tenancy are prerequisites, not enhancements. Deferring them makes every later phase more expensive.",
    "meta": {
      "v": "1.0",
      "owner": "Data & AI Global Practice",
      "date": "2026-08"
    }
  }
]
