<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Discord Bot Platform — Release and Environments" id="15-release-pipeline">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1700" pageHeight="470" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="_st1" value="Source" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-git" value="&lt;b&gt;Repository&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;trunk-based&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="40" y="150" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico2" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADLElEQVRoge3YT6hVVRTH8c97vjQyjVQESStCkEQQChV0GIqBg8AMI4IgUpyIRjNp0MgiB0YY4UghrYEURCQIWj2I6I8mBAlF+F9LB5mK9krvbbDvrdtxn3/3nXfOE/zC5vHO2nvt39rnrn3W3tyhWQZK9l+I57EY9+ICPsMu/FapsoqZiHdxE+1Iu4KXGlOXwyA+FheebJsa0pjJRsXEt3EDC5qRGWcQ5xQPoI09dQrMS+LF+Dry/Bd8gTWYkrD9gfuFYPJY2GmTcQbDnfGV8Yz4Kj/Ssa9Lsc/I8bsCP0TGjeAdYQEKMZhjT1vFmYm/SVoZPjdiv3iuTMQGfIUHcrQVYoH4Cl/Ftx2hSdu5DH9PSt+Kk+0bTBhtAAP4seCE3fZ2hb5eGG0AsLrEhJcxO8XPooxxsTfZxsEqAoA3C4gfwaoMH+tTxq3EPfgkYvu9qgAIyXUpRcQxLMsZ/0pk3HUMdewvR+w3la/XMpmCzxOTbFUs2Z6LCGxjr7A4sQ/m6SrFd3k/MUnRIm62UGqUSeLdeU7zvgNVcgb7SvRv4a28TnUGAJtxtmDfN3Akr1PdAZzHE/gpo09LEL9lrET0mwO93C2cHc4mfA1jSRlHdb+BLn9iu7D99rJTvPpNpakACFvv/MSzovnxL00GsBazev6/ge/KOhnK71I5A3gKOxLPPxUuB0pRRwD3YY7wc3kcT/vvQNSlhdf7cV5VAEPC8XMp5uIhPIiHhUItj63CIaYWktvol/hVuRKht1h7rS7hXZIB9Ct8v5J7fow6cqAlXDsex2Fhpzkk1EajpsoAruGAcJY9IZTCp4Ty4e8K5xk1sZ/QDkxtUlQRJuNVXPR/8dfwrIpPTlUzDz/LTswPcVdTArOYgZOK7S4fGIdvYqdyW+SaZmTGmSrcHJQJYLgRpSksFxf5nlCQHY3Y/sKkJsTGSLsKmdaxp91ez7rF0xiRdx5Iuxl7URC5NmJrZ4yrnZnK3+V8X6fAvDdwQSi6yrCrPyljx6PCSanI6h81jhK4l5XC1XmW+GPCQWbcMg8fuTUnLmObcHSsnX4++9PxmCD4vFDfj1Qp6g63E/8AKx6wsTVHQH0AAAAASUVORK5CYII=;" vertex="1" parent="n.r-git">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st3" value="Build" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="380" y="60" width="220" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-build" value="&lt;b&gt;Build &amp; Test&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;GitHub Actions&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="380" y="90" width="220" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico4" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,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;" vertex="1" parent="n.r-build">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.r-contract" value="&lt;b&gt;Protocol Contract Tests&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;opcodes, close codes&lt;/font&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;size=0.12;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#4a3c00;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="380" y="210" width="220" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico5" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADLElEQVRoge3YT6hVVRTH8c97vjQyjVQESStCkEQQChV0GIqBg8AMI4IgUpyIRjNp0MgiB0YY4UghrYEURCQIWj2I6I8mBAlF+F9LB5mK9krvbbDvrdtxn3/3nXfOE/zC5vHO2nvt39rnrn3W3tyhWQZK9l+I57EY9+ICPsMu/FapsoqZiHdxE+1Iu4KXGlOXwyA+FheebJsa0pjJRsXEt3EDC5qRGWcQ5xQPoI09dQrMS+LF+Dry/Bd8gTWYkrD9gfuFYPJY2GmTcQbDnfGV8Yz4Kj/Ssa9Lsc/I8bsCP0TGjeAdYQEKMZhjT1vFmYm/SVoZPjdiv3iuTMQGfIUHcrQVYoH4Cl/Ftx2hSdu5DH9PSt+Kk+0bTBhtAAP4seCE3fZ2hb5eGG0AsLrEhJcxO8XPooxxsTfZxsEqAoA3C4gfwaoMH+tTxq3EPfgkYvu9qgAIyXUpRcQxLMsZ/0pk3HUMdewvR+w3la/XMpmCzxOTbFUs2Z6LCGxjr7A4sQ/m6SrFd3k/MUnRIm62UGqUSeLdeU7zvgNVcgb7SvRv4a28TnUGAJtxtmDfN3Akr1PdAZzHE/gpo09LEL9lrET0mwO93C2cHc4mfA1jSRlHdb+BLn9iu7D99rJTvPpNpakACFvv/MSzovnxL00GsBazev6/ge/KOhnK71I5A3gKOxLPPxUuB0pRRwD3YY7wc3kcT/vvQNSlhdf7cV5VAEPC8XMp5uIhPIiHhUItj63CIaYWktvol/hVuRKht1h7rS7hXZIB9Ct8v5J7fow6cqAlXDsex2Fhpzkk1EajpsoAruGAcJY9IZTCp4Ty4e8K5xk1sZ/QDkxtUlQRJuNVXPR/8dfwrIpPTlUzDz/LTswPcVdTArOYgZOK7S4fGIdvYqdyW+SaZmTGmSrcHJQJYLgRpSksFxf5nlCQHY3Y/sKkJsTGSLsKmdaxp91ez7rF0xiRdx5Iuxl7URC5NmJrZ4yrnZnK3+V8X6fAvDdwQSi6yrCrPyljx6PCSanI6h81jhK4l5XC1XmW+GPCQWbcMg8fuTUnLmObcHSsnX4++9PxmCD4vFDfj1Qp6g63E/8AKx6wsTVHQH0AAAAASUVORK5CYII=;" vertex="1" parent="n.r-contract">
          <mxGeometry x="19" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st6" value="Stage" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="770" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-stage" value="&lt;b&gt;Staging Region&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;synthetic bots&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="770" y="150" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico7" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.r-stage">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st8" value="Canary" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="1110" y="60" width="200" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-can" value="&lt;b&gt;1 % of shards&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;drain-aware&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1110" y="90" width="200" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico9" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.r-can">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.r-gate" value="&lt;b&gt;Resume Success Gate&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;≥ 99.5 %&lt;/font&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;size=0.12;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#4a3c00;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1110" y="210" width="200" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico10" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADLElEQVRoge3YT6hVVRTH8c97vjQyjVQESStCkEQQChV0GIqBg8AMI4IgUpyIRjNp0MgiB0YY4UghrYEURCQIWj2I6I8mBAlF+F9LB5mK9krvbbDvrdtxn3/3nXfOE/zC5vHO2nvt39rnrn3W3tyhWQZK9l+I57EY9+ICPsMu/FapsoqZiHdxE+1Iu4KXGlOXwyA+FheebJsa0pjJRsXEt3EDC5qRGWcQ5xQPoI09dQrMS+LF+Dry/Bd8gTWYkrD9gfuFYPJY2GmTcQbDnfGV8Yz4Kj/Ssa9Lsc/I8bsCP0TGjeAdYQEKMZhjT1vFmYm/SVoZPjdiv3iuTMQGfIUHcrQVYoH4Cl/Ftx2hSdu5DH9PSt+Kk+0bTBhtAAP4seCE3fZ2hb5eGG0AsLrEhJcxO8XPooxxsTfZxsEqAoA3C4gfwaoMH+tTxq3EPfgkYvu9qgAIyXUpRcQxLMsZ/0pk3HUMdewvR+w3la/XMpmCzxOTbFUs2Z6LCGxjr7A4sQ/m6SrFd3k/MUnRIm62UGqUSeLdeU7zvgNVcgb7SvRv4a28TnUGAJtxtmDfN3Akr1PdAZzHE/gpo09LEL9lrET0mwO93C2cHc4mfA1jSRlHdb+BLn9iu7D99rJTvPpNpakACFvv/MSzovnxL00GsBazev6/ge/KOhnK71I5A3gKOxLPPxUuB0pRRwD3YY7wc3kcT/vvQNSlhdf7cV5VAEPC8XMp5uIhPIiHhUItj63CIaYWktvol/hVuRKht1h7rS7hXZIB9Ct8v5J7fow6cqAlXDsex2Fhpzkk1EajpsoAruGAcJY9IZTCp4Ty4e8K5xk1sZ/QDkxtUlQRJuNVXPR/8dfwrIpPTlUzDz/LTswPcVdTArOYgZOK7S4fGIdvYqdyW+SaZmTGmSrcHJQJYLgRpSksFxf5nlCQHY3Y/sKkJsTGSLsKmdaxp91ez7rF0xiRdx5Iuxl7URC5NmJrZ4yrnZnK3+V8X6fAvDdwQSi6yrCrPyljx6PCSanI6h81jhK4l5XC1XmW+GPCQWbcMg8fuTUnLmObcHSsnX4++9PxmCD4vFDfj1Qp6g63E/8AKx6wsTVHQH0AAAAASUVORK5CYII=;" vertex="1" parent="n.r-gate">
          <mxGeometry x="19" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st11" value="Roll out" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="1480" y="60" width="180" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-roll" value="&lt;b&gt;Region by region&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;node drain, 30 s&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1480" y="150" width="180" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico12" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.r-roll">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_spine13" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="220" y="190" as="sourcePoint" />
            <mxPoint x="370" y="190" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_spine14" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="610" y="190" as="sourcePoint" />
            <mxPoint x="760" y="190" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_spine15" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="950" y="190" as="sourcePoint" />
            <mxPoint x="1100" y="190" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_spine16" value="" style="html=1;endArrow=block;endFill=1;strokeColor=#b8c4d0;strokeWidth=2;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="1320" y="190" as="sourcePoint" />
            <mxPoint x="1470" y="190" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_e17" value="roll back" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;dashed=1;endArrow=block;endFill=1;strokeColor=#b85450;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-gate" target="n.r-build">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1210" y="330" />
              <mxPoint x="490" y="330" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="title" value="Discord Bot Platform — Release and Environments" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=20;fontStyle=1;fontColor=#16202c;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1610" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#c9d3de;" vertex="1" parent="1">
          <mxGeometry x="40" y="50" width="1610" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg18" value="" style="rounded=1;arcSize=30;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
          <mxGeometry x="40" y="380" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg19" value="Application we own" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="70" y="370" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg20" value="" style="rounded=1;arcSize=30;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
          <mxGeometry x="200" y="380" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg21" value="Decision point" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="230" y="370" width="90" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg22" value="" style="html=1;endArrow=none;dashed=1;strokeColor=#b85450;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="340" y="380" as="sourcePoint" />
            <mxPoint x="360" y="380" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg23" value="failure / alternate" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="370" y="370" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="note" value="A Gateway release drains a node by telling bots to reconnect with jitter; it never kills a socket cold." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="400" width="1610" height="20" as="geometry" />
        </mxCell>
        <mxCell id="foot-rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#e3e9ef;" vertex="1" parent="1">
          <mxGeometry x="40" y="420" width="1610" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Integration Platform Architecture   ·   date 2026-10" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="440" width="1610" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
