<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Purge by Surrogate Key — Two Million Objects, One Record" id="16-surrogate-key-purge">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="860" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="n.rel" value="&lt;b&gt;Release engineer&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#08427b;strokeColor=#073b6f;fontColor=#ffffff;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="60" y="80" width="180" height="660" as="geometry" />
        </mxCell>
        <mxCell id="_plate1" value="" style="rounded=1;arcSize=22;html=1;fillColor=#ffffff;strokeColor=none;movable=0;resizable=0;connectable=0;" vertex="1" parent="n.rel">
          <mxGeometry x="5" y="13" width="32" height="32" 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+gvaeTAAACWklEQVRoge3Zz4tNYRzH8dfIrwmJGcZMIgpJEjZsiA1pLGhK2VDEcpLFWCkrG3tr/8GQHRNWipRhocxmombIaESNjDFj8XTrNHPunXueOfec2zTv+m7Ovd9z3p/uvec8z/eyRLm05Hy+lTiBbuzEFvzGKF6hH0M5XzMXVuAaRjAzTz3BwXI002nHc/OLJ2sKfSW4zqELw7LJJ+te4cYJWoXvdax8pa4WLV7hdp2C89UEthbsrh0/FyierPvF6nM9J/FK/cKqGJFlkQHORvZVYy2OxzTGBtgX2Zf7OWMDdET21aIzpik2wHRkXy3+xTTFBhiN7KvFSExTbIB3kX21eN+Ac1blknxvo9+xvMgA6zGWY4BS1kQ3ImVn1zjaCnZH+MifZpSdXdO4ULR4ko3Cjy9W/lbxynNZh0eyyU/gYhmytTiPD2qLT+EBtuV10bw39XAIZ7BLWHL8wWe8xmPhlrnEoiH2K7RfGI10YgMm8RBv6uhtRY+wfJ7CV3zCC/zIKpIlwBr04oowtErjozD3GRSmFePCTqsNe3EUJ4U712z+4hnuCmOaXOlW39Aqr+oXnjG5cFNYqxclX6kh7Fmo/OUSxJM1jM2x8oeFe3iZAWYwEBtgoAnkK3Uuq/yxJpBO1ttqotW2lD1ZEzeYA9id9kK1AKcb5xLNqbSDaQFasL2xLlHsSDuYFqBN+Kuo2ehKO5gWYHWDRWJJ9YqdCzUNizLAZOEW9ZHqlRZgTGNmnwtlMMube5X/9E3WN2zKEqAFdzTHYm5IWFhWFa1FB44o77nwBS+FrecSTcl/+F0YjmstwYwAAAAASUVORK5CYII=;" vertex="1" parent="n.rel">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.api" value="&lt;b&gt;Purge API&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="260" y="80" width="180" height="660" as="geometry" />
        </mxCell>
        <mxCell id="_ico3" 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+gvaeTAAACbklEQVRoge3YOWhUQRzH8c8mXlHUeIGK2iQqYirFThBBDCii4IHE1lasREQERS0CIgTBzkZsBEtBwcID4tGIKILEK9iI4oHGKBqTtZhdsiaz2WQ3+17zvvCD5e3se98ZZmf+88jIyMhIk8a0BSbAbizB27RFJkoTLiGPAWxOV2dirMFzQb6YD1icptR46UCf/+WLaU/RqyLTcVFc/C+OI5eaXQWW44G4/EdsTU+tMtvxWVz+HpampzY2jTiJQaPFh9CFqWnJVWIRbomP+jfsSU8tsBMLyny3Ce/F5R+jJQnBsdggyNzHtJLrORzGH3H5y5iZqGkZrhmWulC4NmfE9dL8wsHkNeOsFNbsUsEzeCMu/wJtqZiWoVNcNJarmJ2OZnlWCBvPWOIDOFrrg6rZkucKFeE6rBKWwvnC/H6CfcKavgU3xUv2d4V2j6p4flXksAM3hJEba2Q7S353pEybrqTEoRV3yojEMoS9hd/mhDkea7c/Cfk2fJqAfDF9hleVWXgaafNTmIZ1owmvqpAvpgfNhXu14mukzZV6duB0DfLFXEdD4X7b0C+Uy104gIX1kp+H75PQgTxOldw3sZcIxyZBvJhBdZ7rI8kJ8/e1UKe34HYNHchjWZIdaMZGw5vcoRrE83iWoPso2lXeuCrlbOLWBdYKp6Ja/wPrkxYnnKJq2QOKeZi0OMxAdxWysexK2F1O2B0nQ75bCi+gTkyCeB4/sDphd61CJVmr/IDhajRROqqQjY18KvJwbhyC5dKL88K7zUSZUvK5Ur3Sjy/C+aBXWGZ7cBcv6yE3HkauEg3CmbfIb+HgkZGRkZER5R9RIcQApZxutAAAAABJRU5ErkJggg==;" vertex="1" parent="n.api">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.ledger" value="&lt;b&gt;Ack ledger&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="460" y="80" width="180" height="660" 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.ledger">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.js" value="&lt;b&gt;JetStream core&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#4a3200;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="660" y="80" width="180" height="660" 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+gvaeTAAABIUlEQVRoge2WTWrCUBRGjz+F0g04aVyBQhchdAfdRbfQPXSoky5AKM6KCxEpHThwBUoHRVJ1EC2P16b3vUG8z3gPXHgJN3A+CMkHhnHZNLzrDLjSEPmDb2AJbEMfeAZ2ic1rTOJZAsL+fErSTefsv04pIDo1pYXUsQDauAFyNYtyRKe2cx4BT949TbbAUFvCMAzjf0L6Tx/oVC0SwRJ4D10eUHyPtVupOzlwdxSUqkSP9Fpqi8ILkAOkJv+LWpW5s6T2Ab5OYhHPj5dUncfAPXBbqU4cH8CbtoRhGEaB23U6wANwo+TiswEmwCL0gSn6VdmfuSTt/omz0KQnpCst1L4LJY8F0MYNsFazKGclLbh1+vEw15XpxJEDL9oShmFUzB4YGqve0UGgewAAAABJRU5ErkJggg==;" vertex="1" parent="n.js">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.leaf" value="&lt;b&gt;NATS leaf · each PoP&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#4a3200;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="860" y="80" width="180" height="660" as="geometry" />
        </mxCell>
        <mxCell id="_ico6" 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+gvaeTAAABIUlEQVRoge2WTWrCUBRGjz+F0g04aVyBQhchdAfdRbfQPXSoky5AKM6KCxEpHThwBUoHRVJ1EC2P16b3vUG8z3gPXHgJN3A+CMkHhnHZNLzrDLjSEPmDb2AJbEMfeAZ2ic1rTOJZAsL+fErSTefsv04pIDo1pYXUsQDauAFyNYtyRKe2cx4BT949TbbAUFvCMAzjf0L6Tx/oVC0SwRJ4D10eUHyPtVupOzlwdxSUqkSP9Fpqi8ILkAOkJv+LWpW5s6T2Ab5OYhHPj5dUncfAPXBbqU4cH8CbtoRhGEaB23U6wANwo+TiswEmwCL0gSn6VdmfuSTt/omz0KQnpCst1L4LJY8F0MYNsFazKGclLbh1+vEw15XpxJEDL9oShmFUzB4YGqve0UGgewAAAABJRU5ErkJggg==;" vertex="1" parent="n.leaf">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.agent" value="&lt;b&gt;PoP agent&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1070" y="80" width="180" height="660" 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+gvaeTAAACZklEQVRoge3YvWsUQRjH8U+iUYwKilEJFnZi0IAgCL5UajABbYJvBLW0Eey0iUJIGisLG0mjhaViYSUWsRJBlPgHCEYRAoLGoKKichZ7azbLnTd3t3tHZL8wXGbueZ55fszNPDOhoKCgoJ0syzF2L85iI17lOE8u9GAWpXIba2s2DTBiIfkSXuc1UWdOcdfU6GdGXgJaRiFgKdGBU5jCJ4s3abPtp2ij38CWPJLvxJ2Mk67WPmBf1gKutCj5uL3HhqyS78bnFgsILn4hm3ivHM/xfzAQYhQiYHOTiTRKb4hRiIB2HbVB8y75OpAWsA3HcQJ9Af7PMYiduIxvAT5PcRj9GMWPAJ/hck5DWFXN6DR+WTgFRsvjZ1Q+JWaxPhXjQhXbuL3B2pTPpSq2Mwmbr4nx6aSI5ApcVN8DZwpzqbF7NXweiY7kenzS7MLBuJMUsK7OQJUKTU8DPo0UrL8r38wmHsChRL8LEzV8jmF/or8S403kYHkTvp14iPt4hyPYETDfY9wVXRcGsb2JHJoSEPufrNOnS/TkzIT/rg4sOQoB7Sa5iUNKepproudlzFEcwDPR6RSzGlfLf0+IKmvMMPbUOe/3SoPjFpfyWleJEramYlwvj0+mxnsSPuliN1kl9kzCJnmVmMOm+IvkCozhLXaLflrTlVSmGBG9YWP6y599OJ8YTz6IzuFLoh9yabyFFZjHbVENCeZfK5BnmwlJLmQTl0IC5UDQvCEC6lquDAmaN0TAE3xsLpeGeJBlsBH81rrf/0vR0ZspQ3iRc+LzuKmOt0lHA0K6Rff4PIj/51pQUFCwRPgD+WIugx1oipIAAAAASUVORK5CYII=;" vertex="1" parent="n.agent">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.node" value="&lt;b&gt;Tag table · each node&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1270" y="80" width="180" height="660" as="geometry" />
        </mxCell>
        <mxCell id="_ico8" 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+gvaeTAAACBklEQVRoge2YzSsEYRzHP4gQubm4KEXcEA6Kg0Ip5eag/AVOxEFZFzm4uDkoDnJ0Vw5ykIODQlsc5KC25C1ved11mB098/TM7s7uM/PM1nzrqXn2+TV9Pj3Ps/PMQJQoUaKYTInULwOGgLb0tdc8AfvApfBbAzAh9K+AXeAlj/tnTA1wCKQKbF/AjHTvmFRzDXToFljWAC+2hSwSD0CnToEjzQKBS8QzgCSwlkaoJVQCB0BTerwCmAa+wyohC9wAdYq6pTwEApGQBdZc6lrzFEilocXMSeOPQLcugVWXusYCBHydCVkgDpQr6qYKFPBNQrWJN4FqoWYYeNYg4IuE29/oPbAHnANJTfC+SGR6DvjZYhJH3hvblIBqJhal8ZxmwqSASmLLq4RpgRQwL/DUA68KifYwCySBfoFpR1FzAVTaBaVC8bebWYApwfnyc6aoaQZ67I4ocOoTlNdUCNe/OdT8pwV4w/wyGhOYthXjCaDWzX4AeDcIvy6w1GJtWnH8Axh0gzctsYFzSa8o4EeywZuSkOEncR5bPMHb6cP69BE0/DjOt75PYNQrfFASvsL7LREIvCghP9aLBl63xKYJeF0SRuELlVDB/wQNb8erRKjg7eQqEUp4O9kkQg1vx02iKODtdAHHWOf3O2AWJzxYH8Rusc44J0BvkIC5pkpTTZQoUaIUSf4AcoJVVv3ahikAAAAASUVORK5CYII=;" vertex="1" parent="n.node">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_m9" value="1. purge tag price-list · mode expire" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.1394;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1394;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.rel" target="n.api">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m10" value="2. purge role · property budget 50/s" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.2000;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2364;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.api" target="n.api">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="430" y="210" />
              <mxPoint x="430" y="240" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m11" value="3. publish · wait for R3 quorum" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.2788;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2788;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.api" target="n.js">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m12" value="4. seq 88412 stored on 2 of 3 sites" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.3394;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3394;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.js" target="n.api">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m13" value="5. 202 · seq 88412 · status URL" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.4000;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4000;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.api" target="n.rel">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m14" value="6. mirror to 18 PoPs" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.4606;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4606;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.js" target="n.leaf">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m15" value="7. deliver 88412 in order" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.5212;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5212;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.leaf" target="n.agent">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m16" value="8. price-list expired at 19:00:02.114" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.5818;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5818;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.agent" target="n.node">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m17" value="9. on lookup: stored before tag time → stale" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.6424;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6788;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.node" target="n.node">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1440" y="510" />
              <mxPoint x="1440" y="530" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m18" value="10. ack LHR · applied through 88412" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.7212;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7212;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.agent" target="n.js">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m19" value="11. ack stream" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.7818;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7818;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.js" target="n.api">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m20" value="12. 17 of 18 PoPs in 1.4 s" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.8424;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8424;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.api" target="n.ledger">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m21" value="13. outcome · GRU pending, named" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.9030;exitDx=0;exitDy=0;entryX=0.5;entryY=0.9030;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.api" target="n.rel">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Purge by Surrogate Key — Two Million Objects, One Record" 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="1410" 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="1410" height="10" as="geometry" />
        </mxCell>
        <mxCell id="note" value="Nothing enumerates the two million objects. Each lookup compares its store time with the tag's time, so cost is the same for one object or millions." 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="790" width="1410" 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="810" width="1410" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Edge Platform   ·   date 2026-09" 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="820" width="1410" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
