Gunnar

mikronova/funnel-core

.nornir/assets/plandag-growth.svg

<svg viewBox="0 0 560 220" width="560" height="220" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Plan-DAG growth timeline: the mother i-001 is born at step 0, tasks n-001/n-002/n-003 at steps 3/4/5 (each with its mother edge), the dependency edges a-to-b and b-to-c at steps 6 and 7; the node and edge counts only ever grow.">
  <defs>
    <marker id="gtip" 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="#1f8a4c"/>
    </marker>
  </defs>

  <!-- time axis -->
  <line x1="40" y1="150" x2="520" y2="150" stroke="#8a8a99" stroke-width="1.1"/>
  <text x="524" y="154" font-family="ui-sans-serif, system-ui, sans-serif" font-size="11" fill="#6b6b80">step</text>
  <g font-family="ui-sans-serif, system-ui, sans-serif" font-size="10" fill="#6b6b80" text-anchor="middle">
    <line x1="60"  y1="146" x2="60"  y2="154" stroke="#8a8a99"/><text x="60"  y="168">0</text>
    <line x1="112" y1="146" x2="112" y2="154" stroke="#8a8a99"/><text x="112" y="168">1</text>
    <line x1="164" y1="146" x2="164" y2="154" stroke="#8a8a99"/><text x="164" y="168">2</text>
    <line x1="216" y1="146" x2="216" y2="154" stroke="#8a8a99"/><text x="216" y="168">3</text>
    <line x1="268" y1="146" x2="268" y2="154" stroke="#8a8a99"/><text x="268" y="168">4</text>
    <line x1="320" y1="146" x2="320" y2="154" stroke="#8a8a99"/><text x="320" y="168">5</text>
    <line x1="372" y1="146" x2="372" y2="154" stroke="#8a8a99"/><text x="372" y="168">6</text>
    <line x1="424" y1="146" x2="424" y2="154" stroke="#8a8a99"/><text x="424" y="168">7</text>
    <line x1="476" y1="146" x2="476" y2="154" stroke="#8a8a99"/><text x="476" y="168">8</text>
  </g>

  <!-- births: a node/edge appears at its step (the reveal animation plays left to right) -->
  <g font-family="ui-sans-serif, system-ui, sans-serif" font-size="11.5" text-anchor="middle">
    <!-- mother node born at step 0 -->
    <rect x="30" y="95" width="60" height="26" rx="6" fill="#e8f6ee" stroke="#1f8a4c" stroke-width="1.3"/>
    <text x="60" y="112" fill="#000000">i-001</text>
    <!-- task nodes born at 3 / 4 / 5, each with its mother edge -->
    <rect x="186" y="95" width="60" height="26" rx="6" fill="#e8f6ee" stroke="#1f8a4c" stroke-width="1.3"/>
    <text x="216" y="112" fill="#000000">n-001</text>
    <rect x="238" y="95" width="60" height="26" rx="6" fill="#e8f6ee" stroke="#1f8a4c" stroke-width="1.3"/>
    <text x="268" y="112" fill="#000000">n-002</text>
    <rect x="290" y="95" width="60" height="26" rx="6" fill="#e8f6ee" stroke="#1f8a4c" stroke-width="1.3"/>
    <text x="320" y="112" fill="#000000">n-003</text>
  </g>

  <!-- mother edges born with their child node (steps 3/4/5) -->
  <g stroke="#8a8a99" stroke-width="1.1" fill="none" stroke-dasharray="3 2">
    <line x1="72"  y1="108" x2="186" y2="102" marker-end="url(#gtip)"/>
  </g>
  <!-- dependency edges born at their own EdgeAdded (steps 6 and 7) -->
  <g font-family="ui-sans-serif, system-ui, sans-serif" font-size="10" text-anchor="middle" fill="#1f8a4c">
    <line x1="372" y1="82" x2="372" y2="94" stroke="#1f8a4c" stroke-width="1.4" marker-end="url(#gtip)"/>
    <text x="372" y="74">dep a&#8594;b</text>
    <line x1="424" y1="82" x2="424" y2="94" stroke="#1f8a4c" stroke-width="1.4" marker-end="url(#gtip)"/>
    <text x="424" y="74">dep b&#8594;c</text>
  </g>

  <!-- growth curve: node_count_at / edge_count_at only ever climb -->
  <g font-family="ui-sans-serif, system-ui, sans-serif" font-size="10" fill="#6b6b80">
    <text x="40" y="30" text-anchor="start" fill="#2a6df4">nodes</text>
    <polyline points="60,44 112,44 164,44 216,40 268,36 320,32 372,32 424,32 476,32" fill="none" stroke="#2a6df4" stroke-width="1.6"/>
    <text x="120" y="30" text-anchor="start" fill="#d9a441">edges</text>
    <polyline points="60,52 112,52 164,52 216,50 268,48 320,46 372,42 424,38 476,38" fill="none" stroke="#d9a441" stroke-width="1.6"/>
  </g>

  <text x="280" y="204" font-family="ui-sans-serif, system-ui, sans-serif" font-size="10" fill="#6b6b80" text-anchor="middle">DagGrowth::from_events — each node/edge stamped with the step it FIRST appeared; the count never decreases (append-only log)</text>
</svg>