.nornir/assets/worlddelta-engine-b.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 840 380" font-family="-apple-system,Segoe UI,Roboto,sans-serif" font-size="14">
<defs>
<marker id="a" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto">
<path d="M0,0 L7,3 L0,6 Z" fill="#555"/>
</marker>
</defs>
<text x="30" y="30" font-weight="700" font-size="16">Engine B — world-delta: two snapshots → BehaviorDelta</text>
<!-- snapshot from -->
<rect x="30" y="80" width="150" height="90" rx="8" fill="#eef3fb" stroke="#2b5fb3" stroke-width="1.5"/>
<text x="105" y="108" text-anchor="middle" font-weight="600">WorldSnapshot</text>
<text x="105" y="128" text-anchor="middle" fill="#555" font-size="12">from (t0)</text>
<text x="105" y="150" text-anchor="middle" fill="#888" font-size="11">symbols · calls · deps</text>
<!-- snapshot to -->
<rect x="30" y="210" width="150" height="90" rx="8" fill="#eef3fb" stroke="#2b5fb3" stroke-width="1.5"/>
<text x="105" y="238" text-anchor="middle" font-weight="600">WorldSnapshot</text>
<text x="105" y="258" text-anchor="middle" fill="#555" font-size="12">to (t1)</text>
<text x="105" y="280" text-anchor="middle" fill="#888" font-size="11">vuln_sinks · caps</text>
<!-- tripwire battery -->
<rect x="260" y="70" width="270" height="240" rx="8" fill="#fdf2ec" stroke="#c26a2b" stroke-width="1.5"/>
<text x="395" y="96" text-anchor="middle" font-weight="600">diff() — tripwire battery</text>
<text x="395" y="126" text-anchor="middle" fill="#555" font-size="12">A1 CallGraphDeltaTripwire</text>
<text x="395" y="150" text-anchor="middle" fill="#555" font-size="12">A9 CapabilityDriftTripwire</text>
<text x="395" y="174" text-anchor="middle" fill="#555" font-size="12">A8 SinkNewlyReachableTripwire</text>
<text x="395" y="198" text-anchor="middle" fill="#555" font-size="12">A22 FingerprintDriftTripwire</text>
<line x1="290" y1="216" x2="500" y2="216" stroke="#e0c4ad" stroke-width="1"/>
<text x="395" y="240" text-anchor="middle" fill="#888" font-size="12">reachability_gated_vulns (BFS)</text>
<text x="395" y="262" text-anchor="middle" fill="#888" font-size="12">capability_surface (closure)</text>
<text x="395" y="284" text-anchor="middle" fill="#888" font-size="12">blast_radius (PageRank)</text>
<!-- delta -->
<rect x="610" y="110" width="150" height="80" rx="8" fill="#f6eefb" stroke="#7a3fb3" stroke-width="1.5"/>
<text x="685" y="138" text-anchor="middle" font-weight="700">BehaviorDelta</text>
<text x="685" y="158" text-anchor="middle" fill="#555" font-size="12">Vec<Finding></text>
<text x="685" y="176" text-anchor="middle" fill="#555" font-size="11">.decision()</text>
<!-- verdict -->
<rect x="610" y="220" width="150" height="70" rx="8" fill="#eefaf0" stroke="#2f8f4e" stroke-width="1.5"/>
<text x="685" y="248" text-anchor="middle" font-weight="700">core::Verdict</text>
<text x="685" y="268" text-anchor="middle" fill="#555" font-size="12">verdict_from()</text>
<path d="M180,125 C215,120 225,110 260,110" fill="none" stroke="#555" stroke-width="1.4" marker-end="url(#a)"/>
<path d="M180,255 C215,260 225,280 260,280" fill="none" stroke="#555" stroke-width="1.4" marker-end="url(#a)"/>
<path d="M530,150 L610,150" fill="none" stroke="#555" stroke-width="1.4" marker-end="url(#a)"/>
<path d="M685,190 L685,220" fill="none" stroke="#555" stroke-width="1.4" marker-end="url(#a)"/>
<text x="540" y="142" fill="#7a3fb3" font-size="11">findings</text>
</svg>