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-run-picker.svg

<svg xmlns="http://www.w3.org/2000/svg" width="900" height="356" 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-embed — Forge(live) run-picker; YELLOW = the wire, GREEN = REUSED (one History call, no proto change)</text>

  <!-- server -->
  <text x="12" y="48" class="acc">dwarves-server</text>
  <rect class="box" x="12" y="60" width="176" height="70"/>
  <text x="24" y="84" class="t">History(limit=N)</text>
  <text x="24" y="102" class="dim">newest-first RunRows</text>
  <text x="24" y="120" class="dim">(run_id·pipeline·status)</text>

  <!-- wire -->
  <path class="arr" d="M188,95 L236,95"/>
  <text x="196" y="88" class="wire">gRPC · Bearer</text>

  <!-- fetch_forge -->
  <rect class="box" x="236" y="60" width="196" height="70"/>
  <text x="248" y="84" class="t">fetch_forge()</text>
  <text x="248" y="102" class="dim">ONE call → (runs, report)</text>
  <text x="248" y="120" class="dim">runs feed picker + newest</text>

  <path class="arr" d="M432,95 L480,95"/>

  <!-- picks -->
  <rect class="box" x="480" y="60" width="196" height="70"/>
  <text x="492" y="84" class="t">run_picks_from_wire()</text>
  <text x="492" y="102" class="dim">pure · order preserved</text>
  <text x="492" y="120" class="dim">Vec&lt;RunPick&gt;</text>

  <path class="arr" d="M676,95 L724,95"/>

  <!-- combo -->
  <rect class="box" x="724" y="60" width="160" height="70"/>
  <text x="736" y="84" class="t">ComboBox</text>
  <text x="736" y="102" class="dim">● newest</text>
  <text x="736" y="120" class="dim">run-3 · run-2 · …</text>

  <!-- pin loop -->
  <text x="12" y="176" class="acc">select an entry → pin its run_id → re-fetch that run's report</text>
  <rect class="box" x="12" y="188" width="220" height="62"/>
  <text x="24" y="212" class="t">update_json {"run_id":"…"}</text>
  <text x="24" y="230" class="dim">(""=newest) · the ComboBox</text>
  <text x="24" y="246" class="dim">click drives the SAME seam</text>

  <path class="arr" d="M232,219 L288,219"/>

  <rect class="box" x="288" y="188" width="196" height="62"/>
  <text x="300" y="212" class="t">GetRunReport(pin)</text>
  <text x="300" y="230" class="dim">parent RunRow + steps</text>
  <text x="300" y="246" class="dim">+ needs edges</text>

  <path class="arr2" d="M484,219 L540,219"/>

  <rect class="reuse" x="540" y="188" width="200" height="62"/>
  <text x="552" y="212" class="acc">ForgePipelineAdapter</text>
  <text x="552" y="230" class="dim">::from_report (REUSED)</text>
  <text x="552" y="246" class="dim">→ PipelineView</text>

  <text x="12" y="292" class="dim">state_json: { runs[], run_count, selected_run_id, history_limit } — the picker surface a robot asserts.</text>
  <text x="12" y="312" class="dim">Additive: unpinned ⇒ newest (unchanged default). Offline ⇒ clean "forge unavailable"; last-known list sticks through a blip.</text>
  <text x="12" y="332" class="dim">No proto change: History already carried the run list; the picker just surfaces + drives it.</text>
</svg>