Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

.nornir/assets/plandag-constraints.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1180 520" font-family="'DejaVu Sans', 'Segoe UI', sans-serif">
  <defs>
    <linearGradient id="board" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#0b1c2e"/>
      <stop offset="1" stop-color="#06111d"/>
    </linearGradient>
    <linearGradient id="chip" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#14384f"/>
      <stop offset="1" stop-color="#0e2a3e"/>
    </linearGradient>
    <marker id="arrow" markerWidth="9" markerHeight="9" refX="7" refY="4" orient="auto">
      <path d="M0 0 L8 4 L0 8 Z" fill="#6c7a88"/>
    </marker>
    <marker id="crit" markerWidth="10" markerHeight="10" refX="7" refY="4" orient="auto">
      <path d="M0 0 L8 4 L0 8 Z" fill="#78d2ff"/>
    </marker>
  </defs>

  <rect x="0" y="0" width="1180" height="520" fill="url(#board)"/>
  <g stroke="#143a52" stroke-width="1">
    <line x1="0" y1="76" x2="1180" y2="76"/>
    <line x1="0" y1="486" x2="1180" y2="486"/>
  </g>

  <!-- title -->
  <text x="40" y="44" fill="#eaf6ff" font-size="22" font-weight="700">facett-plandag &#183; constraint overlay</text>
  <text x="470" y="44" fill="#9fc9e0" font-size="14">one <tspan fill="#bfe6ff" font-weight="700">resolve()</tspan> &#8594; badge the top bottleneck &#183; emphasise by downstream reach &#183; highlight the critical path</text>

  <!-- legend -->
  <g font-size="12.5">
    <circle cx="812" cy="60" r="7" fill="#f0b428"/><text x="825" y="64" fill="#f0d79a">top bottleneck (clear next)</text>
    <rect x="988" y="53" width="14" height="14" rx="3" fill="none" stroke="#78d2ff" stroke-width="2"/><text x="1008" y="64" fill="#9fc9e0">reach ring</text>
    <line x1="1088" y1="60" x2="1120" y2="60" stroke="#78d2ff" stroke-width="4"/><text x="1126" y="64" fill="#9fc9e0">crit path</text>
  </g>

  <!-- ================= the wide-vs-deep DAG ================= -->
  <!-- edges first (under nodes) -->
  <g fill="none" stroke-width="2">
    <!-- root -> wide (plain) -->
    <path d="M232 250 L300 168" stroke="#6c7a88" marker-end="url(#arrow)"/>
    <!-- wide -> w1/w2/w3 (plain) -->
    <path d="M452 152 L520 96"  stroke="#6c7a88" marker-end="url(#arrow)"/>
    <path d="M452 160 L520 160" stroke="#6c7a88" marker-end="url(#arrow)"/>
    <path d="M452 168 L520 224" stroke="#6c7a88" marker-end="url(#arrow)"/>
    <!-- CRITICAL PATH: root -> deep -> d1 -> d2 -> d3 -> d4 -->
    <path d="M232 262 L300 344" stroke="#78d2ff" stroke-width="4" marker-end="url(#crit)"/>
    <path d="M452 352 L520 352" stroke="#78d2ff" stroke-width="4" marker-end="url(#crit)"/>
    <path d="M672 352 L740 352" stroke="#78d2ff" stroke-width="4" marker-end="url(#crit)"/>
    <path d="M892 352 L960 352" stroke="#78d2ff" stroke-width="4" marker-end="url(#crit)"/>
    <path d="M1112 352 L1150 352" stroke="#78d2ff" stroke-width="4" marker-end="url(#crit)"/>
  </g>

  <!-- reach rings (outer accent, weight/alpha ~ downstream) -->
  <g fill="none" stroke="#78d2ff">
    <rect x="146" y="228" width="92" height="52" rx="9" stroke-opacity="0.75" stroke-width="2.5"/> <!-- root: reach 9 -->
    <rect x="304" y="330" width="92" height="52" rx="9" stroke-opacity="0.55" stroke-width="2"/>   <!-- deep: reach 4 -->
    <rect x="304" y="132" width="92" height="52" rx="9" stroke-opacity="0.45" stroke-width="1.6"/> <!-- wide: reach 3 -->
  </g>

  <!-- nodes -->
  <g font-size="12.5" text-anchor="middle">
    <!-- root (source, whole-plan cone; NOT badged) -->
    <rect x="150" y="232" width="84" height="44" rx="6" fill="url(#chip)" stroke="#7fb8d8" stroke-width="2"/>
    <text x="192" y="252" fill="#eaf6ff">Root</text><text x="192" y="268" fill="#8fb0c4" font-size="10">reach 9 &#183; fan_in 0</text>

    <!-- wide (fan_out 3, reach 3) -->
    <rect x="308" y="136" width="84" height="44" rx="6" fill="url(#chip)" stroke="#7fb8d8" stroke-width="2"/>
    <text x="350" y="156" fill="#eaf6ff">Wide</text><text x="350" y="172" fill="#8fb0c4" font-size="10">reach 3 &#183; fan_out 3</text>

    <rect x="524" y="76"  width="76" height="40" rx="6" fill="url(#chip)" stroke="#5f7488" stroke-width="1.5"/><text x="562" y="100" fill="#cfe0ec">W1</text>
    <rect x="524" y="140" width="76" height="40" rx="6" fill="url(#chip)" stroke="#5f7488" stroke-width="1.5"/><text x="562" y="164" fill="#cfe0ec">W2</text>
    <rect x="524" y="204" width="76" height="40" rx="6" fill="url(#chip)" stroke="#5f7488" stroke-width="1.5"/><text x="562" y="228" fill="#cfe0ec">W3</text>

    <!-- deep: THE BADGED top bottleneck (fan_out 1, reach 4) -->
    <rect x="308" y="330" width="84" height="44" rx="6" fill="url(#chip)" stroke="#f0b428" stroke-width="3"/>
    <circle cx="350" cy="330" r="9" fill="#f0b428"/><text x="350" y="334" fill="#1e190a" font-size="11">&#9873;</text>
    <text x="350" y="350" fill="#eaf6ff">Deep</text><text x="350" y="366" fill="#f0d79a" font-size="10">reach 4 &#183; fan_out 1</text>

    <rect x="524" y="330" width="76" height="44" rx="6" fill="url(#chip)" stroke="#78d2ff" stroke-width="1.8"/><text x="562" y="356" fill="#cfe0ec">D1</text>
    <rect x="744" y="330" width="76" height="44" rx="6" fill="url(#chip)" stroke="#78d2ff" stroke-width="1.8"/><text x="782" y="356" fill="#cfe0ec">D2</text>
    <rect x="964" y="330" width="76" height="44" rx="6" fill="url(#chip)" stroke="#78d2ff" stroke-width="1.8"/><text x="1002" y="356" fill="#cfe0ec">D3</text>
    <rect x="1094" y="330" width="76" height="44" rx="6" fill="url(#chip)" stroke="#78d2ff" stroke-width="1.8"/><text x="1132" y="356" fill="#cfe0ec">D4</text>
  </g>

  <!-- caption -->
  <text x="40" y="470" fill="#9fc9e0" font-size="13">
    <tspan fill="#f0d79a" font-weight="700">reach beats fan-out</tspan>: Deep (fan_out 1, downstream 4) is the badged constraint over Wide (fan_out 3, downstream 3); Root's whole-plan cone is skipped (fan_in 0). Badge / rings / crit-path all read one <tspan fill="#bfe6ff">resolved</tspan> graph &#8212; the pixels ARE state_json.
  </text>
</svg>