mikronova/funnel-core
.nornir/assets/dag-wiring.svg
<svg viewBox="0 0 620 260" width="620" height="260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Plan-DAG on the left (mother idea i-001 decomposed into the chain n-001 to n-002 to n-003) wired by dashed bipartite edges to a Component-DAG on the right (funnel-core, depended on by nornir, which is depended on by nornir-viz and dwarves). n-001 wires to funnel-core and n-003 to nornir-viz; n-002 has no wire and is drawn in red as UNMAPPED. The blast radius of funnel-core is the transitive dependents nornir, nornir-viz and dwarves.">
<defs>
<marker id="wa" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#b8b8c4"/>
</marker>
<marker id="wb" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#2d6cdf"/>
</marker>
</defs>
<text x="14" y="20" font-family="sans-serif" font-size="12" font-weight="bold" fill="#6b6b78">PLAN-DAG</text>
<text x="248" y="20" font-family="sans-serif" font-size="12" font-weight="bold" fill="#2d6cdf">wiring</text>
<text x="400" y="20" font-family="sans-serif" font-size="12" font-weight="bold" fill="#6b6b78">COMPONENT-DAG</text>
<!-- plan edges: mother + dep chain -->
<g stroke="#b8b8c4" stroke-width="1.1" fill="none">
<line x1="60" y1="76" x2="60" y2="98" marker-end="url(#wa)"/>
<line x1="60" y1="128" x2="60" y2="150" marker-end="url(#wa)"/>
<line x1="60" y1="180" x2="60" y2="202" marker-end="url(#wa)"/>
</g>
<!-- plan nodes -->
<g font-family="sans-serif" font-size="11" text-anchor="middle">
<rect x="14" y="42" width="92" height="30" rx="7" fill="#eef0f6" stroke="#8a8a99"/>
<text x="60" y="61" fill="#33333d">i-001 idea</text>
<rect x="14" y="98" width="92" height="30" rx="7" fill="#e8f4ec" stroke="#1f8a4c"/>
<text x="60" y="117" fill="#1f5c38">n-001</text>
<rect x="14" y="150" width="92" height="30" rx="7" fill="#fdecea" stroke="#c0392b" stroke-width="1.6"/>
<text x="60" y="169" fill="#8e2a20">n-002</text>
<rect x="14" y="202" width="92" height="30" rx="7" fill="#e8f4ec" stroke="#1f8a4c"/>
<text x="60" y="221" fill="#1f5c38">n-003</text>
</g>
<!-- the bipartite wires -->
<g stroke="#2d6cdf" stroke-width="1.6" stroke-dasharray="5 4" fill="none">
<line x1="108" y1="113" x2="392" y2="61" marker-end="url(#wb)"/>
<line x1="108" y1="217" x2="392" y2="165" marker-end="url(#wb)"/>
</g>
<text x="250" y="196" font-family="sans-serif" font-size="10.5" fill="#c0392b" text-anchor="middle">no wire → UNMAPPED</text>
<line x1="110" y1="182" x2="180" y2="190" stroke="#c0392b" stroke-width="1.2" stroke-dasharray="3 3"/>
<!-- component edges: from depends on to (drawn right-to-left, arrow points at the dependency) -->
<g stroke="#8a8a99" stroke-width="1.2" fill="none">
<path d="M 486 98 L 486 82" marker-end="url(#wa)"/>
<path d="M 486 150 L 486 134" marker-end="url(#wa)"/>
<path d="M 578 150 C 578 124 520 124 500 112" marker-end="url(#wa)"/>
</g>
<!-- component nodes -->
<g font-family="sans-serif" font-size="11" text-anchor="middle">
<rect x="418" y="46" width="136" height="30" rx="7" fill="#e8f0fd" stroke="#2d6cdf" stroke-width="1.6"/>
<text x="486" y="65" fill="#1c3f80">funnel-core</text>
<rect x="418" y="98" width="136" height="30" rx="7" fill="#fff6e5" stroke="#c98a12"/>
<text x="486" y="117" fill="#7a5407">nornir</text>
<rect x="418" y="150" width="120" height="30" rx="7" fill="#fff6e5" stroke="#c98a12"/>
<text x="478" y="169" fill="#7a5407">nornir-viz</text>
<rect x="546" y="150" width="60" height="30" rx="7" fill="#fff6e5" stroke="#c98a12"/>
<text x="576" y="169" fill="#7a5407">dwarves</text>
</g>
<text x="486" y="204" font-family="sans-serif" font-size="10.5" fill="#7a5407" text-anchor="middle">amber = blast radius of funnel-core</text>
<text x="486" y="219" font-family="sans-serif" font-size="10.5" fill="#6b6b78" text-anchor="middle">(transitive DEPENDENTS — arrows point at the dependency)</text>
<text x="60" y="248" font-family="sans-serif" font-size="10.5" fill="#6b6b78" text-anchor="middle">coverage 3/4</text>
</svg>