<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Feed Read — Critical Flow" id="14-feed-read-sequence">
    <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="950" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="n.q-mem" value="&lt;b&gt;Member app&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="150" height="750" 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.q-mem">
          <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+gvaeTAAABfElEQVRoge2aO0sDQRSFP5/YGBXRgI3gD7AWLMTaQmwkWtlYWQi29nY21jaCgkbwJ4hlSh+FYGdlakFQhMRCA9khwbnz8Aq5H0yxy5w757C7U8xdMHTpC9BUgC1gFhhO5OMNuAUOgbtENTtyBDQzjndgJZf5pczmW6MOjPia6hcEWBPMjaEMLPpOHhQUnnKur4F94FNQo1vdU2Cy7d60r1gSwKUK1CL07dQovvvem4vkFXJpRmhdGqHCmAD/AgugjQXQxgJoYwG0sQDaWABtLIA2FkAbC6CNBdDGAmjT0wGGkrmIOKaPOVrcA0pEnKr9MAYsh4pjAswBBxH6JPT0N/AbV8A6sA08ZlzHmzP8uywnjrYEPAv0m76mcj2BY+f6FbjIsVCuAJ02h1QdzQKSAJJW0i7FLksZ2BDoP3wnSrbRe8HcVeAGOAfGgR0EfS/hWt5MAC/kb7NWc5hvMc/3lpjL/CUwKjEU8qvBALAAzARou9EAHoCnhDWNP+ELqDOX6u+2/68AAAAASUVORK5CYII=;" vertex="1" parent="n.q-mem">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.q-api" value="&lt;b&gt;API layer&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="230" y="80" width="150" height="750" 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+gvaeTAAABzklEQVRoge2Yu0oDQRSGP41aiBZeOgsDBgSxEbTxAXwAK0EsxFIrC7ESCzvBh7AUGwkWYmMjImgpIjZaiFEQBYlExcRikhA3iTtzsrOTwHwwzbLn7P/vXM5hwNOadAEbwBmwD4wJciwCJ8ARMBOZMk12gELFeAYGDOLnA/HfwGTEGv8lExBQAOYM4g9rxG9LhLRLgoD+Gs8GG4w3mcEyUgNNgzfgGm/ANS1voEMY9wp0Bp7lDOLfizkq+RBq8TilTeOdKSBpWUct8sApqm0RM11MFOxb4hq3YQLDTqFR9GbJFimqD4s/tPwxGmYgH4uK+pSWkpgk8Ii7PbDXiPgSCaAPSMcofAHo1RGnswd+UFXzSydhRGRR1TqUZt3E2uvexMCbQIiUYJ9UFxMDTwIhUrSrr4mBG4EQCTng3kbiIeJpK45NRJnMwANwaZJcSNpm8jns/v0XoMemgQRwZdHAuk3xJSaATwviLwjpPKNkJWLxGVTrHCtrEQgvoG62x2PWXmYWtfGk4s+BkdhVBxgGdlF3/CZLZhX5tY4VUsAmqlbUKnhZ4ABYArrdSNTnjmoDWzY+1KzttDbegGu8Add4A66xVQmXqS5W15a+5XHKLz1EPuwFhf5TAAAAAElFTkSuQmCC;" vertex="1" parent="n.q-api">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.q-brk" value="&lt;b&gt;Feed broker&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="410" y="80" width="150" height="750" 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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADa0lEQVRoge3ZX4xdUxQG8N/M1FRVUxXRqvofCYkh4oGkQYIXIaEP/sVDPTReyUhIiESC4AFp9IVEhYQIEn/Cm0RICBUVrapoU+bBmGKURieE6XjYc+qm9l7n3Dv3ziXmS9bD7LO/db7v7nPWWXsPC1jA/xtDhfEjsAZ/zMa/FgOZsSF8ipHZv6fwA3bjM2zDVnyOmXnQ2DZOlITVxTg243os7YvSAtZoZqA19uM5XNEHvf9AJwZa4yNcNe+qWzBXA1Vs0acVWS5Vnm6YmMELWNUrsbky+ju+mDWxV6pCi3Fkh/cYwQZMSFWsbzgV1+IRqZR2shqbsWSedRdxEu7EV9ozsQ2n90FvEQO4DO9obmIc5/VDbB0ulapPExP7cEl/ZMYYxK34Rb2JA1jbbQEDeEX6hb6UHo0ncAvOaCPPKfhQvYkfcXZ3pCesqrnhTjyo2Ys4jI0NTIxhZbcMNP0ST+MtXNgg5204WJPvbeX2vicGWuN16TsR4Wb8WZPnvn4ZmMGvuF1+j1Fhg3glpnXhpT6uQwNVvIZjgvz31PC3SzvCOeHe2UT7OjSxQ1rJHKoqF/HvmquBVqzGOjyF79swMaZcqZZjV8A9oEcd7DBu0ryZ26VcHtdKz3yJ+1gvDFQYxHpps19nYovUjufwZMCb0sN9RIWVeD8QUcWmAn8FJgPewz3UfgiL8WwgooqrC/yoKk3oQkVqggH1LcMeHJXhLpP6oRJvXY+1H8IQ3gyEzODuAvehgPNGN8Qdi5OVX8YKy/x9YpeLSamEHo4zlb/QU+awDb1R2oi3JnsepwWc88WnGqMF3rsB58pOxD8aJJzEBQF3U8DdKd8vjQacje2Kvy5IVsXXykctJ0irVeLmWvCzgvlb2zXQdF+7PsjxTMC7v8AZK8z/TRvldIn6zUcVTwd5Lg54Hxc4rwacc3KEwczYUnFP34qjg2sfSK1GDufKV7To5G4kN5gz8JPURjfB7uDaNN4rXBsuCNoR5FudG8wZOIiXgkSt816smfNJcC13wvFdMP/43GDOAGlvOh4kI5XK7TVz9gTXcr/o3mB+WwYmcLn8kh7E47gjuFmF6BFblBn7Vvmfitn3su5lXYRrpCPAFbOCXpY+Rk0xiosOGxuXVvnnzPwbpFPw1iOW/XgA37Rx3wUsYAH/BfwFNLpMtfNxPxIAAAAASUVORK5CYII=;" vertex="1" parent="n.q-brk">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.q-inb" value="&lt;b&gt;Feed inbox&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="590" y="80" width="150" height="750" 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+gvaeTAAAB00lEQVRoge2Yu0oDQRSGv8QLgsFbBEtBrOxEEGvRUiGlGLCy9IaVnYWID2DjC0T0BSxsrNRKEpCgiK02io03SEgslg1hmN3M7E52VOaDA8twOOc/zL87k4DD4XA4HH+YlGZ+D7AMTAJdhrW8AidAyXDdBv3ADVBvY1SB1XYNcNxm8X5UgCnT4hcTEu9HCehWEdahkJMFzoCMSkFDjAA14KJVospLXACWhLUvIAe86CoLYA1YEdYqwDRQjFM4yDrbcYpK6AUeJX2UrSQjCzxLil6hZj1dZvFsI/bbjVqwICn2DUzEFBrGkaRnpK9SUtYRCbJSEQ0rJW0dkdhWsmEdkchWsmUdkUhWCrLOJclYR2QeBSs1H2T7wI5QpA7kgfsWze6AD02B43gXxDAOgDlh7RMYRXKIXhP97rKnKX4AeIvRb8EvlG4q2qcpopkNYFgjfxNviKg0di4dlqVBBm8I1ebrhvoaGwA8UUMKeVvAoKmmnaYK4VnwkPArcAr1ndKmTLI/WuJE3hdt0kJWcAPY5l8NULWmQp+K/9A8QNmCkKjcyhZn8HbB9ieyVZwT8m9KDnj6BSJlUQVO8a79DYImGcPgcW+AGvAAvNsW4nA4HA6HUX4AbMBmUCUGFGQAAAAASUVORK5CYII=;" vertex="1" parent="n.q-inb">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.q-ff" value="&lt;b&gt;FollowFeed&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="760" y="80" width="150" height="750" 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+gvaeTAAADa0lEQVRoge3ZX4xdUxQG8N/M1FRVUxXRqvofCYkh4oGkQYIXIaEP/sVDPTReyUhIiESC4AFp9IVEhYQIEn/Cm0RICBUVrapoU+bBmGKURieE6XjYc+qm9l7n3Dv3ziXmS9bD7LO/db7v7nPWWXsPC1jA/xtDhfEjsAZ/zMa/FgOZsSF8ipHZv6fwA3bjM2zDVnyOmXnQ2DZOlITVxTg243os7YvSAtZoZqA19uM5XNEHvf9AJwZa4yNcNe+qWzBXA1Vs0acVWS5Vnm6YmMELWNUrsbky+ju+mDWxV6pCi3Fkh/cYwQZMSFWsbzgV1+IRqZR2shqbsWSedRdxEu7EV9ozsQ2n90FvEQO4DO9obmIc5/VDbB0ulapPExP7cEl/ZMYYxK34Rb2JA1jbbQEDeEX6hb6UHo0ncAvOaCPPKfhQvYkfcXZ3pCesqrnhTjyo2Ys4jI0NTIxhZbcMNP0ST+MtXNgg5204WJPvbeX2vicGWuN16TsR4Wb8WZPnvn4ZmMGvuF1+j1Fhg3glpnXhpT6uQwNVvIZjgvz31PC3SzvCOeHe2UT7OjSxQ1rJHKoqF/HvmquBVqzGOjyF79swMaZcqZZjV8A9oEcd7DBu0ryZ26VcHtdKz3yJ+1gvDFQYxHpps19nYovUjufwZMCb0sN9RIWVeD8QUcWmAn8FJgPewz3UfgiL8WwgooqrC/yoKk3oQkVqggH1LcMeHJXhLpP6oRJvXY+1H8IQ3gyEzODuAvehgPNGN8Qdi5OVX8YKy/x9YpeLSamEHo4zlb/QU+awDb1R2oi3JnsepwWc88WnGqMF3rsB58pOxD8aJJzEBQF3U8DdKd8vjQacje2Kvy5IVsXXykctJ0irVeLmWvCzgvlb2zXQdF+7PsjxTMC7v8AZK8z/TRvldIn6zUcVTwd5Lg54Hxc4rwacc3KEwczYUnFP34qjg2sfSK1GDufKV7To5G4kN5gz8JPURjfB7uDaNN4rXBsuCNoR5FudG8wZOIiXgkSt816smfNJcC13wvFdMP/43GDOAGlvOh4kI5XK7TVz9gTXcr/o3mB+WwYmcLn8kh7E47gjuFmF6BFblBn7Vvmfitn3su5lXYRrpCPAFbOCXpY+Rk0xiosOGxuXVvnnzPwbpFPw1iOW/XgA37Rx3wUsYAH/BfwFNLpMtfNxPxIAAAAASUVORK5CYII=;" vertex="1" parent="n.q-ff">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.q-cand" value="&lt;b&gt;Recs + ads&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="940" y="80" width="150" height="750" 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+gvaeTAAACqElEQVRoge3ZS8hMYRzH8Y8X5b5AcilKEguvCG9v2YiVhSyEoiyUBUouG7KQpJREWUrIAgtlw0aKJAuRUopcSmzc5X55x+IYnqZzZs48M3PeKfOt05zznP//zO935jnPeZ7/0KHD/83ABvMHYC4WYwZe4lOV+C70Ygkm4D0+N6ghmhm4gVKwfcM+6TdmFu5WxH/EbsmNKJRJeFYhJtwOVcRPwasq8XsLUR1wpIqYEn5iehB/skb8d8lNaSnTcBjXJf22mqAStgW5b3LEP8YFrMOgZotfgS85RITbwT+5Q+rMK+EqRjZL/PQI8eFzMCwityTpdjXpyhGzRXIXi2YtJtYKymNgQeNaoujC/DxBtfjZuJZoftUKqGZgKPZgdrPURLAHPTGJg3FJ3MPXrIc4fEcsrdfAgQa/tJkGSpIpx/g0oWldaDQ21uu4xQzH1rQTaQYWYERL5cSxKK0xzcCUFguJZWpaY5qB1y0WEsurtMY0A9fwo7VaoriS1phmYJ5k6Go3JmNUraDV6NP4sNfsYbS83f5zvb+Ev8AEHNMPy7s6mIP9YUNoYINkvG131gu6Umigt3gtUYxAd/kgNDC2eC3RjCvvhAaeFq8jmkflndDA5X4QEsML3C8fhAZOSGo97c4BwXsqNPBVMu9+W7SiOjiNo7WCpml8MdPsF9k7bFZHLXdumxm4mCU0a03cl9dpQWTqyTLwQD+WvVO4k3Uiy8BnnGqNlrr5huNZJ6uVVXYKxtsI+io+Y9mOJ7HJY3BG3BR7e3CdtxH5z7EyVnglE7Eca3Avp4DuIP9szpy9kproQi0osZdZlkPIuYqcbsmLstZiJU+psynskN2trktf+q2SbeKhAv6hqaQH5yWz2I+4iU2SsmQWM/2bc33ALezSnnWoDh06FMFv2cmnWPAP1s4AAAAASUVORK5CYII=;" vertex="1" parent="n.q-cand">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.q-feat" value="&lt;b&gt;Features&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="1120" y="80" width="150" height="750" 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+gvaeTAAADm0lEQVRoge3YS2gdVRwG8F+i1SZilYqvSqVqViKIigoivsjWd+tCRaQFV4JCF6KCpOLCheADBSOKbwRxoZaiUnyCq1pDLbQK1qrVtqK2pY00SZPGxZlL5k7O3DuP5DaF+8Ef7p0553++b+ac//nO0EUXXcwnzsJJx5pEWVyAIezANMbxEW63gMX0YRU24qhAPBb7MIxrjw3NZvTgeryBQ+KEt7W4twUPC9Os47jTzBTJxt94DpclbU/BffgCU5H2E3gHZ3SK/A0RIhP4ELdpPc9X4Alx8V/OF+Es3lJ/GvTgOryueYoNlCXTW7aDZrL9WJQMXmXsxZrf2DkV8pTGp2a//nG8j0Hh6ebhNDyAHyI5pnWoOsUEpONHPKJ5UV4hlM/RNn0XhIBG/Ie3MZJz/w88io8XqoC8+E4oq4uSfG/WEXBidR2lMIVP8DS+ncvEnRIwiK/mI3GVMloFB+crcacELAisEGzAP8ov3Msj+ZZgDX5JtfsMt5pZ4LWxWLDJ6zFZgXhWQK9QaYblu9TatjvtUw7mDPCbuLPMi7vwZNIvdv8vYd+I3RvBQzizCPl75Nvkf/EirkzaLsdj+KmEkHSM4QPcLFTDU7Ea34gfiibwHpblkV8Z6XREmD4rcXIL4dfgFRwoQHwTHtTa/1+Edfg10n+rnPL/eabRWuXdYR/uFhZjeortwTO4pGS+Xtwk7NZpH3VjukED56Z+78Nu7C854GHsEk5lk6nrhwQRe0rmO4rfhTUylroenUbbzH5d+4VqcHGbgZYINnlLJEd23hex3SckbdaLr4d7iwpoxJTwxWGV5hpd1CbHYrtgu5em8i1LruVVq8oC0vEnnsXmnPt78Ti+L5hvFK/J32sO42XNR9laAvLiZ6Fe9yX5vq6Z7wCeNzPf18UEzIUb3YwX8K4w1epip0D8VWFza4m6AgaF8jtXGMJTSjyIum50pGb/LLYq+RaPezudFjAxh3kHcN4c5jsdl6b+j8caDStfKZZmcgwIH3uPVMg1jTsixIeEDbXRZlI4m8zC2cLmUkVAHvFWn9pbCYgRnxbWx9oY+Qb6kgZ7Cw54VQ7xMbyE8xNS7SxGI1bnEJ/GBjNWvi36CwrJHmoaxJdn8vUUFBI7JG1IHlQl9Au76+42A48LW/2FbfL1CAeYPBuSjo24uirxokKKEs+ilZBSxFtZ2hj6cX8ywE7BhO0qmSM7/i2CmFHBjmyqka+LLro43vA/6PZqTf9GQz8AAAAASUVORK5CYII=;" vertex="1" parent="n.q-feat">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.q-cont" value="&lt;b&gt;Content&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="1290" y="80" width="150" height="750" 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+gvaeTAAAB5klEQVRoge3YsYtTQRDH8Y+nZ0RsRO9EUBCDVwlXKVZW/gNXiBa2FoqNhf+AIKilWltaWAqCtlrZiqeojSJ4KAqCdl7uLN6Lt5e85O3G5JLgfmFgyZshv8nO7kwemUwmk8lMMdtqnjdxGXu2QEsMLTwuLYq3WJ8wa+F4W+CODsGHMV+uG1iIzXQLmcEiXrE5gUu4VzpMOn9LPxR70XSI30S4A7si/H/iLL6NRk4Xs7iF0zHOr20clPe4ovsAPR+JzP5crdBxof2wV8ms4H7F5+vDVvevTF3Nd5KawAIOjkJIDxo41c+hsw/UcQCfB5YzAv67Epo4pj6B1DMAH/A9wf8o9pbrFl5iLTJ2VjG4Rf3QYSN7ht26G8g79SN4J80g/lpiLNyu0FHbyHoxIz2BcJe3J8bWxqSWUBMf8SUh5liwvoHzWI2MbQhm/yoGOQOHShuE9iw/NKb+FsoJjJvUBFYwp7iJYu1MEH9Xce5iY3fiwTAT+Cr939hysH6jaGax/Fb0np6k3kKLeKTYiVhOBuvrOFEKi6GBpdgvemGj0/3AHf3fz4zTzlUlcHMChMVaZXObw6cJEFdnT/UZZ47giWJaHLfQTlvFQ+wLBffKZL9iXBhk+BoFa4pXPb/GLSSTyWQymaHyBx2kEBDRuKDPAAAAAElFTkSuQmCC;" vertex="1" parent="n.q-cont">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_m10" value="1. GET /v1/feed?cursor" 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.1227;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1227;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-mem" target="n.q-api">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m11" value="2. session to member context" 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.1760;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2080;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.q-api" target="n.q-api">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="390" y="210" />
              <mxPoint x="390" y="240" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m12" value="3. feed page for member" 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.2453;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2453;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-api" target="n.q-brk">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m13" value="4. inbox entries" 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.2987;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2987;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-brk" target="n.q-inb">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m14" value="5. high-degree timelines" 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.3520;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3520;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-brk" target="n.q-ff">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m15" value="6. top-k per shard (FPR)" 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.4053;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4053;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-ff" target="n.q-brk">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m16" value="7. recommended + ad candidates" 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.4587;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4587;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-brk" target="n.q-cand">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m17" value="8. timeout: drop, not fail" 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;dashed=1;strokeColor=#b85450;fontColor=#b85450;exitX=0.5;exitY=0.5120;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5120;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-cand" target="n.q-brk">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m18" value="9. member + item features" 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.5653;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5653;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-brk" target="n.q-feat">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m19" value="10. second-pass rank" 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.6187;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6507;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.q-brk" target="n.q-brk">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="570" y="550" />
              <mxPoint x="570" y="570" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m20" value="11. dedupe · diversity · ad slots" 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.6880;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7200;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.q-brk" target="n.q-brk">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="570" y="600" />
              <mxPoint x="570" y="620" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m21" value="12. decorate URNs" 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.7573;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7573;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-brk" target="n.q-cont">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m22" value="13. hydrated, privacy-checked" 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.8107;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8107;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-cont" target="n.q-brk">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m23" value="14. ranked page + cursor" 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.8640;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8640;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-brk" target="n.q-api">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m24" value="15. 200 · p95 ≤ 300 ms" 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.9173;exitDx=0;exitDy=0;entryX=0.5;entryY=0.9173;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.q-api" target="n.q-mem">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Feed Read — Critical Flow" 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="Inbox and feature returns are omitted; every call carries its own deadline inside the 300 ms budget." 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="880" 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="900" width="1410" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Feed Engineering   ·   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="910" width="1410" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
