{
  "type": "excalidraw",
  "version": 2,
  "source": "github-copilot",
  "elements": [
    {
      "type": "text",
      "id": "title-text",
      "x": 50,
      "y": 30,
      "width": 780,
      "height": 75,
      "text": "Chat runtime modes and hosted deployment lifecycle",
      "fontSize": 28,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "text",
      "id": "subtitle-text",
      "x": 50,
      "y": 70,
      "width": 1250,
      "height": 40,
      "text": "A deployment chooses one runtime. Identity, authorization, conversation, and cost semantics never change silently during a request.",
      "fontSize": 15,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "status-box",
      "x": 50,
      "y": 105,
      "width": 1300,
      "height": 48,
      "strokeColor": "#F7630C",
      "backgroundColor": "#FFF4CE",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "status-text",
      "x": 72,
      "y": 117,
      "width": 1250,
      "height": 60,
      "text": "Exact matrix pinned; continuity and panel evidence gates remain off/503. No live validation result is implied.",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "shared-container",
      "x": 50,
      "y": 175,
      "width": 1300,
      "height": 120,
      "strokeColor": "#0078D4",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "shared-title",
      "x": 75,
      "y": 188,
      "width": 420,
      "height": 50,
      "text": "Shared entry and topology selection",
      "fontSize": 18,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "user-box",
      "x": 82,
      "y": 230,
      "width": 170,
      "height": 46,
      "strokeColor": "#0078D4",
      "backgroundColor": "#CFE4FA",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "user-text",
      "x": 105,
      "y": 240,
      "width": 130,
      "height": 40,
      "text": "Signed-in user",
      "fontSize": 14,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "ui-box",
      "x": 302,
      "y": 230,
      "width": 220,
      "height": 46,
      "strokeColor": "#0078D4",
      "backgroundColor": "#CFE4FA",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "ui-text",
      "x": 326,
      "y": 240,
      "width": 175,
      "height": 40,
      "text": "Web UI - Container Apps",
      "fontSize": 14,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "selector-box",
      "x": 572,
      "y": 220,
      "width": 350,
      "height": 66,
      "strokeColor": "#0078D4",
      "backgroundColor": "#CFE4FA",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "selector-text",
      "x": 594,
      "y": 230,
      "width": 306,
      "height": 70,
      "text": "Resolved deployment topology\nfresh: hosted-no-panel | explicit: hosted-panel/classic | sticky: persisted",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "ingestion-box",
      "x": 972,
      "y": 230,
      "width": 330,
      "height": 46,
      "strokeColor": "#0078D4",
      "backgroundColor": "#CFE4FA",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "ingestion-text",
      "x": 996,
      "y": 240,
      "width": 280,
      "height": 40,
      "text": "Ingestion remains in Container Apps",
      "fontSize": 14,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "arrow",
      "id": "user-ui-arrow",
      "x": 252,
      "y": 253,
      "width": 47,
      "height": 0,
      "strokeColor": "#0078D4",
      "strokeWidth": 2,
      "points": [
        [
          0,
          0
        ],
        [
          47,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "arrow",
      "id": "ui-selector-arrow",
      "x": 522,
      "y": 253,
      "width": 47,
      "height": 0,
      "strokeColor": "#0078D4",
      "strokeWidth": 2,
      "points": [
        [
          0,
          0
        ],
        [
          47,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "rectangle",
      "id": "hosted-container",
      "x": 50,
      "y": 320,
      "width": 840,
      "height": 390,
      "strokeColor": "#107C10",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 3,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "hosted-title",
      "x": 76,
      "y": 335,
      "width": 700,
      "height": 50,
      "text": "Hosted/no-panel - target default for fresh deployments",
      "fontSize": 18,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "text",
      "id": "hosted-contract",
      "x": 76,
      "y": 365,
      "width": 760,
      "height": 40,
      "text": "DEPLOYMENT_TOPOLOGY=hosted-no-panel | CHAT_BACKEND=hosted_agent | DEPLOY_ADMINISTRATIVE_PANEL=false",
      "fontSize": 12,
      "fontFamily": 3,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "obo-box",
      "x": 82,
      "y": 410,
      "width": 204,
      "height": 86,
      "strokeColor": "#107C10",
      "backgroundColor": "#DFF6DD",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "obo-text",
      "x": 98,
      "y": 422,
      "width": 170,
      "height": 100,
      "text": "Trusted UI BFF\nDerives x-ms-user-identity\nnot an OBO token",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "foundry-box",
      "x": 342,
      "y": 410,
      "width": 220,
      "height": 86,
      "strokeColor": "#107C10",
      "backgroundColor": "#DFF6DD",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "foundry-text",
      "x": 362,
      "y": 422,
      "width": 180,
      "height": 100,
      "text": "Foundry Hosted Agent\nResponses 2.0.0\nManaged Conversations",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "toolbox-box",
      "x": 618,
      "y": 410,
      "width": 224,
      "height": 86,
      "strokeColor": "#5C2D91",
      "backgroundColor": "#E8DAEF",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "toolbox-text",
      "x": 638,
      "y": 422,
      "width": 184,
      "height": 100,
      "text": "Toolbox / MCP tools\nOpaque Foundry call context\nNo bearer token in payload",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "arrow",
      "id": "obo-foundry-arrow",
      "x": 286,
      "y": 453,
      "width": 53,
      "height": 0,
      "strokeColor": "#107C10",
      "strokeWidth": 3,
      "points": [
        [
          0,
          0
        ],
        [
          53,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "text",
      "id": "delegated-label",
      "x": 284,
      "y": 427,
      "width": 70,
      "height": 35,
      "text": "owner\nheader",
      "fontSize": 10,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "top"
    },
    {
      "type": "arrow",
      "id": "foundry-toolbox-arrow",
      "x": 562,
      "y": 453,
      "width": 53,
      "height": 0,
      "strokeColor": "#107C10",
      "strokeWidth": 3,
      "points": [
        [
          0,
          0
        ],
        [
          53,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "text",
      "id": "context-label",
      "x": 552,
      "y": 427,
      "width": 76,
      "height": 35,
      "text": "opaque\ncall context",
      "fontSize": 10,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "retrieval-box",
      "x": 180,
      "y": 548,
      "width": 570,
      "height": 118,
      "strokeColor": "#D97706",
      "backgroundColor": "#FFF4CE",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "retrieval-text",
      "x": 205,
      "y": 565,
      "width": 520,
      "height": 130,
      "text": "Authorization-trimmed retrieval\nToolbox resolves opaque context to the delegated retrieval identity.\nA separate OBO token lets Foundry IQ / AI Search enforce per-user access.\nMissing or malformed retrieval context fails closed before data access.",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "arrow",
      "id": "toolbox-retrieval-arrow",
      "x": 730,
      "y": 496,
      "width": 80,
      "height": 49,
      "strokeColor": "#D97706",
      "strokeWidth": 3,
      "points": [
        [
          0,
          0
        ],
        [
          -80,
          49
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "rectangle",
      "id": "hosted-note-box",
      "x": 76,
      "y": 675,
      "width": 788,
      "height": 24,
      "strokeColor": "#D13438",
      "backgroundColor": "#FDE7E9",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "hosted-note-text",
      "x": 92,
      "y": 678,
      "width": 756,
      "height": 30,
      "text": "No orchestrator Container App and no panel-only Cosmos DB. Hosted failure is terminal; rollback is an explicit deployment.",
      "fontSize": 11,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "classic-container",
      "x": 920,
      "y": 320,
      "width": 430,
      "height": 390,
      "strokeColor": "#605E5C",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 3,
      "strokeStyle": "dashed",
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "classic-title",
      "x": 946,
      "y": 335,
      "width": 350,
      "height": 50,
      "text": "Explicit Container Apps fallback",
      "fontSize": 18,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "text",
      "id": "classic-contract",
      "x": 946,
      "y": 365,
      "width": 360,
      "height": 55,
      "text": "DEPLOYMENT_TOPOLOGY=classic\nCHAT_BACKEND=orchestrator",
      "fontSize": 12,
      "fontFamily": 3,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "orchestrator-box",
      "x": 974,
      "y": 410,
      "width": 322,
      "height": 86,
      "strokeColor": "#605E5C",
      "backgroundColor": "#F3F2F1",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "orchestrator-text",
      "x": 996,
      "y": 422,
      "width": 278,
      "height": 100,
      "text": "Orchestrator Container App\nSupported classic runtime\nSelected before provision/deploy",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "classic-retrieval-box",
      "x": 974,
      "y": 548,
      "width": 322,
      "height": 118,
      "strokeColor": "#605E5C",
      "backgroundColor": "#F3F2F1",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "classic-retrieval-text",
      "x": 994,
      "y": 565,
      "width": 282,
      "height": 130,
      "text": "Classic authorized retrieval\nExisting classic deployments stay sticky.\nFallback preserves classic history/panel data.\nMigration and rollback are operator actions.",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "arrow",
      "id": "classic-retrieval-arrow",
      "x": 1135,
      "y": 496,
      "width": 0,
      "height": 49,
      "strokeColor": "#605E5C",
      "strokeWidth": 3,
      "strokeStyle": "dashed",
      "points": [
        [
          0,
          0
        ],
        [
          0,
          49
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "rectangle",
      "id": "no-fallback-box",
      "x": 893,
      "y": 446,
      "width": 16,
      "height": 96,
      "strokeColor": "#D13438",
      "backgroundColor": "#FDE7E9",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "no-fallback-text",
      "x": 852,
      "y": 548,
      "width": 100,
      "height": 55,
      "text": "NO REQUEST-TIME\nSILENT FALLBACK",
      "fontSize": 11,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "build-container",
      "x": 50,
      "y": 735,
      "width": 1300,
      "height": 235,
      "strokeColor": "#D97706",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 3,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "build-title",
      "x": 76,
      "y": 750,
      "width": 700,
      "height": 50,
      "text": "Two-phase hosted image preparation and deployment",
      "fontSize": 18,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "text",
      "id": "build-subtitle",
      "x": 76,
      "y": 780,
      "width": 1180,
      "height": 40,
      "text": "Build activity happens between two provision operations; request processing never triggers an image build or topology switch.",
      "fontSize": 12,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    },
    {
      "type": "rectangle",
      "id": "provision-one-box",
      "x": 78,
      "y": 835,
      "width": 170,
      "height": 78,
      "strokeColor": "#D97706",
      "backgroundColor": "#FFF4CE",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "provision-one-text",
      "x": 94,
      "y": 850,
      "width": 138,
      "height": 75,
      "text": "1. azd provision\nPrepare prerequisites",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "prepare-image-box",
      "x": 294,
      "y": 823,
      "width": 280,
      "height": 102,
      "strokeColor": "#D97706",
      "backgroundColor": "#FFF4CE",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "prepare-image-text",
      "x": 314,
      "y": 835,
      "width": 240,
      "height": 125,
      "text": "2. Prepare hosted image\nPublic: shared ACR Tasks\nPrivate: dedicated VNet agent pool\nPinned source + hosted entrypoint",
      "fontSize": 12,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "digest-box",
      "x": 620,
      "y": 835,
      "width": 180,
      "height": 78,
      "strokeColor": "#D97706",
      "backgroundColor": "#FFF4CE",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "digest-text",
      "x": 638,
      "y": 850,
      "width": 144,
      "height": 75,
      "text": "Immutable digest\nsha256:<64 hex>",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "provision-two-box",
      "x": 846,
      "y": 835,
      "width": 174,
      "height": 78,
      "strokeColor": "#D97706",
      "backgroundColor": "#FFF4CE",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "provision-two-text",
      "x": 862,
      "y": 850,
      "width": 142,
      "height": 75,
      "text": "3. azd provision\nMaterialize handoff",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "rectangle",
      "id": "deploy-box",
      "x": 1066,
      "y": 835,
      "width": 250,
      "height": 78,
      "strokeColor": "#107C10",
      "backgroundColor": "#DFF6DD",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "roundness": {
        "type": 3
      }
    },
    {
      "type": "text",
      "id": "deploy-text",
      "x": 1086,
      "y": 850,
      "width": 210,
      "height": 75,
      "text": "4. azd deploy\nDigest-backed hosted agent",
      "fontSize": 13,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "center",
      "verticalAlign": "middle"
    },
    {
      "type": "arrow",
      "id": "build-arrow-one",
      "x": 248,
      "y": 874,
      "width": 43,
      "height": 0,
      "strokeColor": "#D97706",
      "strokeWidth": 3,
      "points": [
        [
          0,
          0
        ],
        [
          43,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "arrow",
      "id": "build-arrow-two",
      "x": 574,
      "y": 874,
      "width": 43,
      "height": 0,
      "strokeColor": "#D97706",
      "strokeWidth": 3,
      "points": [
        [
          0,
          0
        ],
        [
          43,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "arrow",
      "id": "build-arrow-three",
      "x": 800,
      "y": 874,
      "width": 43,
      "height": 0,
      "strokeColor": "#D97706",
      "strokeWidth": 3,
      "points": [
        [
          0,
          0
        ],
        [
          43,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "arrow",
      "id": "build-arrow-four",
      "x": 1020,
      "y": 874,
      "width": 43,
      "height": 0,
      "strokeColor": "#D97706",
      "strokeWidth": 3,
      "points": [
        [
          0,
          0
        ],
        [
          43,
          0
        ]
      ],
      "endArrowhead": "arrow"
    },
    {
      "type": "text",
      "id": "panel-note",
      "x": 76,
      "y": 938,
      "width": 1170,
      "height": 35,
      "text": "Explicit hosted-panel is supported: UI + ingestion + metadata Cosmos only; user-history and operator routes remain off/503 pending evidence.",
      "fontSize": 11,
      "fontFamily": 2,
      "strokeColor": "#000000",
      "textAlign": "left",
      "verticalAlign": "top"
    }
  ],
  "appState": {
    "viewBackgroundColor": "#f7faff",
    "gridSize": 20
  },
  "files": {}
}
