<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Identity and Access — Producer Authentication" id="25-identity-and-token-flow">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1760" pageHeight="900" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="n.f-prod" value="&lt;b&gt;Producer workload&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="60" y="80" width="210" height="700" as="geometry" />
        </mxCell>
        <mxCell id="_ico1" 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+gvaeTAAACQ0lEQVRoge2Zv08UQRTHP3cQNUAAvRgSChRILlEJPwydsZIYGjqxJFJSasLfQGPpH6D/hTFGLSlILLCysdKIiYoaCBwEKPaIe3vfY3Z5Oxk2d59kin33nZn3cu+92ZuDDmEppdA8BZaAfs++JPkMrAKfLIvcB44Djo8uB8uOz++kDNQXEy6BK4A0KeYT5/6uAC483cb5R8Ar4EfMNgXMC+3funa3/lwC5oC7Rh/OZIWzi+yNmFMGtoV2TWirjvUPXQ5aU2hX2I6AvZRaZctE4Wug8AFYi3gSuEFUoKdUgYrQ3gOu05jXD437O3EVse/hvYiDY00hgLfA79jzOLq37wOvgVrMNguM5uBDS1wp9EHMuQT8E9rnQjvhWN97Cm0LWw3YEfY/KednovA10PYBVIGehO0mcFVoJ8V+M8b9zV3oFvCLxneafqBLaB8RFfd+zKYCzUQebfRyfaShh+ZvzEQeAWwCW7HnKjAidMfAOv87VBmYBq7l4ENLXOfAupjTW3cyqX0htLOO9b2fA9+FbYco15NsCZuan4m2b6PBsQYwQnPLrAADQqte2saM+5u70AzwlcZ3nwpwRWiXgQc0Fuawcf9c2uhQBq1qrybavgaCU/gA8qgBxQbwjug0heh0fgL05b2RrwAeA18SthrwLO+NfKWQujJUPzPNFL4GOgGEphNAaFq10dMrv/P+/bNA80XW7XOsUwIWif40eU90geBkEDgg7K20Gi+VsyqF+vB3wFkYVEbl6E+ik/Si8S20Ax0UJ+HA5MDF0ECIAAAAAElFTkSuQmCC;" vertex="1" parent="n.f-prod">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.f-spire" value="&lt;b&gt;SPIRE 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=#e1d5e7;strokeColor=#9673a6;fontColor=#3a2b44;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="300" y="80" width="210" height="700" 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+gvaeTAAAFU0lEQVRoge2Za2xVRRDHf31aSRGUijysUDAmVXxEMTGkvjXhC2KqMVGIj8TIBxTFxxdfUWM0PlCjhg8aX4kSI0E0YvxkKr5iKDWNIWhMkdKiVKot0lZuS6F+mLPeuXN27zn39lKD4Z9szt6dM7Mzu7Mzs+fCMfy3KCuRnBnAImAhMB84DaiK2n6gD+gC2qK2DRgr0dxFYxpwL7AFUaaQtgt4CTF4wnEK8AowlFLZpNYCLJ4IxcuAu4D+Eilu2yZgXjFKpcF04B3yr9Q24Ovo2QkMAhnE1eqAsxGXWQRUB2QcAFYCb6XUKxXmAx34V60XeAI4vQB5U4DlwLcBmWPAa0gAGDfOAPZ4JhgCHgUmjVP+JcBWj/wxYCPhnUqFmcBOj+A2xDCLCuA24G2gFdgB7AZ+Br4A1gJLgeM9fKsQd7NzfRTRC0YFsNkjcCNQE+B50vO+rw0C7wMLDP+FQLfn/WeKMeARj6D15F+N71Ia4Noh5LDOUjIakACg3zsMXFuI8vOQaKCFfAMcl8D3cIEGuNYDNBkj9pp3virEgHWGuR8pDRyq8R/eMuA64D7gGuB85KxcCtyMRJaegBHDyPlxuBw4qOgfplW+ARg1wu9U9GZgIJpwdVqhCuXADcjBtkaMAkvMXK3Ax8CpaSd4ygj9BaiMaA1IYeZoGeIRJS2qgGcR/9bzDQDnFSmTMuJhc5WitxjaPuLJphZYgZQFnUjE+TXivR+pozSWEd/xHygydDYaQSPAyRHtSuJbfo/hv4mwj+sVfhBxJYe7Pe+tCOhXn8+AO4yQLxVtk4emlXg8QXHbPiE3n6w39N8N/Q2yIfX2kAEvGyFPR+PTkJitaVcovlsLVN6195SMOcDfhr5Uza/Pyo6QAZ8aAbdE481m/CfFMxW5bWl6BngeuACpYhcADwF/eoxoVrJeN7R3o/FaM36IQDVgM+lV0fgaM/6q4nnAo/xlgQWqJx4+tyv61YbWT7bct2er0TFpP7aZNhM9Z5rxdtVfYmjPIYWbQ41Sohu4HllBh0ayYbMFSV4OUxHXAgnnGnNdRxtgQ+Jo9DzJjPcbBTTWqf6LSBjtQrIySIj83PBcpObbbWgugQ2a8X8rAW2AvZ0djp4nmPEB9b41zinQiITZikiJx9Q77YZHh8bfDG1K9Dxoxl1yzTHgR9XPILcwiB+YA0pIuaG5iWab8TrVHzW0fNdap6jdgRHX0QqsRuqONiQp9UXj1gB3NnzZ0iln3XFY9a08Tas0NKfoB8jhBTnQm30M3fjrblvvuB2wSroQ56NlVD8ULKw+mrYBOSvnIEm1L8TgQ2gH7NkYJLtK9i6rlQzJg7jhI6q/JWo5sD5sUUWu/0I2Cp0YGIf4Kg+npOUzzoskA+rJ3aX9SEaF/OF1eh5F8ilpF2uABCQZ0GB+71R9Wxn2qP4MQ+tVfWvcvuhZSXxX9yboV7ABOiPOMbRdqm+zd1cKvjpyQ+oI8FeCfqlcSKNT9ecGFIH4DrgEV0E8R3RHT+s+vWSDQhBJBvSa31tV/0xD61B9+5HW7cAscs/UEPBHQBdbVhSFGuBNxL/XqknKEN/VFaIzaBLx+4Pz+ybC1Wg5clFy+WRZKQwIYTbxMtqt7EJD6yPr2zca2mdGbjVyfbVFYhBpEpkPw0jZ4PhbyZYRZ5l32wn7cof5PUK8Wj1iWInE/u3I7cvhBXJXeY2i1QLfR+N7KOyz/ITB/me23NDLgXOByROsVypMJveTYM7172jAYuKfR0r1V64XSXmgUDSZ3y2kSEbjQakNsNm0pcTyjzguRkLsGFJa2OLsqEAjcrObkvTiMfwf8A/LLTAsbFan6wAAAABJRU5ErkJggg==;" vertex="1" parent="n.f-spire">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.f-kc" value="&lt;b&gt;Keycloak&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="530" y="80" width="210" height="700" 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,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;" vertex="1" parent="n.f-kc">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.f-gw" value="&lt;b&gt;Envoy Gateway&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="770" y="80" width="210" height="700" 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.f-gw">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.f-ing" value="&lt;b&gt;Ingest 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="1010" y="80" width="210" height="700" 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,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;" vertex="1" parent="n.f-ing">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.f-kafka" value="&lt;b&gt;Kafka&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="1250" y="80" width="210" height="700" 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,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;" vertex="1" parent="n.f-kafka">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.f-vault" value="&lt;b&gt;Vault&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="1490" y="80" width="210" height="700" 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,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;" vertex="1" parent="n.f-vault">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_m8" value="1. attest workload" 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.1314;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1314;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-prod" target="n.f-spire">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m9" value="2. X.509 SVID · 1 h" 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.1886;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1886;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-spire" target="n.f-prod">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m10" value="3. client_credentials grant" 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.2457;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2457;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-prod" target="n.f-kc">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m11" value="4. JWT · tenant_id · scopes · 15 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.3029;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3029;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-kc" target="n.f-prod">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m12" value="5. POST /v1/events · mTLS plus bearer" 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.3600;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3600;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-prod" target="n.f-gw">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m13" value="6. SPIFFE ID against tenant allow-list" 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.4171;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4514;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.f-gw" target="n.f-gw">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="960" y="370" />
              <mxPoint x="960" y="400" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m14" value="7. JWKS · cached 10 min" 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.4914;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4914;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-gw" target="n.f-kc">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m15" value="8. forward with verified claims" 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.5486;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5486;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-gw" target="n.f-ing">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m16" value="9. scope events:write · tenant match" 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.6057;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6400;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.f-ing" target="n.f-ing">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1200" y="510" />
              <mxPoint x="1200" y="530" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m17" value="10. lease database credential · 1 h" 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.6800;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6800;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-ing" target="n.f-vault">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m18" value="11. dynamic credential" 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.7371;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7371;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-vault" target="n.f-ing">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m19" value="12. produce as tenant 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.7943;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7943;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-ing" target="n.f-kafka">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m20" value="13. ACL denied · wrong tenant topic" 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.8514;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8514;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-kafka" target="n.f-ing">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m21" value="14. 202 Accepted · event_id" 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.9086;exitDx=0;exitDy=0;entryX=0.5;entryY=0.9086;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.f-ing" target="n.f-prod">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Identity and Access — Producer Authentication" 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="1670" 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="1670" height="10" as="geometry" />
        </mxCell>
        <mxCell id="note" value="No long-lived secret is issued to a producer. The mTLS identity proves the workload, the JWT carries the tenant, and Kafka enforces the same tenant a second time so a bug in the API cannot cross a tenant boundary." 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="830" width="1670" 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="850" width="1670" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Security Architecture   ·   date 2026-08" 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="860" width="1670" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
