<mxfile host="app.diagrams.net" version="24.7.17" type="device">
  <diagram id="05-cedar-lifecycle" name="Cedar policy lifecycle: LOG_ONLY to ENFORCE">
    <mxGraphModel dx="1200" dy="850" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1200" pageHeight="850" background="#F7F4EC">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="title" value="Cedar policy lifecycle: LOG_ONLY to ENFORCE" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;fontSize=28;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="45" y="22" width="1110" height="45" />
        </mxCell>
        <mxCell id="subtitle" value="Keep the production gateway enforcing while validating replacement policy." style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;fontSize=16;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="45" y="70" width="1110" height="32" />
        </mxCell>
        <mxCell id="footer" value="Recommended lifecycle. Gateway mode LOG_ONLY/ENFORCE and individual policy mode LOG_ONLY/ACTIVE are distinct." style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;fontSize=13;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="45" y="787" width="1110" height="40" />
        </mxCell>
        <mxCell id="edge0" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="schema" target="ci">
          <mxGeometry as="geometry" relative="1" />
        </mxCell>
        <mxCell id="label0" value="validate" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="281.6" y="154" width="56.8" height="18" />
        </mxCell>
        <mxCell id="edge1" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ci" target="log">
          <mxGeometry as="geometry" relative="1" />
        </mxCell>
        <mxCell id="label1" value="pass" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="582.8" y="154" width="34.4" height="18" />
        </mxCell>
        <mxCell id="edge2" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="log" target="gate">
          <mxGeometry as="geometry" relative="1" />
        </mxCell>
        <mxCell id="label2" value="observations" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="850.4" y="154" width="79.19999999999999" height="18" />
        </mxCell>
        <mxCell id="edge3" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="gate" target="new">
          <mxGeometry as="geometry" relative="1" />
        </mxCell>
        <mxCell id="label3" value="production changes" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="978.6" y="319.0" width="112.8" height="18" />
        </mxCell>
        <mxCell id="edge4" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="gate" target="can">
          <mxGeometry as="geometry" relative="1">
            <Array as="points">
              <mxPoint x="1035" y="320" />
              <mxPoint x="745" y="320" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="label4" value="initial approval" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="839.2" y="298.0" width="101.6" height="18" />
        </mxCell>
        <mxCell id="edge5" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="can" target="prod">
          <mxGeometry as="geometry" relative="1" />
        </mxCell>
        <mxCell id="label5" value="canary pass" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="563.2" y="394" width="73.6" height="18" />
        </mxCell>
        <mxCell id="edge6" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="new" target="can">
          <mxGeometry as="geometry" relative="1">
            <Array as="points">
              <mxPoint x="865" y="461.0" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="label6" value="promote policy ACTIVE" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="825.2" y="439.0" width="129.6" height="18" />
        </mxCell>
        <mxCell id="edge7" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#E4A83A;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="prod" target="stop">
          <mxGeometry as="geometry" relative="1" />
        </mxCell>
        <mxCell id="label7" value="incident" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="426.6" y="560.5" width="56.8" height="18" />
        </mxCell>
        <mxCell id="edge8" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="stop" target="proof">
          <mxGeometry as="geometry" relative="1" />
        </mxCell>
        <mxCell id="label8" value="verify" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="577.2" y="624" width="45.599999999999994" height="18" />
        </mxCell>
        <mxCell id="edge9" value="" style="edgeStyle=none;rounded=0;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#142B49;fontColor=#142B49;fontFamily=Helvetica;fontSize=12;labelBackgroundColor=#F7F4EC;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="stop" target="rb">
          <mxGeometry as="geometry" relative="1">
            <Array as="points">
              <mxPoint x="285" y="697.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="label9" value="safe rollback" style="text;html=0;align=left;verticalAlign=middle;whiteSpace=wrap;strokeColor=none;fillColor=none;fontFamily=Helvetica;fontColor=#142B49;align=center;fontSize=11;fillColor=#F7F4EC;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="267.6" y="675.5" width="84.8" height="18" />
        </mxCell>
        <mxCell id="schema" value="Bind generated schema&#10;Pin tool + policy versions" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#F7F4EC;strokeColor=#142B49;strokeWidth=2;fontColor=#142B49;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="45" y="180" width="240" height="82" />
        </mxCell>
        <mxCell id="ci" value="CI decision tests&#10;Permit / deny / forbid wins" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#F7F4EC;strokeColor=#142B49;strokeWidth=2;fontColor=#142B49;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="335" y="180" width="240" height="82" />
        </mxCell>
        <mxCell id="log" value="Isolated LOG_ONLY&#10;Synthetic or bounded data" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#142B49;strokeColor=#142B49;strokeWidth=2;fontColor=#F7F4EC;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="625" y="180" width="240" height="82" />
        </mxCell>
        <mxCell id="gate" value="Review observed decisions&#10;No unexplained mismatches" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#E4A83A;strokeColor=#142B49;strokeWidth=2;fontColor=#142B49;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="915" y="180" width="240" height="82" />
        </mxCell>
        <mxCell id="prod" value="Production ENFORCE&#10;Restrict UpdateGateway" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#142B49;strokeColor=#142B49;strokeWidth=2;fontColor=#F7F4EC;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="335" y="420" width="240" height="95" />
        </mxCell>
        <mxCell id="can" value="ENFORCE canary&#10;Prove backend effects" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#142B49;strokeColor=#142B49;strokeWidth=2;fontColor=#F7F4EC;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="625" y="420" width="240" height="95" />
        </mxCell>
        <mxCell id="new" value="Observe new policy safely&#10;Policy-level LOG_ONLY" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#F7F4EC;strokeColor=#142B49;strokeWidth=2;fontColor=#142B49;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="915" y="420" width="240" height="82" />
        </mxCell>
        <mxCell id="rb" value="Rollback tested release&#10;Retain ENFORCE" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#F7F4EC;strokeColor=#142B49;strokeWidth=2;fontColor=#142B49;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="45" y="650" width="240" height="82" />
        </mxCell>
        <mxCell id="stop" value="Contain dangerous action&#10;Active forbid + backend stop" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#E4A83A;strokeColor=#142B49;strokeWidth=2;fontColor=#142B49;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="335" y="650" width="240" height="95" />
        </mxCell>
        <mxCell id="proof" value="Probe effective denial&#10;Reconcile in-flight work" style="rounded=0;whiteSpace=wrap;html=0;fillColor=#E4A83A;strokeColor=#142B49;strokeWidth=2;fontColor=#142B49;fontFamily=Helvetica;fontSize=15;align=center;verticalAlign=middle;spacing=10;" vertex="1" parent="1">
          <mxGeometry as="geometry" x="625" y="650" width="240" height="95" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
