Gunnar

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>