{"type": "excalidraw", "version": 2, "source": "generated", "elements": [{"id": "T2IOB9h1ZgZNYnUfdBvr", "type": "frame", "x": 390, "y": 30, "width": 2339.2000000000003, "height": 1037, "angle": 0, "strokeColor": "#bbb", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "index": "a0000", "roundness": null, "seed": 417626574, "version": 1, "versionNonce": 125632851, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "name": "System diagram"}, {"id": "HrbOnpyN9C99pej0L48O", "type": "text", "x": -760, "y": -40, "width": 1004.3000000000001, "height": 27.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": null, "index": "a0001", "roundness": null, "seed": 290473067, "version": 1, "versionNonce": 1724049072, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Real-time messaging (WhatsApp): API first, inbox for durability, ordering as policy", "fontSize": 22, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Real-time messaging (WhatsApp): API first, inbox for durability, ordering as policy", "autoResize": true, "lineHeight": 1.25}, {"id": "bXPVJPN3gEtZ2peptVzU", "type": "text", "x": -760, "y": 20, "width": 569.8000000000001, "height": 157.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": null, "index": "a0002", "roundness": null, "seed": 1292590571, "version": 1, "versionNonce": 769188505, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Requirements: the five-question pack\n- group size cap? (DM = 2; groups 256 / 1,000; above = channel)\n- media types? text only or images / video (storage, throughput)\n- delete / edit semantics? for me, for everyone, within N min\n- multi-device policy? phone + tablet at once, per-device delivery state\n- presence accuracy? seconds or minutes; is last_seen needed?\nA user can: send / receive in DMs and groups \u00b7 see sent / delivered / read\n\u00b7 see who is online \u00b7 scroll history \u00b7 use several devices \u00b7 get push\nwhen offline \u00b7 create, rename, join, leave groups", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Requirements: the five-question pack\n- group size cap? (DM = 2; groups 256 / 1,000; above = channel)\n- media types? text only or images / video (storage, throughput)\n- delete / edit semantics? for me, for everyone, within N min\n- multi-device policy? phone + tablet at once, per-device delivery state\n- presence accuracy? seconds or minutes; is last_seen needed?\nA user can: send / receive in DMs and groups \u00b7 see sent / delivered / read\n\u00b7 see who is online \u00b7 scroll history \u00b7 use several devices \u00b7 get push\nwhen offline \u00b7 create, rename, join, leave groups", "autoResize": true, "lineHeight": 1.25}, {"id": "GlOF16Ge66DE5ppRPQZF", "type": "text", "x": -760, "y": 203.5, "width": 592.9000000000001, "height": 122.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": null, "index": "a0003", "roundness": null, "seed": 1804503366, "version": 1, "versionNonce": 968545368, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Technical challenges\n- delivery < 1 s p99 in region \u00b7 never lose a message (durable before ack)\n- availability over consistency: accept out-of-order arrival, render by ts\n- offline delivery and multi-device catch-up \u00b7 group fan-out cost\n- presence at scale without writing last_seen per heartbeat\n- 100M DAU x 10 msgs = 1B/day = 11.5k/s avg, 35k/s peak \u00b7 10M sockets\n  = ~10 gateways \u00b7 200 B/msg = 200 GB/day \u00b7 256-member group = 256 deliveries", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Technical challenges\n- delivery < 1 s p99 in region \u00b7 never lose a message (durable before ack)\n- availability over consistency: accept out-of-order arrival, render by ts\n- offline delivery and multi-device catch-up \u00b7 group fan-out cost\n- presence at scale without writing last_seen per heartbeat\n- 100M DAU x 10 msgs = 1B/day = 11.5k/s avg, 35k/s peak \u00b7 10M sockets\n  = ~10 gateways \u00b7 200 B/msg = 200 GB/day \u00b7 256-member group = 256 deliveries", "autoResize": true, "lineHeight": 1.25}, {"id": "5D53Ys7P4sYZDtijs5bl", "type": "text", "x": -760, "y": 352.0, "width": 585.2, "height": 157.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": null, "index": "a0004", "roundness": null, "seed": 1437144111, "version": 1, "versionNonce": 140444703, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Core entities\nUser(id, handle)   Device(id, user_id, platform, push_token)\nConversation(id, type dm|group, name); DM = exactly two members\nConversationMember(conversation_id, user_id, role, joined_at, muted)\nMessage(id monotonic per conversation, conversation_id, sender_id,\n        client_msg_id, sender_ts, server_ts, body) immutable\nReceipt(message_id, recipient_id, device_id, state, at)\nPresence(user_id -> online until TTL)   Inbox(recipient, device, message_id)\nNot entities: the socket, the notification", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Core entities\nUser(id, handle)   Device(id, user_id, platform, push_token)\nConversation(id, type dm|group, name); DM = exactly two members\nConversationMember(conversation_id, user_id, role, joined_at, muted)\nMessage(id monotonic per conversation, conversation_id, sender_id,\n        client_msg_id, sender_ts, server_ts, body) immutable\nReceipt(message_id, recipient_id, device_id, state, at)\nPresence(user_id -> online until TTL)   Inbox(recipient, device, message_id)\nNot entities: the socket, the notification", "autoResize": true, "lineHeight": 1.25}, {"id": "K50SZGROiKLxBGi5GUub", "type": "text", "x": -760, "y": 535.5, "width": 592.9000000000001, "height": 192.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": null, "index": "a0005", "roundness": null, "seed": 1750261700, "version": 1, "versionNonce": 2045493810, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "API (write these before any box)\nPOST /conversations {type, member_ids, name}   GET /conversations?since&limit\nPOST /conversations/{id}/members   DELETE /conversations/{id}/members/{uid}\nPATCH /conversations/{id} {name}\nPOST /conversations/{id}/messages {client_msg_id, body, sender_ts}\n     -> {message_id, server_ts}   idempotent on client_msg_id\nGET /conversations/{id}/messages?since=message_id&limit\nPOST /messages/{id}/receipts {state}   GET /messages/{id}/receipts\nPATCH /users/{id}/presence (heartbeat)   GET /users/{id}/presence\nWS /ws frames: message, receipt, presence\nhot: send, read, receipt, heartbeat   cold: create, rename, add, leave", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "API (write these before any box)\nPOST /conversations {type, member_ids, name}   GET /conversations?since&limit\nPOST /conversations/{id}/members   DELETE /conversations/{id}/members/{uid}\nPATCH /conversations/{id} {name}\nPOST /conversations/{id}/messages {client_msg_id, body, sender_ts}\n     -> {message_id, server_ts}   idempotent on client_msg_id\nGET /conversations/{id}/messages?since=message_id&limit\nPOST /messages/{id}/receipts {state}   GET /messages/{id}/receipts\nPATCH /users/{id}/presence (heartbeat)   GET /users/{id}/presence\nWS /ws frames: message, receipt, presence\nhot: send, read, receipt, heartbeat   cold: create, rename, add, leave", "autoResize": true, "lineHeight": 1.25}, {"id": "a87dpss3ataVOw6DThuy", "type": "text", "x": -760, "y": 754.0, "width": 592.9000000000001, "height": 105.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": null, "index": "a0006", "roundness": null, "seed": 835204768, "version": 1, "versionNonce": 861846590, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "What breaks first\n- global ordering promised -> server id per conversation, render by sender_ts\n- bus as the only copy -> inbox row before publish, delete on ACK\n- last_seen written per heartbeat -> TTL key, offline = expiry\n- 1,000-member group on the send path -> fan-out workers + queue\n- leave without detaching push -> membership change updates push routing", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "What breaks first\n- global ordering promised -> server id per conversation, render by sender_ts\n- bus as the only copy -> inbox row before publish, delete on ACK\n- last_seen written per heartbeat -> TTL key, offline = expiry\n- 1,000-member group on the send path -> fan-out workers + queue\n- leave without detaching push -> membership change updates push routing", "autoResize": true, "lineHeight": 1.25}, {"id": "DfykRv3Pk02xGlvJlMZi", "type": "rectangle", "x": 420, "y": 240, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#f3f4f6", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0007", "roundness": {"type": 3}, "seed": 525839414, "version": 1, "versionNonce": 955975221, "isDeleted": false, "boundElements": [{"type": "text", "id": "tFlsmbYTayrRD7zWID3o"}, {"type": "arrow", "id": "7NIbauDgttnPy4UyqAPU"}, {"type": "arrow", "id": "JfLWMtiv2Iae7iPc3aP1"}, {"type": "arrow", "id": "2OzTKaCUsxW16nNfuTJ9"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "tFlsmbYTayrRD7zWID3o", "type": "text", "x": 430, "y": 265.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0008", "roundness": null, "seed": 1944917887, "version": 1, "versionNonce": 892955458, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Devices (phone, tablet, web)\nWebSocket + REST fallback\nrender by sender_ts, flag late", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "DfykRv3Pk02xGlvJlMZi", "originalText": "Devices (phone, tablet, web)\nWebSocket + REST fallback\nrender by sender_ts, flag late", "autoResize": true, "lineHeight": 1.25}, {"id": "KiDVbWvFtWDCdTkLagMr", "type": "rectangle", "x": 940, "y": 240, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#dbeafe", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0009", "roundness": {"type": 3}, "seed": 1926677564, "version": 1, "versionNonce": 1521371193, "isDeleted": false, "boundElements": [{"type": "text", "id": "R6lH9aX285Xs2yqhyPGw"}, {"type": "arrow", "id": "7NIbauDgttnPy4UyqAPU"}, {"type": "arrow", "id": "OqXEyEvHotagJZ8qP5Vu"}, {"type": "arrow", "id": "Wj1Z1gJ07ADl3zKvJpmm"}, {"type": "arrow", "id": "JfLWMtiv2Iae7iPc3aP1"}, {"type": "arrow", "id": "elct68ijRB7OYNe4grxJ"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "R6lH9aX285Xs2yqhyPGw", "type": "text", "x": 950, "y": 265.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0010", "roundness": null, "seed": 1531704339, "version": 1, "versionNonce": 1762296724, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "WebSocket gateways (~10)\nuserId \u2192 socket map\nconsistent hash, ring in etcd", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "KiDVbWvFtWDCdTkLagMr", "originalText": "WebSocket gateways (~10)\nuserId \u2192 socket map\nconsistent hash, ring in etcd", "autoResize": true, "lineHeight": 1.25}, {"id": "eMMDxCvylQ08xopbPiF1", "type": "rectangle", "x": 1460, "y": 60, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ffedd5", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0011", "roundness": {"type": 3}, "seed": 2111841426, "version": 1, "versionNonce": 1067216623, "isDeleted": false, "boundElements": [{"type": "text", "id": "VLZLoe6hG2ZUcbGgnpXY"}, {"type": "arrow", "id": "5LBA4LZ7ptJrotgEIrd7"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "VLZLoe6hG2ZUcbGgnpXY", "type": "text", "x": 1470, "y": 85.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0012", "roundness": null, "seed": 468463004, "version": 1, "versionNonce": 1422156185, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Conversation service (cold paths)\ncreate, rename, add, leave\nleave detaches push targets", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "eMMDxCvylQ08xopbPiF1", "originalText": "Conversation service (cold paths)\ncreate, rename, add, leave\nleave detaches push targets", "autoResize": true, "lineHeight": 1.25}, {"id": "l9vRWo4MQwTmuR1JJeDm", "type": "rectangle", "x": 1460, "y": 240, "width": 300, "height": 110, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ffedd5", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0013", "roundness": {"type": 3}, "seed": 1265215704, "version": 1, "versionNonce": 1711727359, "isDeleted": false, "boundElements": [{"type": "text", "id": "J3ObCpEE7kUtDTl5fQAp"}, {"type": "arrow", "id": "OqXEyEvHotagJZ8qP5Vu"}, {"type": "arrow", "id": "lDKbZtshLmVKMJei5sBo"}, {"type": "arrow", "id": "7RyC97CdQFja9bU44Mcp"}, {"type": "arrow", "id": "2xkd1WMcfH2RuqGEgOd5"}, {"type": "arrow", "id": "WUVQl5uf76wZkhHHE7VY"}, {"type": "arrow", "id": "5LBA4LZ7ptJrotgEIrd7"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "J3ObCpEE7kUtDTl5fQAp", "type": "text", "x": 1470, "y": 260.0, "width": 280, "height": 70.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0014", "roundness": null, "seed": 937952916, "version": 1, "versionNonce": 267335010, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Message service (hot paths)\nassign server id + server_ts\nwrite message + inbox rows, then publish\nreceipts", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "l9vRWo4MQwTmuR1JJeDm", "originalText": "Message service (hot paths)\nassign server id + server_ts\nwrite message + inbox rows, then publish\nreceipts", "autoResize": true, "lineHeight": 1.25}, {"id": "VGhkgMMxQ56AxrvieWoQ", "type": "ellipse", "x": 1940, "y": 230, "width": 380, "height": 110, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#dcfce7", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0015", "roundness": {"type": 2}, "seed": 206761788, "version": 1, "versionNonce": 486529894, "isDeleted": false, "boundElements": [{"type": "text", "id": "At1xv5lQYNgAYeyQq71x"}, {"type": "arrow", "id": "lDKbZtshLmVKMJei5sBo"}, {"type": "arrow", "id": "FOFsYz0dpiuRScF18ew8"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "At1xv5lQYNgAYeyQq71x", "type": "text", "x": 1950, "y": 266.25, "width": 360, "height": 37.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0016", "roundness": null, "seed": 1340565134, "version": 1, "versionNonce": 1350978183, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Message store (wide-row by conversation)\nmessages \u00b7 receipts \u00b7 members", "fontSize": 15, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "VGhkgMMxQ56AxrvieWoQ", "originalText": "Message store (wide-row by conversation)\nmessages \u00b7 receipts \u00b7 members", "autoResize": true, "lineHeight": 1.25}, {"id": "74GWAU0aEF3cTm3YR4vL", "type": "ellipse", "x": 1940, "y": 450, "width": 380, "height": 100, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#dcfce7", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0017", "roundness": {"type": 2}, "seed": 1409973076, "version": 1, "versionNonce": 1855733839, "isDeleted": false, "boundElements": [{"type": "text", "id": "buQAiMOcNn8JfY1EVI5n"}, {"type": "arrow", "id": "7RyC97CdQFja9bU44Mcp"}, {"type": "arrow", "id": "FOFsYz0dpiuRScF18ew8"}, {"type": "arrow", "id": "uMtdtyShvxxdvXMvPRPV"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "buQAiMOcNn8JfY1EVI5n", "type": "text", "x": 1950, "y": 481.25, "width": 360, "height": 37.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0018", "roundness": null, "seed": 357195358, "version": 1, "versionNonce": 1454176395, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Inbox (per recipient device)\nrow until ACK \u00b7 durability backstop", "fontSize": 15, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "74GWAU0aEF3cTm3YR4vL", "originalText": "Inbox (per recipient device)\nrow until ACK \u00b7 durability backstop", "autoResize": true, "lineHeight": 1.25}, {"id": "FT0WWnBo59xwqhdf6Rr7", "type": "rectangle", "x": 1460, "y": 460, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ede9fe", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0019", "roundness": {"type": 3}, "seed": 255664137, "version": 1, "versionNonce": 1790479861, "isDeleted": false, "boundElements": [{"type": "text", "id": "4dtbBP1MbD5Oh8a7OrQU"}, {"type": "arrow", "id": "2xkd1WMcfH2RuqGEgOd5"}, {"type": "arrow", "id": "Wj1Z1gJ07ADl3zKvJpmm"}, {"type": "arrow", "id": "nPk62r5xUL0ksvYYV0Em"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "4dtbBP1MbD5Oh8a7OrQU", "type": "text", "x": 1470, "y": 485.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0020", "roundness": null, "seed": 387212531, "version": 1, "versionNonce": 875710728, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Redis Pub/Sub fan-out\nchannel per user \u00b7 lossy on purpose\n(inbox holds the copy)", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "FT0WWnBo59xwqhdf6Rr7", "originalText": "Redis Pub/Sub fan-out\nchannel per user \u00b7 lossy on purpose\n(inbox holds the copy)", "autoResize": true, "lineHeight": 1.25}, {"id": "QhKEtp7APAV3EA2fmIqu", "type": "rectangle", "x": 940, "y": 460, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#dcfce7", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0021", "roundness": {"type": 3}, "seed": 1048961962, "version": 1, "versionNonce": 1269536569, "isDeleted": false, "boundElements": [{"type": "text", "id": "W7bmrZLczjCRp3O6XOkw"}, {"type": "arrow", "id": "elct68ijRB7OYNe4grxJ"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "W7bmrZLczjCRp3O6XOkw", "type": "text", "x": 950, "y": 485.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0022", "roundness": null, "seed": 331243114, "version": 1, "versionNonce": 798585877, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Presence (Redis TTL keys)\nheartbeat 10\u201330 s, TTL = 2\u00d7\noffline = expiry \u00b7 no last_seen writes", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "QhKEtp7APAV3EA2fmIqu", "originalText": "Presence (Redis TTL keys)\nheartbeat 10\u201330 s, TTL = 2\u00d7\noffline = expiry \u00b7 no last_seen writes", "autoResize": true, "lineHeight": 1.25}, {"id": "lSx6uNs0qLnON0pXuqpV", "type": "rectangle", "x": 1460, "y": 680, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ffedd5", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0023", "roundness": {"type": 3}, "seed": 97164292, "version": 1, "versionNonce": 95967465, "isDeleted": false, "boundElements": [{"type": "text", "id": "hxXZJhKdjZD1cgdUVCFc"}, {"type": "arrow", "id": "WUVQl5uf76wZkhHHE7VY"}, {"type": "arrow", "id": "uMtdtyShvxxdvXMvPRPV"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "hxXZJhKdjZD1cgdUVCFc", "type": "text", "x": 1470, "y": 705.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0024", "roundness": null, "seed": 1791392149, "version": 1, "versionNonce": 1893645737, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Group fan-out workers + queue\nabove ~100 members: write once,\nN inbox rows off the send path", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "lSx6uNs0qLnON0pXuqpV", "originalText": "Group fan-out workers + queue\nabove ~100 members: write once,\nN inbox rows off the send path", "autoResize": true, "lineHeight": 1.25}, {"id": "4avBuW20ghbMq5O6eZoc", "type": "rectangle", "x": 940, "y": 680, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#dbeafe", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0025", "roundness": {"type": 3}, "seed": 1923123335, "version": 1, "versionNonce": 2123712598, "isDeleted": false, "boundElements": [{"type": "text", "id": "vGoDz6TBZsg8PkF1LDoz"}, {"type": "arrow", "id": "nPk62r5xUL0ksvYYV0Em"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "vGoDz6TBZsg8PkF1LDoz", "type": "text", "x": 950, "y": 705.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0026", "roundness": null, "seed": 1672705825, "version": 1, "versionNonce": 1711179541, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Push service (APNs, FCM)\ndevices with no socket\ntoken from Device", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "4avBuW20ghbMq5O6eZoc", "originalText": "Push service (APNs, FCM)\ndevices with no socket\ntoken from Device", "autoResize": true, "lineHeight": 1.25}, {"id": "HJCkcuJzicZNM90WKzdI", "type": "rectangle", "x": 420, "y": 680, "width": 300, "height": 104, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#f3f4f6", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0027", "roundness": {"type": 3}, "seed": 742225154, "version": 1, "versionNonce": 640484181, "isDeleted": false, "boundElements": [{"type": "text", "id": "Mk1TUjvOR5vexoZOKQmW"}, {"type": "arrow", "id": "2OzTKaCUsxW16nNfuTJ9"}], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "Mk1TUjvOR5vexoZOKQmW", "type": "text", "x": 430, "y": 705.75, "width": 280, "height": 52.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0028", "roundness": null, "seed": 2029532816, "version": 1, "versionNonce": 1483756604, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "History reads\nGET messages?since&limit\npaginate the message store", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "center", "verticalAlign": "middle", "containerId": "HJCkcuJzicZNM90WKzdI", "originalText": "History reads\nGET messages?since&limit\npaginate the message store", "autoResize": true, "lineHeight": 1.25}, {"id": "7NIbauDgttnPy4UyqAPU", "type": "arrow", "x": 720, "y": 292.0, "width": 220, "height": 1, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0029", "roundness": null, "seed": 1500499400, "version": 1, "versionNonce": 1228810783, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [220, 0.0]], "startBinding": {"elementId": "DfykRv3Pk02xGlvJlMZi", "mode": "orbit", "fixedPoint": [1, 0.5]}, "endBinding": {"elementId": "KiDVbWvFtWDCdTkLagMr", "mode": "orbit", "fixedPoint": [0, 0.5]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "QfZ3if2l4Gy4LEAtZuR3", "type": "text", "x": 740, "y": 266.0, "width": 235.95000000000002, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0030", "roundness": null, "seed": 816206992, "version": 1, "versionNonce": 1677126342, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "1 send {client_msg_id, sender_ts}", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "1 send {client_msg_id, sender_ts}", "autoResize": true, "lineHeight": 1.25}, {"id": "OqXEyEvHotagJZ8qP5Vu", "type": "arrow", "x": 1240, "y": 292.0, "width": 220, "height": 3.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0031", "roundness": null, "seed": 786152155, "version": 1, "versionNonce": 1480096427, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [220, 3.0]], "startBinding": {"elementId": "KiDVbWvFtWDCdTkLagMr", "mode": "orbit", "fixedPoint": [1, 0.5]}, "endBinding": {"elementId": "l9vRWo4MQwTmuR1JJeDm", "mode": "orbit", "fixedPoint": [0, 0.5]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "bouNSW0ySKr9hSyJvif3", "type": "text", "x": 1260, "y": 266.0, "width": 164.45000000000002, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0032", "roundness": null, "seed": 1200197165, "version": 1, "versionNonce": 1499944339, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "2 route by conversation", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "2 route by conversation", "autoResize": true, "lineHeight": 1.25}, {"id": "lDKbZtshLmVKMJei5sBo", "type": "arrow", "x": 1760, "y": 275.0, "width": 180, "height": 10.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0033", "roundness": null, "seed": 1217518219, "version": 1, "versionNonce": 1208482452, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [180, -10.0]], "startBinding": {"elementId": "l9vRWo4MQwTmuR1JJeDm", "mode": "orbit", "fixedPoint": [1, 0.3181818181818182]}, "endBinding": {"elementId": "VGhkgMMxQ56AxrvieWoQ", "mode": "orbit", "fixedPoint": [0, 0.3181818181818182]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "q5xCezhEziRPfxtD3StR", "type": "text", "x": 1780, "y": 249.0, "width": 178.75000000000003, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0034", "roundness": null, "seed": 561624023, "version": 1, "versionNonce": 608173951, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "3 persist (id, server_ts)", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "3 persist (id, server_ts)", "autoResize": true, "lineHeight": 1.25}, {"id": "7RyC97CdQFja9bU44Mcp", "type": "arrow", "x": 1760, "y": 325.0, "width": 190, "height": 160.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0035", "roundness": null, "seed": 1475671837, "version": 1, "versionNonce": 776841408, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [190, 160.0]], "startBinding": {"elementId": "l9vRWo4MQwTmuR1JJeDm", "mode": "orbit", "fixedPoint": [1, 0.7727272727272727]}, "endBinding": {"elementId": "74GWAU0aEF3cTm3YR4vL", "mode": "orbit", "fixedPoint": [0.02631578947368421, 0.35]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "TwNZjtsjhxGlW1CuGtvk", "type": "text", "x": 1780, "y": 335.0, "width": 114.4, "height": 32.5, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0036", "roundness": null, "seed": 448918133, "version": 1, "versionNonce": 1376923912, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "4 inbox row per\nrecipient device", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "4 inbox row per\nrecipient device", "autoResize": true, "lineHeight": 1.25}, {"id": "2xkd1WMcfH2RuqGEgOd5", "type": "arrow", "x": 1550.0, "y": 350, "width": 1, "height": 110, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0037", "roundness": null, "seed": 1375714089, "version": 1, "versionNonce": 921496525, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [0.0, 110]], "startBinding": {"elementId": "l9vRWo4MQwTmuR1JJeDm", "mode": "orbit", "fixedPoint": [0.3, 1]}, "endBinding": {"elementId": "FT0WWnBo59xwqhdf6Rr7", "mode": "orbit", "fixedPoint": [0.3, 0]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "hH21zLyKoj8nBWNfVfL6", "type": "text", "x": 1410.0, "y": 390, "width": 164.45000000000002, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0038", "roundness": null, "seed": 1941031174, "version": 1, "versionNonce": 568957471, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "5 publish per recipient", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "5 publish per recipient", "autoResize": true, "lineHeight": 1.25}, {"id": "Wj1Z1gJ07ADl3zKvJpmm", "type": "arrow", "x": 1460, "y": 492.0, "width": 220, "height": 168.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0039", "roundness": null, "seed": 403791904, "version": 1, "versionNonce": 181673018, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [-220, -168.0]], "startBinding": {"elementId": "FT0WWnBo59xwqhdf6Rr7", "mode": "orbit", "fixedPoint": [0, 0.3076923076923077]}, "endBinding": {"elementId": "KiDVbWvFtWDCdTkLagMr", "mode": "orbit", "fixedPoint": [1, 0.8076923076923077]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "YorPcIywAohDBwb7Y0V2", "type": "text", "x": 1260, "y": 338, "width": 235.95000000000002, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0040", "roundness": null, "seed": 1027319619, "version": 1, "versionNonce": 6297830, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "6 owning gateway pushes to socket", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "6 owning gateway pushes to socket", "autoResize": true, "lineHeight": 1.25}, {"id": "nPk62r5xUL0ksvYYV0Em", "type": "arrow", "x": 1460, "y": 532.0, "width": 220, "height": 170.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0041", "roundness": null, "seed": 614822411, "version": 1, "versionNonce": 1918347986, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [-220, 170.0]], "startBinding": {"elementId": "FT0WWnBo59xwqhdf6Rr7", "mode": "orbit", "fixedPoint": [0, 0.6923076923076923]}, "endBinding": {"elementId": "4avBuW20ghbMq5O6eZoc", "mode": "orbit", "fixedPoint": [1, 0.21153846153846154]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "tLEoglkzQugTTBCxVjjq", "type": "text", "x": 1260, "y": 676.0, "width": 135.85000000000002, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0042", "roundness": null, "seed": 1118935731, "version": 1, "versionNonce": 1103376315, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "6b no socket \u2192 push", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "6b no socket \u2192 push", "autoResize": true, "lineHeight": 1.25}, {"id": "JfLWMtiv2Iae7iPc3aP1", "type": "arrow", "x": 940, "y": 312.0, "width": 220, "height": 1, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0043", "roundness": null, "seed": 570522058, "version": 1, "versionNonce": 483746525, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [-220, 0.0]], "startBinding": {"elementId": "KiDVbWvFtWDCdTkLagMr", "mode": "orbit", "fixedPoint": [0, 0.6923076923076923]}, "endBinding": {"elementId": "DfykRv3Pk02xGlvJlMZi", "mode": "orbit", "fixedPoint": [1, 0.6923076923076923]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "YZiIldz9cYxtJeYxVxE8", "type": "text", "x": 740, "y": 318.0, "width": 157.3, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0044", "roundness": null, "seed": 1375859278, "version": 1, "versionNonce": 664127008, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "7 deliver; device ACKs", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "7 deliver; device ACKs", "autoResize": true, "lineHeight": 1.25}, {"id": "elct68ijRB7OYNe4grxJ", "type": "arrow", "x": 1130.0, "y": 344, "width": 1, "height": 116, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0045", "roundness": null, "seed": 252641786, "version": 1, "versionNonce": 94518758, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [0.0, 116]], "startBinding": {"elementId": "KiDVbWvFtWDCdTkLagMr", "mode": "orbit", "fixedPoint": [0.6333333333333333, 1]}, "endBinding": {"elementId": "QhKEtp7APAV3EA2fmIqu", "mode": "orbit", "fixedPoint": [0.6333333333333333, 0]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "F2XIA8kzr1NYfXsHSHAP", "type": "text", "x": 1140.0, "y": 364, "width": 135.85000000000002, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0046", "roundness": null, "seed": 33980686, "version": 1, "versionNonce": 204585954, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "heartbeat \u2192 TTL key", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "heartbeat \u2192 TTL key", "autoResize": true, "lineHeight": 1.25}, {"id": "FOFsYz0dpiuRScF18ew8", "type": "arrow", "x": 2280, "y": 450, "width": 1, "height": 110, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0047", "roundness": null, "seed": 1168533550, "version": 1, "versionNonce": 509249714, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [0, -110]], "startBinding": {"elementId": "74GWAU0aEF3cTm3YR4vL", "mode": "orbit", "fixedPoint": [0.8947368421052632, 0]}, "endBinding": {"elementId": "VGhkgMMxQ56AxrvieWoQ", "mode": "orbit", "fixedPoint": [0.8947368421052632, 1]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "6C2Rfyu0EaCuUJE46v4q", "type": "text", "x": 2290, "y": 370, "width": 278.85, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0048", "roundness": null, "seed": 1189560542, "version": 1, "versionNonce": 1461758669, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "8 ACK \u2192 delete inbox row, write receipt", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "8 ACK \u2192 delete inbox row, write receipt", "autoResize": true, "lineHeight": 1.25}, {"id": "WUVQl5uf76wZkhHHE7VY", "type": "arrow", "x": 1740, "y": 350, "width": 1, "height": 330, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0049", "roundness": null, "seed": 2011374262, "version": 1, "versionNonce": 940175633, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [0, 25], [45, 25], [45, 305], [0, 305], [0, 330]], "startBinding": {"elementId": "l9vRWo4MQwTmuR1JJeDm", "mode": "orbit", "fixedPoint": [0.9333333333333333, 1]}, "endBinding": {"elementId": "lSx6uNs0qLnON0pXuqpV", "mode": "orbit", "fixedPoint": [0.9333333333333333, 0]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "M3uvS6ZQNt5XE9nffSpi", "type": "text", "x": 1790, "y": 604, "width": 143.0, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0050", "roundness": null, "seed": 1101444080, "version": 1, "versionNonce": 1609838438, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "large group: enqueue", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "large group: enqueue", "autoResize": true, "lineHeight": 1.25}, {"id": "uMtdtyShvxxdvXMvPRPV", "type": "arrow", "x": 1760, "y": 732.0, "width": 220, "height": 182.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0051", "roundness": null, "seed": 1854094547, "version": 1, "versionNonce": 1402622768, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [220, -182.0]], "startBinding": {"elementId": "lSx6uNs0qLnON0pXuqpV", "mode": "orbit", "fixedPoint": [1, 0.5]}, "endBinding": {"elementId": "74GWAU0aEF3cTm3YR4vL", "mode": "orbit", "fixedPoint": [0.10526315789473684, 1]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "HtcvPp1eZg4yNC3NfS61", "type": "text", "x": 1780, "y": 706.0, "width": 85.80000000000001, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0052", "roundness": null, "seed": 1432587639, "version": 1, "versionNonce": 1960792400, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "N inbox rows", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "N inbox rows", "autoResize": true, "lineHeight": 1.25}, {"id": "5LBA4LZ7ptJrotgEIrd7", "type": "arrow", "x": 1610.0, "y": 164, "width": 1, "height": 76, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0053", "roundness": null, "seed": 671027573, "version": 1, "versionNonce": 251176112, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [0.0, 76]], "startBinding": {"elementId": "eMMDxCvylQ08xopbPiF1", "mode": "orbit", "fixedPoint": [0.5, 1]}, "endBinding": {"elementId": "l9vRWo4MQwTmuR1JJeDm", "mode": "orbit", "fixedPoint": [0.5, 0]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "dRMEv7PAqKbGNniKDQk0", "type": "text", "x": 1622.0, "y": 178, "width": 71.5, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0054", "roundness": null, "seed": 1311623449, "version": 1, "versionNonce": 1425813857, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "membership", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "membership", "autoResize": true, "lineHeight": 1.25}, {"id": "2OzTKaCUsxW16nNfuTJ9", "type": "arrow", "x": 570.0, "y": 680, "width": 1, "height": 336, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0055", "roundness": null, "seed": 1499303801, "version": 1, "versionNonce": 1832832641, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "points": [[0, 0], [0.0, -336]], "startBinding": {"elementId": "HJCkcuJzicZNM90WKzdI", "mode": "orbit", "fixedPoint": [0.5, 0]}, "endBinding": {"elementId": "DfykRv3Pk02xGlvJlMZi", "mode": "orbit", "fixedPoint": [0.5, 1]}, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false}, {"id": "l0msIXJVJ08lkz8ZaBni", "type": "text", "x": 582.0, "y": 384, "width": 171.60000000000002, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0056", "roundness": null, "seed": 889197102, "version": 1, "versionNonce": 1043632142, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "reconnect: since last id", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "reconnect: since last id", "autoResize": true, "lineHeight": 1.25}, {"id": "qQREmlPtef4AKXSePEfX", "type": "text", "x": 420, "y": 820, "width": 1640.1000000000001, "height": 35.0, "angle": 0, "strokeColor": "#b91c1c", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0057", "roundness": null, "seed": 290317571, "version": 1, "versionNonce": 168209883, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Failure / probes: gateway dies \u2192 its ring slice reconnects elsewhere, inboxes replay. Bus drops a publish \u2192 inbox row still there, delivered on reconnect. Push provider down \u2192 inbox holds until the socket returns.\nOrdering: server id per conversation for storage; render by sender_ts, clamp to server_ts \u00b1 window, mark late arrivals; dedupe retransmits on client_msg_id. Global order is the trap.", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Failure / probes: gateway dies \u2192 its ring slice reconnects elsewhere, inboxes replay. Bus drops a publish \u2192 inbox row still there, delivered on reconnect. Push provider down \u2192 inbox holds until the socket returns.\nOrdering: server id per conversation for storage; render by sender_ts, clamp to server_ts \u00b1 window, mark late arrivals; dedupe retransmits on client_msg_id. Global order is the trap.", "autoResize": true, "lineHeight": 1.25}, {"id": "RTez0r8PonD0rPdqkxxQ", "type": "text", "x": 420, "y": 885, "width": 2279.2000000000003, "height": 17.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0058", "roundness": null, "seed": 658083806, "version": 1, "versionNonce": 850098327, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Numbers to say: 1B msgs/day \u2192 11.5k/s avg, 35k/s peak \u00b7 10M sockets \u2248 10 gateways \u00b7 200 GB/day \u00b7 delivery < 1 s p99 \u00b7 presence TTL 2\u00d7 a 10\u201330 s heartbeat; last_seen per heartbeat would be 20M writes/s \u00b7 Redis Pub/Sub single-digit ms; Kafka topic-per-user \u2248 50 KB metadata each, 50 TB at 1B users.", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Numbers to say: 1B msgs/day \u2192 11.5k/s avg, 35k/s peak \u00b7 10M sockets \u2248 10 gateways \u00b7 200 GB/day \u00b7 delivery < 1 s p99 \u00b7 presence TTL 2\u00d7 a 10\u201330 s heartbeat; last_seen per heartbeat would be 20M writes/s \u00b7 Redis Pub/Sub single-digit ms; Kafka topic-per-user \u2248 50 KB metadata each, 50 TB at 1B users.", "autoResize": true, "lineHeight": 1.25}, {"id": "xkXK6wpeRpDHA8ZcIX6q", "type": "text", "x": 420, "y": 935, "width": 1701.7, "height": 17.5, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0059", "roundness": null, "seed": 1789626871, "version": 1, "versionNonce": 130956998, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Multi-device: inbox and receipts keyed by device; delivered = any device has it, read = any device opened it (say the product choice). Group: write once, inbox N times, workers above ~100 members, read receipts as counts.", "fontSize": 14, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Multi-device: inbox and receipts keyed by device; delivered = any device has it, read = any device opened it (say the product choice). Group: write once, inbox N times, workers above ~100 members, read receipts as counts.", "autoResize": true, "lineHeight": 1.25}, {"id": "iQtobm8xcZS872XTCGtR", "type": "text", "x": 420, "y": 985, "width": 52.800000000000004, "height": 20.0, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0060", "roundness": null, "seed": 993769700, "version": 1, "versionNonce": 947899049, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "Legend", "fontSize": 16, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Legend", "autoResize": true, "lineHeight": 1.25}, {"id": "IFvY1WLRORZw69uaWwL1", "type": "rectangle", "x": 420, "y": 1015, "width": 22, "height": 22, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#f3f4f6", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0061", "roundness": {"type": 3}, "seed": 713912113, "version": 1, "versionNonce": 996889373, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "TLpCqhykx7VPtYHkZ1Z1", "type": "text", "x": 450, "y": 1016, "width": 121.55000000000001, "height": 16.25, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0062", "roundness": null, "seed": 542615364, "version": 1, "versionNonce": 1902543317, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "clients / history", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "clients / history", "autoResize": true, "lineHeight": 1.25}, {"id": "UYdhghLrcGJmbXvlRmW3", "type": "rectangle", "x": 650, "y": 1015, "width": 22, "height": 22, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#dbeafe", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0063", "roundness": {"type": 3}, "seed": 1229337084, "version": 1, "versionNonce": 1927064584, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "eLdmWNB77byCXOMEMmf4", "type": "text", "x": 680, "y": 1016, "width": 100.10000000000001, "height": 16.25, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0064", "roundness": null, "seed": 1896951009, "version": 1, "versionNonce": 1213583745, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "gateways, push", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "gateways, push", "autoResize": true, "lineHeight": 1.25}, {"id": "Ta36JheUbFTowsEfKUft", "type": "rectangle", "x": 880, "y": 1015, "width": 22, "height": 22, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ffedd5", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0065", "roundness": {"type": 3}, "seed": 1156396705, "version": 1, "versionNonce": 2111741043, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "hpM7cOWI97dakABu4lfQ", "type": "text", "x": 910, "y": 1016, "width": 57.2, "height": 16.25, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0066", "roundness": null, "seed": 1185715120, "version": 1, "versionNonce": 419772471, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "services", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "services", "autoResize": true, "lineHeight": 1.25}, {"id": "gXZBA7AEmtmaSEMCDC65", "type": "rectangle", "x": 1110, "y": 1015, "width": 22, "height": 22, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#dcfce7", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0067", "roundness": {"type": 3}, "seed": 1271385871, "version": 1, "versionNonce": 249562812, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "lcUZurjRqKTo3CUPadTw", "type": "text", "x": 1140, "y": 1016, "width": 114.4, "height": 16.25, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0068", "roundness": null, "seed": 717211747, "version": 1, "versionNonce": 901368343, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "stores, presence", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "stores, presence", "autoResize": true, "lineHeight": 1.25}, {"id": "xQqjOcO4BFhtxPdz0fKx", "type": "rectangle", "x": 1340, "y": 1015, "width": 22, "height": 22, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "#ede9fe", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0069", "roundness": {"type": 3}, "seed": 654378318, "version": 1, "versionNonce": 110006027, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false}, {"id": "sfUMbEDOkCznUL1C4CwK", "type": "text", "x": 1370, "y": 1016, "width": 78.65, "height": 16.25, "angle": 0, "strokeColor": "#1e1e1e", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0070", "roundness": null, "seed": 1306310958, "version": 1, "versionNonce": 1633230849, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "fan-out bus", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "fan-out bus", "autoResize": true, "lineHeight": 1.25}, {"id": "LLzGVfIbCCJ9SJeD8XcT", "type": "text", "x": 1720, "y": 985, "width": 486.20000000000005, "height": 16.25, "angle": 0, "strokeColor": "#374151", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, "groupIds": [], "frameId": "T2IOB9h1ZgZNYnUfdBvr", "index": "a0071", "roundness": null, "seed": 384730737, "version": 1, "versionNonce": 334079042, "isDeleted": false, "boundElements": [], "updated": 1790734568256, "created": 1790734568256, "link": null, "locked": false, "text": "solid = the message path, numbered   dashed = ACKs, control, offline", "fontSize": 13, "baseFontSize": null, "fontFamily": 5, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "solid = the message path, numbered   dashed = ACKs, control, offline", "autoResize": true, "lineHeight": 1.25}], "appState": {"viewBackgroundColor": "#ffffff", "gridSize": null}, "files": {}}