<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="eli.ai" agent="eli.ai diagram exporter" version="1">
  <diagram id="scheduled-alert-delivery-bdf79eed" name="Scheduled alert delivery">
    <mxGraphModel dx="1600" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <object id="1" label="Scheduled alert delivery" schemaVersion="1" diagramId="scheduled-alert-delivery-bdf79eed" canonicalAppearanceKey="tsx:src/app/(docs)/docs/capabilities/scheduling-alerts/page.tsx:alertChart#1" sourceSha256="bdf79eed6eb8ad6c4dc93319ba2da6e347559c0ab7d2df41167fbe9122a57833" metadataPayloadSha256="a0b0af51ef7cb56dc29aab4bb7bf78dd8daaf0bbb4b9bb0b55372abe407833ce" generationKey="62a2303900eadafa9f9c90e1a5b6c5252563458f2e4b567ca2ca0af87114fc02" concepts="[&quot;Scheduling alerts&quot;,&quot;Capabilities&quot;,&quot;Alert&quot;]" keywords="[&quot;pg-boss cron ↔ scheduled_jobs&quot;,&quot;threshold breached?&quot;,&quot;record run&quot;,&quot;refresh scan-freshness&quot;,&quot;raise alert&quot;,&quot;dedupeKey, resolvedAt&quot;,&quot;notification center&quot;,&quot;outbound webhook&quot;,&quot;HMAC-signed body&quot;,&quot;SSRF-guarded egress&quot;,&quot;drift scan · eval canary&quot;,&quot;Slack · Discord · generic&quot;,&quot;schedule&quot;,&quot;scan&quot;,&quot;no&quot;,&quot;yes&quot;]" application="{&quot;name&quot;:&quot;eli-ai&quot;,&quot;version&quot;:&quot;0.1.0&quot;}" packages="{&quot;mermaid&quot;:&quot;11.16.0&quot;,&quot;mermaidCli&quot;:&quot;11.16.0&quot;,&quot;playwright&quot;:&quot;1.62.1&quot;,&quot;playwrightCore&quot;:&quot;1.62.1&quot;,&quot;puppeteer&quot;:&quot;25.6.0&quot;,&quot;puppeteerCore&quot;:&quot;25.6.0&quot;}" environment="{&quot;architecture&quot;:&quot;x64&quot;,&quot;containerImage&quot;:&quot;playwright:v1.62.1-noble@sha256:c091b21d9fae78c76e85cd4356431e9b018402f172a214fc7d7a5e9a7e29d8ac+node:26.3.1-bookworm-slim@sha256:209558c3e5e40e8adff68959d3c2ba7cd73723e716d89196878a0c362fa1e109&quot;,&quot;node&quot;:&quot;v26.3.1&quot;,&quot;platform&quot;:&quot;linux&quot;,&quot;yarn&quot;:&quot;4.17.1&quot;}" renderer="{&quot;browser&quot;:{&quot;executableSha256&quot;:&quot;0b20b130e7edd9dd51873be867761295fe0cfad490c2b9a64f95bd3cfc08fa71&quot;,&quot;name&quot;:&quot;chromium&quot;,&quot;revision&quot;:&quot;1234&quot;,&quot;version&quot;:&quot;151.0.7922.34&quot;},&quot;font&quot;:{&quot;family&quot;:&quot;Eli Diagram Inter Variable&quot;,&quot;fileSha256&quot;:&quot;3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62&quot;,&quot;licenseSha256&quot;:&quot;3b0a5fca3d17942cde889069889dedbbbd075e9b599968c82a95f4d944e9b345&quot;},&quot;mermaidConfigSha256&quot;:&quot;68c10966fe84406ee626034d58bfabd555df9f65f691204b7c46db24038da101&quot;,&quot;themeCssSha256&quot;:&quot;c80287a78d80ad63d27bd5ca348b2ef9a7e2f44da289e436be6484ea28a1b033&quot;}" adapterVersions="{&quot;diagramGenerator&quot;:&quot;2&quot;,&quot;drawioFlowchart&quot;:&quot;1&quot;,&quot;drawioGantt&quot;:&quot;1&quot;,&quot;drawioSequence&quot;:&quot;1&quot;,&quot;drawioState&quot;:&quot;1&quot;}" mermaidType="flowchart" direction="LR" generatedAt="2026-08-12T23:41:43.485Z" mermaidSource="flowchart LR&#10;  Cron[&quot;schedule&lt;br/&gt;(pg-boss cron ↔ scheduled_jobs)&quot;] --&gt; Scan[&quot;scan&lt;br/&gt;drift scan · eval canary&quot;]&#10;  Scan --&gt; Thr{threshold breached?}&#10;  Thr --&gt;|no| Ok[&quot;record run&lt;br/&gt;refresh scan-freshness&quot;]&#10;  Thr --&gt;|yes| Alert[&quot;raise alert&lt;br/&gt;(dedupeKey, resolvedAt)&quot;]&#10;  Alert --&gt; Center[&quot;notification center&quot;]&#10;  Alert --&gt; Hook[&quot;outbound webhook&lt;br/&gt;Slack · Discord · generic&quot;]&#10;  Hook --&gt; Sign[&quot;HMAC-signed body&lt;br/&gt;SSRF-guarded egress&quot;]">
          <mxCell parent="0"/>
        </object>
        <object id="n:Cron" label="schedule(pg-boss cron ↔ scheduled_jobs)" mermaidId="Cron" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="8" y="61.695313" width="256" height="100" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:Scan" label="scandrift scan · eval canary" mermaidId="Scan" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="314" y="73.695313" width="228.03125" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:Thr" label="threshold breached?" mermaidId="Thr" mermaidShape="diamond">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;perimeter=rhombusPerimeter;shape=rhombus;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="592.53125" y="8" width="207.390625" height="207.390625" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:Ok" label="record runrefresh scan-freshness" mermaidId="Ok" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="880.75" y="10.695313" width="232.625" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:Alert" label="raise alert(dedupeKey, resolvedAt)" mermaidId="Alert" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="875.875" y="136.695313" width="242.375" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:Center" label="notification center" mermaidId="Center" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="1191.398438" y="91.695313" width="193.25" height="52" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:Hook" label="outbound webhookSlack · Discord · generic" mermaidId="Hook" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="1168.25" y="193.695313" width="239.546875" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:Sign" label="HMAC-signed bodySSRF-guarded egress" mermaidId="Sign" mermaidShape="rectangle">
          <mxCell parent="1" vertex="1" style="fillColor=#ECECFF;fontColor=#333333;html=1;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="1457.796875" y="193.695313" width="222.1875" height="76" as="geometry"/>
          </mxCell>
        </object>
        <object id="e:L_Cron_Scan_0" label="" mermaidId="L_Cron_Scan_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:Cron" target="n:Scan" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="264" y="111.695313" as="sourcePoint"/>
              <mxPoint x="314" y="111.695313" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="289" y="111.695313"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_Scan_Thr_0" label="" mermaidId="L_Scan_Thr_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:Scan" target="n:Thr" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="542.03125" y="111.695313" as="sourcePoint"/>
              <mxPoint x="592.03125" y="111.695313" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="567.03125" y="111.695313"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_Thr_Ok_0" label="no" mermaidId="L_Thr_Ok_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:Thr" target="n:Ok" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="767.542386" y="79.815823" as="sourcePoint"/>
              <mxPoint x="880.75" y="48.695313" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="837.648438" y="48.695313"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_Thr_Alert_0" label="yes" mermaidId="L_Thr_Alert_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:Thr" target="n:Alert" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="767.542386" y="143.574802" as="sourcePoint"/>
              <mxPoint x="875.875" y="174.695313" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="837.648438" y="174.695313"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_Alert_Center_0" label="" mermaidId="L_Alert_Center_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:Alert" target="n:Center" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1094.520833" y="136.695313" as="sourcePoint"/>
              <mxPoint x="1191.398438" y="117.695313" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1143.25" y="117.695313"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_Alert_Hook_0" label="" mermaidId="L_Alert_Hook_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:Alert" target="n:Hook" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1094.520833" y="212.695313" as="sourcePoint"/>
              <mxPoint x="1168.25" y="231.695313" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1143.25" y="231.695313"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:L_Hook_Sign_0" label="" mermaidId="L_Hook_Sign_0" mermaidKind="relationship">
          <mxCell parent="1" source="n:Hook" target="n:Sign" edge="1" style="edgeStyle=orthogonalEdgeStyle;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="1407.796875" y="231.695313" as="sourcePoint"/>
              <mxPoint x="1457.796875" y="231.695313" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="1432.796875" y="231.695313"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
