<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="Electron" agent="Standing Order Agent" version="24.7.17">
  <diagram name="MVP Solution Architecture" id="standing-order-mvp-solution-architecture">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1900" pageHeight="950" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="m1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="user" target="dashboard"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m2" value="commands + status" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="dashboard" target="api"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="api" target="db"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m4" value="import request" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="api" target="history"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m5" value="RetailerGateway" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="history" target="browser"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m6" value="facts" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="api" target="rules"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m7" value="allowed due items" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="rules" target="planner"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m8" value="confirmed preferences" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="db" target="planner"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m9" value="cart actions" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="planner" target="browser"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m10" value="authorized session" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="browser" target="sns"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m11" value="verified cart" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="sns" target="review"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m12" value="ready for review" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="review" target="dashboard"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m13" value="user continues" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="dashboard" target="manual"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m14" value="confirmation" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=0;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="manual" target="user"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m15" value="structured facts" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=1;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="planner" target="optional"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="m16" value="plain-language summary" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#9AB8AD;strokeWidth=2;dashed=1;endArrow=block;endFill=1;fontColor=#547067;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="optional" target="review"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
        <mxCell id="user" value="One household user&#xa;connect · configure · review" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#DDF4E6;strokeColor=#4F8B6B;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="40" y="340" width="230" height="110" as="geometry"/></mxCell>
        <mxCell id="dashboard" value="Nuxt MVP dashboard&#xa;connection · products · rules · activity" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#E4EFFB;strokeColor=#5F88B5;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="340" y="300" width="270" height="150" as="geometry"/></mxCell>
        <mxCell id="api" value="Node.js modular app&#xa;API + background runner" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#DDF4E6;strokeColor=#4F8B6B;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="700" y="300" width="260" height="150" as="geometry"/></mxCell>
        <mxCell id="db" value="PostgreSQL&#xa;preferences · products · runs · audit" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#F2F5F3;strokeColor=#80928B;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=14;" vertex="1" parent="1"><mxGeometry x="720" y="70" width="230" height="120" as="geometry"/></mxCell>
        <mxCell id="history" value="Past Purchases importer&#xa;read-only selected history" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#E4EFFB;strokeColor=#5F88B5;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="1060" y="70" width="250" height="110" as="geometry"/></mxCell>
        <mxCell id="rules" value="MVP rule evaluator&#xa;exact · quantity · cadence · price · budget" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#FFF1D6;strokeColor=#C58A2C;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="1060" y="280" width="270" height="140" as="geometry"/></mxCell>
        <mxCell id="planner" value="Cart planner&#xa;resolve due items + produce actions" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#DDF4E6;strokeColor=#4F8B6B;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="1060" y="520" width="270" height="130" as="geometry"/></mxCell>
        <mxCell id="browser" value="Playwright adapter&#xa;visible Chrome + saved session" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#FFF1D6;strokeColor=#C58A2C;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="1440" y="280" width="260" height="130" as="geometry"/></mxCell>
        <mxCell id="sns" value="Stop &amp; Shop website&#xa;Past Purchases + cart" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#FFFFFF;strokeColor=#80928B;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="1440" y="540" width="260" height="120" as="geometry"/></mxCell>
        <mxCell id="review" value="Review snapshot&#xa;added · skipped · price flags · total" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#EEE9FA;strokeColor=#7D68AA;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="700" y="600" width="260" height="130" as="geometry"/></mxCell>
        <mxCell id="manual" value="Manual final checkout&#xa;retailer-controlled action" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#DDF4E6;strokeColor=#4F8B6B;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="340" y="620" width="270" height="110" as="geometry"/></mxCell>
        <mxCell id="optional" value="Optional LLM&#xa;explanations only" style="rounded=1;whiteSpace=wrap;html=1;arcSize=18;fillColor=#EEE9FA;strokeColor=#7D68AA;fontColor=#17352B;fontFamily=Helvetica;fontSize=14;fontStyle=1;spacing=10;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="1060" y="760" width="250" height="100" as="geometry"/></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
