<?xml version='1.0' encoding='UTF-8'?>
<mxfile host="app.diagrams.net" agent="nishtnr Architecture Design System" version="24.7.17" type="device">
  <diagram id="NR-001-v1-1" name="Agent-ready SaaS architecture">
    <mxGraphModel dx="1440" dy="840" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1440" pageHeight="840" math="0" shadow="0" background="#FFFFFF">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="page-white" parent="1" vertex="1" style="rounded=0;strokeColor=none;fillColor=#FFFFFF;" value="">
          <mxGeometry x="0" y="0" width="1440" height="840" as="geometry"/>
        </mxCell>
        <mxCell id="header-id" parent="1" vertex="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Arial;fontColor=#325C72;fontSize=15;fontStyle=1;spacing=0;" value="NR-001   /   ARCHITECTURE REFERENCE">
          <mxGeometry x="70" y="24" width="900" height="26" as="geometry"/>
        </mxCell>
        <mxCell id="title" parent="1" vertex="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Arial;fontColor=#233640;fontSize=32;fontStyle=1;spacing=0;" value="Agent-ready SaaS architecture">
          <mxGeometry x="70" y="60" width="1300" height="46" as="geometry"/>
        </mxCell>
        <mxCell id="dek" parent="1" vertex="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Arial;fontColor=#586B77;fontSize=17;fontStyle=0;spacing=0;" value="Agents interact with business capabilities—not directly with product state.">
          <mxGeometry x="70" y="111" width="1300" height="44" as="geometry"/>
        </mxCell>
        <mxCell id="header-rule" parent="1" vertex="1" style="strokeColor=none;fillColor={RULE};" value="">
          <mxGeometry x="70" y="166" width="1300" height="1" as="geometry"/>
        </mxCell>
        <mxCell id="edge-0" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;rounded=0;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#8294A3;strokeWidth=2.25;endArrow=block;endFill=1;endSize=9;dashed=0;" edge="1" parent="1" source="entry" target="intent" value="">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>
        <mxCell id="edge-1" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;rounded=0;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#8294A3;strokeWidth=2.25;endArrow=block;endFill=1;endSize=9;dashed=0;" edge="1" parent="1" source="intent" target="gateway" value="">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>
        <mxCell id="edge-2" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;rounded=0;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#8294A3;strokeWidth=2.25;endArrow=block;endFill=1;endSize=9;dashed=0;" edge="1" parent="1" source="gateway" target="policy" value="">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>
        <mxCell id="edge-3" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;rounded=0;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#8294A3;strokeWidth=2.25;endArrow=block;endFill=1;endSize=9;dashed=0;" edge="1" parent="1" source="policy" target="domain" value="">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>
        <mxCell id="edge-4" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;rounded=0;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#8294A3;strokeWidth=2.25;endArrow=block;endFill=1;endSize=9;dashed=0;" edge="1" parent="1" source="domain" target="state" value="">
          <mxGeometry relative="1" as="geometry"/>
        </mxCell>
        <mxCell id="entry" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#F4F6F8;strokeColor=#B6C3D0;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;01 / Interaction&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;User interface  •  Agent  •  Event&lt;/div&gt;">
          <mxGeometry x="74" y="284" width="210" height="134" as="geometry"/>
        </mxCell>
        <mxCell id="intent" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#E6F0FB;strokeColor=#83ACDA;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;02 / Intent &amp;amp; scope&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;Interpret request; bind identity&lt;/div&gt;">
          <mxGeometry x="306" y="284" width="210" height="134" as="geometry"/>
        </mxCell>
        <mxCell id="gateway" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#F0EAF9;strokeColor=#A98AD3;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;03 / Tool gateway&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;Typed capability contract&lt;/div&gt;">
          <mxGeometry x="538" y="284" width="210" height="134" as="geometry"/>
        </mxCell>
        <mxCell id="policy" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#FFF4E2;strokeColor=#DCAD6D;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;04 / Policy gate&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;AuthZ  •  limits  •  preconditions&lt;/div&gt;">
          <mxGeometry x="770" y="284" width="210" height="134" as="geometry"/>
        </mxCell>
        <mxCell id="domain" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#E6F5F4;strokeColor=#68B7B5;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;05 / Domain API&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;Validate; apply business rules&lt;/div&gt;">
          <mxGeometry x="1002" y="284" width="210" height="134" as="geometry"/>
        </mxCell>
        <mxCell id="state" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#E6F5F4;strokeColor=#68B7B5;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=18;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:18px;font-weight:600;line-height:1.25;&quot;&gt;06 / State&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;Commit; emit event&lt;/div&gt;">
          <mxGeometry x="1234" y="284" width="140" height="134" as="geometry"/>
        </mxCell>
        <mxCell id="audit" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#FFFFFF;strokeColor=#DAE3EA;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;Observability &amp;amp; evidence&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;Traces, decisions, outcomes, recovery&lt;/div&gt;">
          <mxGeometry x="544" y="525" width="356" height="98" as="geometry"/>
        </mxCell>
        <mxCell id="ident" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#FFFFFF;strokeColor=#DAE3EA;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;Delegated identity &amp;amp; consent&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;Actor, scope, expiry, revocation&lt;/div&gt;">
          <mxGeometry x="74" y="525" width="420" height="98" as="geometry"/>
        </mxCell>
        <mxCell id="events" parent="1" vertex="1" style="rounded=1;arcSize=13;html=1;whiteSpace=wrap;shadow=0;fillColor=#FFFFFF;strokeColor=#DAE3EA;strokeWidth=1.65;fontColor=#233640;fontFamily=Arial;fontSize=19;align=center;verticalAlign=middle;spacing=7;" value="&lt;div style=&quot;font-size:19px;font-weight:600;line-height:1.25;&quot;&gt;Product events &amp;amp; downstream consumers&lt;/div&gt;&lt;div style=&quot;font-size:14px;color:#586B77;line-height:1.5;margin-top:8px;&quot;&gt;Only after a durable business change&lt;/div&gt;">
          <mxGeometry x="950" y="525" width="424" height="98" as="geometry"/>
        </mxCell>
        <mxCell id="note-0" parent="1" vertex="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Arial;fontColor=#325C72;fontSize=16;fontStyle=1;spacing=0;" value="BUSINESS REQUEST → CONTROLLED CAPABILITY → COMMITTED STATE">
          <mxGeometry x="74" y="209" width="1180" height="32" as="geometry"/>
        </mxCell>
        <mxCell id="note-1" parent="1" vertex="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Arial;fontColor=#233640;fontSize=19;fontStyle=1;spacing=0;" value="Design rule   ·   No model output or tool call is itself proof of authorization.">
          <mxGeometry x="74" y="672" width="1180" height="32" as="geometry"/>
        </mxCell>
        <mxCell id="footer-rule" parent="1" vertex="1" style="strokeColor=none;fillColor={RULE};" value="">
          <mxGeometry x="70" y="773" width="1300" height="1" as="geometry"/>
        </mxCell>
        <mxCell id="footer-brand" parent="1" vertex="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Arial;fontColor=#325C72;fontSize=13;fontStyle=1;spacing=0;" value="nishantr  ·  nishantr.tech">
          <mxGeometry x="70" y="790" width="730" height="26" as="geometry"/>
        </mxCell>
        <mxCell id="footer-meta" parent="1" vertex="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Arial;fontColor=#586B77;fontSize=12;fontStyle=0;spacing=0;" value="NR-001  •  v1.1  •  REFERENCE / ILLUSTRATIVE">
          <mxGeometry x="930" y="790" width="440" height="26" as="geometry"/>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
