<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Identity Flow — Seat, Policy and Repository Permission" id="21-identity-seat-and-policy">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1780" pageHeight="940" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="n.dev" value="&lt;b&gt;Developer&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="190" height="740" 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.dev">
          <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,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;" vertex="1" parent="n.dev">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.plug" value="&lt;b&gt;Editor plugin&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="270" y="80" width="190" height="740" 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+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.plug">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.entra" value="&lt;b&gt;Microsoft Entra ID&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=#e1d5e7;strokeColor=#9673a6;fontColor=#3a2b44;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="480" y="80" width="190" height="740" 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.entra">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.edge" value="&lt;b&gt;Edge authoriser&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="690" y="80" width="190" height="740" 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+gvaeTAAABzklEQVRoge3XsYsUMRjG4efURgQbQQ4OxSu2EEEEwVo7Qey8VlGxFnv/BnsFCy0Ee7sDRXsrUQQREexszgOFc3HXIg7sjJPc3TK7k4H8IEXyzYT3JfnyJRQKhUKhznEc6FvEPBzBa0zxEaN+5eyf64L4qn2zBxM5LdWxRn8Nb3A69VNOBtpYxUsJE7kbYBcTh1rGjuLgIhVFOJyIrWITl/Ap9tF5fFZPpNxaMrE3MxC4l/ZV2CWo58BazFlmnMTFqjNr4OfSpczHb7yvOrMGHgtLlDMT3BFyFaw0PjinvxJ+BTcS8Qlu4uly5Oyfe+KJ+0fE3BAK2QS38KQtmLuBpHjaK3Ff7DT6ne75q/iAt7jQxYQtrOOHsOfHwvW6Ezb+TVgl1LuuJm7hFG7jbFcTNsVPDafguSZUveaRNggDMfGDMJASn52B5lViA8+kj9cpvixMUZotPMLDtuBl/ydsjm0i3NlQr8T35VXYYqzgTNWZNfB9+VrmZtw2uC68OfveIru1bTOvx2YSj/BK+nk5xoNEfJHs4LlwrYkykl6JrI7RGCkTgzBA3MRgDNBuYrtXRXPQNPGiXzl1mqdQjBO4i1/CCbS1MEWFQqFQWCZ/AdclH6RcD+9yAAAAAElFTkSuQmCC;" vertex="1" parent="n.edge">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.cache" value="&lt;b&gt;Policy cache&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="900" y="80" width="190" height="740" 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+gvaeTAAADIUlEQVRoge3aTWwVVRjG8V9LkW+kwYDY6kLxC5QNJEIMECEGNSa6MCaGHStXrtyqxI0xJLCCDTGBBRuCiSQuTIgxhAUsABP5SAQlCFhlYaB82AqNdfFO06E9U+5M7+29rf0nbyY9M3Pmee85M/Ocd8o0zaVtHOfOwoosuvBEFp2YjTnZMf9kx9/AAK7jGv7ErziHK1VFlEmgE5vwOtbjOXRUvfAIbuI0vscRnMK/9ei4TQg+KH7JwQmKK/hMjGxlVuCHCRSdir/xqZiKpXgFt5osPh9HxH01ihkFbSfwWNmsG8jT6MexkTvaEwcvFU+TVmN1qjGVQKqtFUjqalWxNTMlE7gt7vxWo7fMwV9p/qMzH31YWyaBDuxrAeGD+AtvlRGfZzOON0n4HezG4qri86zCTpxvsOi7+A4fYmFVsV3Yj2UF+7vxAb7At7ikmtG7IVznfnyM1xTYBbyNHakdKTvdjavixjmAPfixoOM8S8RbfEnW76Jc//1Zf/1iHfB79vdYzMF7+AhrcBjv1qBDt9G/1gV8iS1YUEsnFVmObTgkplNewzepE8YagSIGREIXcBG/ZNurYmHSl108da1FmCsWR89msTzbvihGsIjkCFRZUXUYXkqORa9IZpaYDkXze1zUa0mY4tEsGsqU9EKTilQCdakGNICkrlQC19HTWC2VOF3m4LWGbXUrROGifixewtEmC+/D9irih2jDG/ga9yZQ+DV8jieriF6A5xPti/E+9uJn8Uaul+BbYrQ/wTqjyz3tCqoSRVbikjBxu/BbQaJzxdt4ZXbO49l2vmEj1+lBI3dXPCT+EA+Ky/gp2w4mrtGON0WZsUcFMzcgTNRWE/BWzfGyKClezGlJmrmHWYkZeCeL+zgpqmMnDRu5O+MU2yXM3At4FRvwVK0nl/FCM8X8XDeivUckc1lMlV4xVfrE3J4pptVCYermibLlM8KJziuhYRT1MHNDHzY21qGv0kxJLzSpmJIJTJcWGxDTpcVmCP9/lBarfKnvFh+6VwnPMvSl/pGS/dwUpvEszogy43Fh+mpmPP9qMJJ6lxanmRT8B1M0bJ9FjBNdAAAAAElFTkSuQmCC;" vertex="1" parent="n.cache">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.sql" value="&lt;b&gt;Policy store&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="1110" y="80" width="190" height="740" 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+gvaeTAAADIUlEQVRoge3aTWwVVRjG8V9LkW+kwYDY6kLxC5QNJEIMECEGNSa6MCaGHStXrtyqxI0xJLCCDTGBBRuCiSQuTIgxhAUsABP5SAQlCFhlYaB82AqNdfFO06E9U+5M7+29rf0nbyY9M3Pmee85M/Ocd8o0zaVtHOfOwoosuvBEFp2YjTnZMf9kx9/AAK7jGv7ErziHK1VFlEmgE5vwOtbjOXRUvfAIbuI0vscRnMK/9ei4TQg+KH7JwQmKK/hMjGxlVuCHCRSdir/xqZiKpXgFt5osPh9HxH01ihkFbSfwWNmsG8jT6MexkTvaEwcvFU+TVmN1qjGVQKqtFUjqalWxNTMlE7gt7vxWo7fMwV9p/qMzH31YWyaBDuxrAeGD+AtvlRGfZzOON0n4HezG4qri86zCTpxvsOi7+A4fYmFVsV3Yj2UF+7vxAb7At7ikmtG7IVznfnyM1xTYBbyNHakdKTvdjavixjmAPfixoOM8S8RbfEnW76Jc//1Zf/1iHfB79vdYzMF7+AhrcBjv1qBDt9G/1gV8iS1YUEsnFVmObTgkplNewzepE8YagSIGREIXcBG/ZNurYmHSl108da1FmCsWR89msTzbvihGsIjkCFRZUXUYXkqORa9IZpaYDkXze1zUa0mY4tEsGsqU9EKTilQCdakGNICkrlQC19HTWC2VOF3m4LWGbXUrROGifixewtEmC+/D9irih2jDG/ga9yZQ+DV8jieriF6A5xPti/E+9uJn8Uaul+BbYrQ/wTqjyz3tCqoSRVbikjBxu/BbQaJzxdt4ZXbO49l2vmEj1+lBI3dXPCT+EA+Ky/gp2w4mrtGON0WZsUcFMzcgTNRWE/BWzfGyKClezGlJmrmHWYkZeCeL+zgpqmMnDRu5O+MU2yXM3At4FRvwVK0nl/FCM8X8XDeivUckc1lMlV4xVfrE3J4pptVCYermibLlM8KJziuhYRT1MHNDHzY21qGv0kxJLzSpmJIJTJcWGxDTpcVmCP9/lBarfKnvFh+6VwnPMvSl/pGS/dwUpvEszogy43Fh+mpmPP9qMJJ6lxanmRT8B1M0bJ9FjBNdAAAAAElFTkSuQmCC;" vertex="1" parent="n.sql">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.ret" value="&lt;b&gt;Retrieval service&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="1330" y="80" width="190" height="740" 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+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.ret">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.scm" value="&lt;b&gt;Source hosting&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=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1540" y="80" width="190" height="740" 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+gvaeTAAAB40lEQVRoge3Yz6sOURzH8dfjXlfuQkoW6ooiIUk2imRna+kvYCMLUlIsWNhYKFtZKUp3y80/YGOHKD+6RCGJErnyazF3MsbM85z73HnmTDnv+tQ0c2bm8znnzJyZL4lEIpH4n+k1dJ21mMJKfMFjvG7o2iNjChfwFL8q9ARnsTqWwTrGcE7W01XGy/qEo5ob7UWxAjPCjJd1DRPtW/7DOG4bznyuqyKOxPkAgyE6jD24IXtOPmMWV7B9VObX4WtDAb73OfYDZ4xglC41ZD5UJ5s038PLlgPMYUOIuSUBbTbJ3vltMoFDIQ1DArRtPmdvSKOQALFW0kXfdxlO4IV253+uOyEmx2v2b8U0tgTHbZ57w564Ex/E6fWynuE4loeaX4VXHTBe1kNsCwlwuQNm6/RuUIg1+NYBo/30SGk6FV+jB7G0X8IOsBlH6g5Oi9/DIZotmi6OQKwVd6Gsl33e4O8AUf+WFsjGfKMYoPNVhAKT+UYxwIMIRoblTdXO3eI/oCGakxUX/qGHux0wOEg3q8zn7JP9l8Y2Waef2NUvAJzqgNE6XRxknmwqnZ5PG9twUdfVf/5Xsh/3O2D8I46pKbUMqr+MzQc5gB2y1Xqy7xnN8BbPcUtWknzfwj0TiUQikWif37lJeEKjXHZHAAAAAElFTkSuQmCC;" vertex="1" parent="n.scm">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_m10" value="1. signs in once" 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.1243;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1243;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.dev" target="n.plug">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m11" value="2. OIDC device code" 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.1784;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1784;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.plug" target="n.entra">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m12" value="3. token, 60 min" 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.2324;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2324;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.entra" target="n.plug">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m13" value="4. suggest + bearer token" 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.2865;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2865;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.plug" target="n.edge">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m14" value="5. verify signature, extract tenant" 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.3405;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3730;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.edge" target="n.edge">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="860" y="330" />
              <mxPoint x="860" y="360" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m15" value="6. effective policy for seat" 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.4108;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4108;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.edge" target="n.cache">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m16" value="7. miss — read through" 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.4649;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4649;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.cache" target="n.sql">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m17" value="8. rules, precedence resolved" 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.5189;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5189;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.sql" target="n.cache">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m18" value="9. policy, ≤ 30 s stale" 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.5730;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5730;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.cache" target="n.edge">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m19" value="10. seat revoked or cold cache — refuse" 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.6270;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6270;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.edge" target="n.plug">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m20" value="11. authorised, with principal" 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.6811;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6811;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.edge" target="n.ret">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m21" value="12. may this principal read this repo?" 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.7351;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7351;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.ret" target="n.scm">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m22" value="13. scoped repo list" 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.7892;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7892;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.scm" target="n.ret">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m23" value="14. retrieve within scope only" 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.8432;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8757;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.ret" target="n.ret">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1500" y="710" />
              <mxPoint x="1500" y="730" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m24" value="15. context, provenance tagged" 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.9135;exitDx=0;exitDy=0;entryX=0.5;entryY=0.9135;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.ret" target="n.edge">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Identity Flow — Seat, Policy and Repository Permission" 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="1690" 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="1690" height="10" as="geometry" />
        </mxCell>
        <mxCell id="note" value="Message 12 is evaluated per request, not per index build: an index that outlives a permission change must not serve it." 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="870" width="1690" 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="890" width="1690" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Developer Experience 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="900" width="1690" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
