<mxfile host="opus-visual-remediation-72" agent="claude-opus-5" version="26.0.3">
  <diagram id="collwarehouse" name="Collection to warehouse">
    <mxGraphModel dx="1800" dy="1100" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="960" math="0" shadow="0" background="#ffffff">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="bandH" value="" style="rounded=1;html=1;fillColor=#fff7ed;strokeColor=#fdba74;pointerEvents=0;" vertex="1" parent="1">
          <mxGeometry x="700" y="146" width="380" height="440" as="geometry" />
        </mxCell>
        <mxCell id="bandL" value="" style="rounded=1;html=1;fillColor=#f0fdf4;strokeColor=#86efac;pointerEvents=0;" vertex="1" parent="1">
          <mxGeometry x="700" y="626" width="380" height="180" as="geometry" />
        </mxCell>

        <mxCell id="e0" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#1d4ed8;strokeWidth=3;endArrow=blockThin;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="start" target="fork">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="eH" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#c2410c;strokeWidth=3;endArrow=blockThin;endFill=1;exitX=0.5;exitY=0;entryX=0;entryY=0.5;" edge="1" parent="1" source="fork" target="h1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="530" y="225" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="eL" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#15803d;strokeWidth=3;endArrow=blockThin;endFill=1;exitX=0.5;exitY=1;entryX=0;entryY=0.5;" edge="1" parent="1" source="fork" target="l1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="530" y="715" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="eH12" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#c2410c;strokeWidth=2.5;endArrow=blockThin;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="h1" target="h2">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="eH23" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#c2410c;strokeWidth=2.5;endArrow=blockThin;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="h2" target="h3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="eHU" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#7c3aed;strokeWidth=3;endArrow=blockThin;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.25;" edge="1" parent="1" source="h3" target="use">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1070" y="505" />
              <mxPoint x="1070" y="425" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="eLU" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#7c3aed;strokeWidth=3;endArrow=blockThin;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.75;" edge="1" parent="1" source="l1" target="use">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1092" y="715" />
              <mxPoint x="1092" y="515" />
            </Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="title" value="&lt;b style=&quot;font-size:23px&quot;&gt;One consent decision, two paths, one destination that matters&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:15px;color:#cbd5e1&quot;&gt;Both paths start at the same consented event and end at the same reconciled number. Only the cost of getting there differs.&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#0f172a;strokeColor=#0f172a;fontColor=#ffffff;align=left;spacingLeft=22;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="40" y="30" width="1400" height="84" as="geometry" />
        </mxCell>

        <mxCell id="hC" value="&lt;b&gt;COLLECTION &amp;mdash; CONSENT GATES EVERYTHING&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;fontSize=13;fontColor=#1d4ed8;" vertex="1" parent="1">
          <mxGeometry x="40" y="336" width="420" height="24" as="geometry" />
        </mxCell>
        <mxCell id="hH" value="&lt;b&gt;HEAVY PATH &amp;mdash; ONLY WHEN FIRST-PARTY CONTROL IS A REQUIREMENT&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;fontSize=13;fontColor=#c2410c;" vertex="1" parent="1">
          <mxGeometry x="700" y="118" width="740" height="24" as="geometry" />
        </mxCell>
        <mxCell id="hL" value="&lt;b&gt;LIGHT PATH &amp;mdash; WHERE MOST TEAMS SHOULD STOP&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;fontSize=13;fontColor=#15803d;" vertex="1" parent="1">
          <mxGeometry x="700" y="598" width="600" height="24" as="geometry" />
        </mxCell>
        <mxCell id="hU" value="&lt;b&gt;USE&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;fontSize=13;fontColor=#7c3aed;" vertex="1" parent="1">
          <mxGeometry x="1120" y="336" width="320" height="24" as="geometry" />
        </mxCell>

        <mxCell id="start" value="&lt;b style=&quot;font-size:18px&quot;&gt;Browser&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:14px&quot;&gt;consent-gated events &amp;mdash;&lt;br&gt;the same start point&lt;br&gt;on either path&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#dbeafe;strokeColor=#1d4ed8;strokeWidth=2.5;align=left;spacingLeft=16;verticalAlign=middle;fontColor=#1e3a8a;" vertex="1" parent="1">
          <mxGeometry x="40" y="372" width="280" height="120" as="geometry" />
        </mxCell>

        <mxCell id="fork" value="&lt;b style=&quot;font-size:16px&quot;&gt;Do you need first-party&lt;br&gt;cookie control or event&lt;br&gt;transformation?&lt;/b&gt;" style="rhombus;html=1;whiteSpace=wrap;fillColor=#fef9c3;strokeColor=#a16207;strokeWidth=3;verticalAlign=middle;fontColor=#713f12;" vertex="1" parent="1">
          <mxGeometry x="380" y="352" width="300" height="180" as="geometry" />
        </mxCell>

        <mxCell id="h1" value="&lt;b style=&quot;font-size:17px&quot;&gt;sGTM endpoint&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:14px&quot;&gt;first-party /metrics path &amp;mdash;&lt;br&gt;transforms, filters and routes&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#ffedd5;strokeColor=#c2410c;strokeWidth=2;align=left;spacingLeft=16;verticalAlign=middle;fontColor=#7c2d12;" vertex="1" parent="1">
          <mxGeometry x="740" y="170" width="300" height="100" as="geometry" />
        </mxCell>
        <mxCell id="h2" value="&lt;b style=&quot;font-size:17px&quot;&gt;Cloud Run&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:14px&quot;&gt;hosts the sGTM container &amp;mdash;&lt;br&gt;&lt;b&gt;the fixed cost and the ops&lt;br&gt;burden both land here&lt;/b&gt;&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#ffedd5;strokeColor=#c2410c;strokeWidth=2;align=left;spacingLeft=16;verticalAlign=middle;fontColor=#7c2d12;" vertex="1" parent="1">
          <mxGeometry x="740" y="310" width="300" height="110" as="geometry" />
        </mxCell>
        <mxCell id="h3" value="&lt;b style=&quot;font-size:17px&quot;&gt;BigQuery raw&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:14px&quot;&gt;queryable event store &amp;mdash;&lt;br&gt;joins to backend and CRM truth&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#ffedd5;strokeColor=#c2410c;strokeWidth=2;align=left;spacingLeft=16;verticalAlign=middle;fontColor=#7c2d12;" vertex="1" parent="1">
          <mxGeometry x="740" y="455" width="300" height="100" as="geometry" />
        </mxCell>

        <mxCell id="l1" value="&lt;b style=&quot;font-size:17px&quot;&gt;Client-side GA4&lt;br&gt;+ BigQuery export&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:14px&quot;&gt;one stack to maintain &amp;mdash; answers most&lt;br&gt;content-site questions on its own&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#dcfce7;strokeColor=#15803d;strokeWidth=2.5;align=left;spacingLeft=16;verticalAlign=middle;fontColor=#14532d;" vertex="1" parent="1">
          <mxGeometry x="740" y="660" width="300" height="110" as="geometry" />
        </mxCell>

        <mxCell id="use" value="&lt;b style=&quot;font-size:17px&quot;&gt;Reconciled reporting&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:14px&quot;&gt;platform claims versus backend&lt;br&gt;truth &amp;mdash; the gap is measured and&lt;br&gt;explained, and neither side is&lt;br&gt;silently overwritten&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#f5f3ff;strokeColor=#7c3aed;strokeWidth=3;align=left;spacingLeft=16;verticalAlign=middle;fontColor=#4c1d95;" vertex="1" parent="1">
          <mxGeometry x="1120" y="372" width="320" height="180" as="geometry" />
        </mxCell>

        <mxCell id="take" value="&lt;b style=&quot;font-size:16px;color:#a16207&quot;&gt;The decision variable is not volume.&lt;/b&gt;&lt;br&gt;&lt;span style=&quot;font-size:15px;color:#713f12&quot;&gt;It is whether you need first-party&lt;br&gt;cookie control and event&lt;br&gt;transformation. Traffic size does&lt;br&gt;not answer that question.&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#fefce8;strokeColor=#a16207;strokeWidth=2;dashed=1;dashPattern=8 6;align=left;spacingLeft=16;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="40" y="596" width="300" height="154" as="geometry" />
        </mxCell>

        <mxCell id="legend" value="&lt;span style=&quot;font-size:15px&quot;&gt;&lt;b style=&quot;color:#1d4ed8&quot;&gt;Blue&lt;/b&gt; = consented collection, identical on both paths. &amp;nbsp; &lt;b style=&quot;color:#c2410c&quot;&gt;Orange&lt;/b&gt; = the heavy path, taken only when first-party control is a real requirement. &amp;nbsp; &lt;b style=&quot;color:#15803d&quot;&gt;Green&lt;/b&gt; = the light path, usually the right answer. &amp;nbsp; &lt;b style=&quot;color:#7c3aed&quot;&gt;Purple&lt;/b&gt; = reconciliation, the point of the whole exercise.&lt;br&gt;A tag that exists but is silently blocked by consent under-counts with no signal, which is why the browser QA run sits before reporting, not after it. &amp;nbsp; Evidence date: 31 August 2026.&lt;/span&gt;" style="rounded=1;html=1;whiteSpace=wrap;fillColor=#f8fafc;strokeColor=#cbd5e1;align=left;spacingLeft=18;verticalAlign=middle;fontColor=#334155;" vertex="1" parent="1">
          <mxGeometry x="40" y="832" width="1400" height="78" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
