<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" type="device">
  <diagram id="openspanguard-quality-loop" name="Quality loop">
    <mxGraphModel dx="1600" dy="1090" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1090" math="0" shadow="0" background="#F5F3EB">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="title" value="OpenSpanGuard | The quality loop" style="text;html=0;strokeColor=none;fillColor=none;align=left;fontColor=#0B1220;fontSize=32;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="40" y="25" width="1500" height="50" as="geometry"/></mxCell>
        <mxCell id="subtitle" value="Example Prometheus rules · Cohort-specific evidence · Calibrate thresholds before production paging" style="text;html=0;strokeColor=none;fillColor=none;align=left;fontColor=#516170;fontSize=17;" vertex="1" parent="1"><mxGeometry x="40" y="80" width="1500" height="35" as="geometry"/></mxCell>
        <mxCell id="relevance-lane" value="01 / LOW RELEVANCE — ALL CONDITIONS MUST HOLD FOR THE SAME COHORT" style="swimlane;html=0;startSize=40;horizontal=1;rounded=0;fillColor=#D9F3EB;swimlaneFillColor=#F3FBF8;strokeColor=#91BEB0;fontColor=#086954;fontSize=13;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="40" y="145" width="1520" height="240" as="geometry"/></mxCell>
        <mxCell id="delivery-lane" value="02 / DELIVERY" style="swimlane;html=0;startSize=40;horizontal=1;rounded=0;fillColor=#E7EAE8;swimlaneFillColor=#FFFFFF;strokeColor=#BDC9CC;fontColor=#152336;fontSize=13;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="860" y="445" width="700" height="180" as="geometry"/></mxCell>
        <mxCell id="blindspots-lane" value="03 / BLIND SPOTS — INDEPENDENT ALERT RULES" style="swimlane;html=0;startSize=40;horizontal=1;rounded=0;fillColor=#E7EAE8;swimlaneFillColor=#FFFFFF;strokeColor=#BDC9CC;fontColor=#152336;fontSize=13;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="40" y="680" width="1520" height="300" as="geometry"/></mxCell>
        <mxCell id="cohort" value="Cohort signals&#xa;Scraped by Prometheus&#xa;Rule interval: 15 s" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#8899A7;fontColor=#152336;fontSize=15;spacing=12;" vertex="1" parent="relevance-lane"><mxGeometry x="25" y="85" width="205" height="100" as="geometry"/></mxCell>
        <mxCell id="sample" value="Sample ≥ 20&#xa;Score-count increase&#xa;over 5 minutes" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#086954;fontColor=#152336;fontSize=15;spacing=12;" vertex="1" parent="relevance-lane"><mxGeometry x="280" y="85" width="235" height="100" as="geometry"/></mxCell>
        <mxCell id="coverage" value="Coverage ≥ 80%&#xa;Successful evaluation rate&#xa;÷ observed span rate (5m)" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#086954;fontColor=#152336;fontSize=15;spacing=12;" vertex="1" parent="relevance-lane"><mxGeometry x="565" y="85" width="260" height="100" as="geometry"/></mxCell>
        <mxCell id="relevance" value="Mean relevance &lt; 0.60&#xa;Score-sum rate&#xa;÷ score-count rate (5m)" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#086954;fontColor=#152336;fontSize=15;spacing=12;" vertex="1" parent="relevance-lane"><mxGeometry x="875" y="85" width="270" height="100" as="geometry"/></mxCell>
        <mxCell id="hold" value="All conditions held 2m&#xa;OpenSpanGuardLowRelevance&#xa;Severity: warning" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#0B1220;strokeColor=#0B1220;fontColor=#F5F3EB;fontSize=15;spacing=12;" vertex="1" parent="relevance-lane"><mxGeometry x="1195" y="85" width="300" height="100" as="geometry"/></mxCell>
        <mxCell id="alertmanager" value="Alertmanager&#xa;Group + route" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#8899A7;fontColor=#152336;fontSize=16;spacing=12;" vertex="1" parent="delivery-lane"><mxGeometry x="35" y="65" width="250" height="85" as="geometry"/></mxCell>
        <mxCell id="webhook" value="Webhook&#xa;Local demo receiver" style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#8899A7;fontColor=#152336;fontSize=16;spacing=12;" vertex="1" parent="delivery-lane"><mxGeometry x="405" y="65" width="260" height="85" as="geometry"/></mxCell>
        <mxCell id="coverage-alert" value="LOW COVERAGE · warning&#xa;Coverage &lt; 0.8 AND observed-span&#xa;increase ≥ 20 over 5m, held 2m.&#xa;Missing successful-evaluation series&#xa;are zero for observed cohorts." style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#8899A7;fontColor=#152336;fontSize=16;spacing=16;align=left;" vertex="1" parent="blindspots-lane"><mxGeometry x="25" y="75" width="585" height="180" as="geometry"/></mxCell>
        <mxCell id="nodata-alert" value="NO DATA · info&#xa;Scrape target down or absent OR&#xa;zero observed-span increase over 10m OR&#xa;missing span counter, held 2m.&#xa;A quiet service can trigger this alert." style="rounded=1;whiteSpace=wrap;html=0;arcSize=10;fillColor=#FFFFFF;strokeColor=#8899A7;fontColor=#152336;fontSize=16;spacing=16;align=left;" vertex="1" parent="blindspots-lane"><mxGeometry x="660" y="75" width="600" height="180" as="geometry"/></mxCell>
        <mxCell id="blindspots-route" value="Independent&#xa;rules route to&#xa;Alertmanager" style="text;whiteSpace=wrap;html=0;strokeColor=none;fillColor=none;align=center;fontColor=#516170;fontSize=14;" vertex="1" parent="blindspots-lane"><mxGeometry x="1300" y="125" width="195" height="75" as="geometry"/></mxCell>
        <mxCell id="edge-cohort-sample" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#086954;strokeWidth=2;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="cohort" target="sample"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="edge-sample-coverage" value="AND" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#086954;strokeWidth=2;fontColor=#086954;fontSize=10;labelBackgroundColor=#F3FBF8;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="sample" target="coverage"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="edge-coverage-relevance" value="AND" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#086954;strokeWidth=2;fontColor=#086954;fontSize=10;labelBackgroundColor=#F3FBF8;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="coverage" target="relevance"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="edge-relevance-hold" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#086954;strokeWidth=2;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="relevance" target="hold"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="edge-hold-alert" value="firing alert" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#086954;strokeWidth=2;fontColor=#086954;fontSize=12;labelBackgroundColor=#F5F3EB;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="hold" target="alertmanager"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="1385" y="410"/><mxPoint x="1020" y="410"/></Array></mxGeometry></mxCell>
        <mxCell id="edge-alert-webhook" value="route" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#516170;strokeWidth=2;fontColor=#152336;fontSize=12;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="alertmanager" target="webhook"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="edge-coverage-alert" value="independent rule" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#8899A7;strokeWidth=2;dashed=1;fontColor=#516170;fontSize=11;labelBackgroundColor=#F5F3EB;exitX=1;exitY=0.25;entryX=0.15;entryY=1;" edge="1" parent="1" source="coverage-alert" target="alertmanager"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="685" y="800"/><mxPoint x="685" y="655"/><mxPoint x="932" y="655"/></Array></mxGeometry></mxCell>
        <mxCell id="edge-nodata-alert" value="independent rule" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;endArrow=block;endFill=1;strokeColor=#8899A7;strokeWidth=2;dashed=1;fontColor=#516170;fontSize=11;labelBackgroundColor=#F5F3EB;exitX=0.75;exitY=0;entryX=0.85;entryY=1;" edge="1" parent="1" source="nodata-alert" target="alertmanager"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="1150" y="650"/><mxPoint x="1107" y="650"/></Array></mxGeometry></mxCell>
        <mxCell id="interpretation" value="INTERPRET WITH CARE&#xa;Relevance is not factual correctness.&#xa;Evaluator confidence is not proof of truth.&#xa;Noul is rubric-specific, not hallucination probability.&#xa;Missing scores do not mean good quality." style="rounded=0;whiteSpace=wrap;html=0;fillColor=#E7EAE8;strokeColor=#BDC9CC;fontColor=#516170;fontSize=16;align=left;spacing=18;" vertex="1" parent="1"><mxGeometry x="40" y="445" width="700" height="180" as="geometry"/></mxCell>
        <mxCell id="footer" value="Source of truth: deploy/alerts.yaml · Counts deduplicate within the live process-local cache. Thresholds are examples, not universal SLOs or false-positive guarantees." style="text;html=0;strokeColor=none;fillColor=none;align=left;fontColor=#516170;fontSize=13;" vertex="1" parent="1"><mxGeometry x="40" y="1020" width="1520" height="40" as="geometry"/></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
