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

nordisk/dwarves

.nornir/assets/release-deps-consume.svg

<svg xmlns="http://www.w3.org/2000/svg" width="920" height="360" font-family="monospace" font-size="13">
  <style>
    .box{fill:#0f2233;stroke:#6fd3f5;stroke-width:1.5}
    .reuse{fill:#12331f;stroke:#7fe0a0;stroke-width:1.5}
    .warn{fill:#33210f;stroke:#f5b76f;stroke-width:1.5}
    .t{fill:#dbeafe}.dim{fill:#9fb6c6}.acc{fill:#7fe0a0}.wire{fill:#f5d76f}
    .arr{stroke:#6fd3f5;stroke-width:1.5;fill:none;marker-end:url(#a)}
    .arr2{stroke:#7fe0a0;stroke-width:1.5;fill:none;marker-end:url(#b)}
  </style>
  <defs>
    <marker id="a" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto"><path d="M0,0 L7,3 L0,6 Z" fill="#6fd3f5"/></marker>
    <marker id="b" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto"><path d="M0,0 L7,3 L0,6 Z" fill="#7fe0a0"/></marker>
  </defs>

  <text x="12" y="20" class="acc">dwarves consumes the edda leaves — GREEN = REUSED leaf (one code source); AMBER = STAYS in nornir</text>

  <!-- release verb -->
  <text x="12" y="48" class="acc">dwarves release &lt;workspace&gt;   (ACT)</text>
  <rect class="box" x="12" y="60" width="196" height="74"/>
  <text x="24" y="84" class="t">release::discover_members</text>
  <text x="24" y="102" class="dim">parse Cargo.toml (toml)</text>
  <text x="24" y="120" class="dim">→ Vec&lt;Member&gt;</text>

  <path class="arr2" d="M208,97 L256,97"/>

  <rect class="reuse" x="256" y="60" width="220" height="74"/>
  <text x="268" y="84" class="acc">nornir_release::waves</text>
  <text x="268" y="102" class="dim">plan_waves → deps-first</text>
  <text x="268" y="120" class="dim">PublishWaves{phases,cyclic}</text>

  <path class="arr2" d="M476,97 L524,97"/>

  <rect class="reuse" x="524" y="60" width="230" height="74"/>
  <text x="536" y="84" class="acc">source_drift::can_skip_republish</text>
  <text x="536" y="102" class="dim">published + Unchanged ⇒ skip</text>
  <text x="536" y="120" class="dim">+ select_republish cascade</text>

  <path class="arr" d="M754,97 L800,97"/>
  <rect class="box" x="800" y="60" width="108" height="74"/>
  <text x="812" y="90" class="t">ReleasePlan</text>
  <text x="812" y="110" class="dim">waves +</text>
  <text x="812" y="126" class="dim">skippable</text>

  <!-- warehouse-coupled stays in nornir -->
  <rect class="warn" x="256" y="150" width="498" height="40"/>
  <text x="268" y="175" class="wire">STAYS in nornir (warehouse-coupled): release doctor / gate / preflight / actual publish — reached over gRPC</text>

  <!-- deps verb -->
  <text x="12" y="228" class="acc">dwarves deps &lt;dir-of-repos&gt;   (ACT)</text>
  <rect class="box" x="12" y="240" width="196" height="74"/>
  <text x="24" y="264" class="t">depview::discover_repos</text>
  <text x="24" y="282" class="dim">subdirs with Cargo.toml</text>
  <text x="24" y="300" class="dim">→ member→path map</text>

  <path class="arr2" d="M208,277 L256,277"/>

  <rect class="reuse" x="256" y="240" width="230" height="74"/>
  <text x="268" y="264" class="acc">WorkspaceGraph::build_from_members</text>
  <text x="268" y="282" class="dim">cross-repo edges (manifest parse)</text>
  <text x="268" y="300" class="dim">build_order() deps-first</text>

  <path class="arr2" d="M486,277 L534,277"/>

  <rect class="reuse" x="534" y="240" width="220" height="74"/>
  <text x="546" y="264" class="acc">layout::DepGraphLayout::build</text>
  <text x="546" y="282" class="dim">pure (egui-free) layout</text>
  <text x="546" y="300" class="dim">→ state_json (SAME as nornir)</text>

  <path class="arr" d="M754,277 L800,277"/>
  <rect class="box" x="800" y="240" width="108" height="74"/>
  <text x="812" y="270" class="t">dep view</text>
  <text x="812" y="290" class="dim">nodes/edges</text>
  <text x="812" y="306" class="dim">+ order</text>

  <text x="12" y="340" class="dim">Behind `--features release`; leaves are std-only (no warehouse/egui) so dwarves runs the SAME logic nornir does — no twin, no dep cycle.</text>
</svg>