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

nordisk/dwarves

.nornir/assets/dwarves-embed-live-report.svg

<svg xmlns="http://www.w3.org/2000/svg" width="900" height="384" 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}
    .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 — GetRunReport RPC (per-step wire) + dwarves-embed live-forge tab; GREEN = REUSED shared piece, YELLOW = the wire</text>

  <!-- server side -->
  <text x="12" y="48" class="acc">dwarves-server — DwarfSvc::get_run_report(run_id)</text>

  <rect class="box" x="12" y="60" width="176" height="86"/>
  <text x="24" y="84" class="t">read_runs()</text>
  <text x="24" y="102" class="dim">parent RunRow</text>
  <text x="24" y="120" class="t">read_steps(run_id)</text>
  <text x="24" y="138" class="dim">steps.jsonl (new reader)</text>

  <rect class="box" x="220" y="60" width="176" height="86"/>
  <text x="232" y="84" class="t">Dag::build(registry)</text>
  <text x="232" y="102" class="dim">step → needs edges</text>
  <text x="232" y="120" class="dim">(unregistered ⇒</text>
  <text x="232" y="138" class="dim">empty, still crosses)</text>

  <rect class="box" x="428" y="60" width="200" height="86"/>
  <text x="440" y="84" class="wire">RunReport (dwarf.v1)</text>
  <text x="440" y="104" class="dim">RunRow run = 1</text>
  <text x="440" y="122" class="dim">repeated BuildRow = 2</text>
  <text x="440" y="140" class="wire">+ needs = 12</text>

  <line class="arr" x1="188" y1="103" x2="220" y2="103"/>
  <line class="arr" x1="396" y1="103" x2="428" y2="103"/>

  <!-- wire hop -->
  <path class="arr" d="M528,146 L528,196"/>
  <text x="540" y="176" class="wire">GetRunReport gRPC · Bearer auth (shared nornir-service)</text>

  <!-- client side -->
  <text x="12" y="222" class="acc">dwarves-embed — thin tonic client (NO nornir dep, NO dwarves `server` feature)</text>

  <rect class="box" x="12" y="234" width="176" height="80"/>
  <text x="24" y="258" class="t">DwarfClient</text>
  <text x="24" y="276" class="dim">History→newest run</text>
  <text x="24" y="294" class="dim">or $DWARVES_RUN_ID</text>

  <rect class="box" x="220" y="234" width="188" height="80"/>
  <text x="232" y="258" class="t">report_from_wire()</text>
  <text x="232" y="276" class="dim">→ (Dag, RunReport)</text>
  <text x="232" y="294" class="dim">pure · unit-tested</text>

  <rect class="reuse" x="440" y="234" width="188" height="80"/>
  <text x="452" y="258" class="acc">ForgePipelineAdapter</text>
  <text x="452" y="276" class="dim">::from_report (REUSED)</text>
  <text x="452" y="294" class="dim">steps→nodes, needs→edges</text>

  <rect class="reuse" x="660" y="234" width="176" height="80"/>
  <text x="672" y="258" class="acc">PipelineView</text>
  <text x="672" y="276" class="dim">facett-pipeline (REUSED)</text>
  <text x="672" y="294" class="dim">"Forge (live)" tab</text>

  <line class="arr" x1="188" y1="274" x2="220" y2="274"/>
  <line class="arr" x1="408" y1="274" x2="440" y2="274"/>
  <line class="arr2" x1="628" y1="274" x2="660" y2="274"/>

  <text x="12" y="352" class="dim">Offline / no runs ⇒ clean "forge unavailable" pane (never a panic). Auto-poll (1.5s) fills a run in flight live.</text>
  <text x="12" y="372" class="dim">Additive: the in-process Pipeline tab (run_pipeline → same adapter) stays unchanged.</text>
</svg>