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

nordisk/dwarves

.nornir/assets/holger-build-thing.svg

<svg xmlns="http://www.w3.org/2000/svg" width="940" height="500" 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)}
    .arrw{stroke:#f5d76f;stroke-width:1.5;fill:none;marker-end:url(#c)}
  </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>
    <marker id="c" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto"><path d="M0,0 L7,3 L0,6 Z" fill="#f5d76f"/></marker>
  </defs>

  <text x="12" y="20" class="acc">holger-build-thing — GREEN = REUSED (holger's build-space · nornir-build-thing); BLUE = dwarves orchestration; YELLOW = the plan/wire</text>

  <!-- holger declared build-space -->
  <text x="12" y="52" class="acc">holger (declares its build-space as data)</text>
  <rect class="reuse" x="12" y="64" width="250" height="104"/>
  <text x="24" y="88" class="acc">.nornir/build-variants.toml</text>
  <text x="24" y="108" class="dim">embedded → holger-embedded</text>
  <text x="24" y="126" class="dim">mini     → holger-mikro</text>
  <text x="24" y="144" class="dim">full     → holger-full</text>

  <!-- discover -->
  <path class="arrw" d="M262,116 L318,116"/>
  <text x="266" y="108" class="wire">discover</text>

  <!-- dwarves pipeline -->
  <text x="330" y="52" class="t">dwarves (orchestrates)</text>
  <rect class="box" x="330" y="64" width="250" height="104"/>
  <text x="342" y="88" class="t">holger_build::pipeline()</text>
  <text x="342" y="108" class="dim">Variant step: embedded</text>
  <text x="342" y="126" class="dim">Variant step: mini</text>
  <text x="342" y="144" class="dim">Variant step: full</text>

  <!-- resolve -->
  <path class="arrw" d="M455,168 L455,208"/>
  <text x="462" y="192" class="wire">resolve_variants (compile-free plan check)</text>

  <rect class="box" x="330" y="208" width="250" height="76"/>
  <text x="342" y="232" class="t">brokkr::resolve</text>
  <text x="342" y="252" class="dim">VariantResolution: 3 targets</text>
  <text x="342" y="270" class="acc">is_complete() ✓  (all resolve)</text>

  <!-- run-time build -->
  <path class="arr" d="M580,116 L636,116"/>
  <text x="584" y="108" class="dim">RealRunner (--real)</text>

  <text x="648" y="52" class="acc">nornir-build-thing (builds)</text>
  <rect class="reuse" x="648" y="64" width="270" height="220"/>
  <text x="660" y="88" class="acc">build_variant(set, tier, root)</text>
  <text x="660" y="112" class="dim">cargo build --bin holger-embedded …</text>
  <text x="660" y="130" class="dim">cargo build --bin holger-mikro …</text>
  <text x="660" y="148" class="dim">cargo build --bin holger-full …</text>
  <text x="660" y="176" class="dim">→ 3 executables + provenance</text>
  <text x="660" y="194" class="dim">  attestation (sha256, host, argv)</text>
  <text x="660" y="222" class="acc">ZERO shell — never a hand-rolled</text>
  <text x="660" y="240" class="acc">cargo invocation (Law #5a)</text>
  <text x="660" y="268" class="dim">artifacts → holger store (feature)</text>

  <!-- three doors onto the SAME resolution: local CLI verb + server RPC + thin-client verb -->
  <path class="arrw" d="M330,258 L214,308"/>
  <path class="arrw" d="M580,258 L706,308"/>

  <rect class="box" x="12" y="308" width="404" height="60"/>
  <text x="24" y="330" class="t">f4  dwarves holger-build ../holger  (local)</text>
  <text x="24" y="350" class="dim">resolves 3 tiers (exit 0), prints each cargo argv; no compile.</text>

  <rect class="box" x="524" y="308" width="404" height="60"/>
  <text x="536" y="330" class="t">f5  dwarf.v1 ResolveHolgerBuild (server RPC)</text>
  <text x="536" y="350" class="dim">HolgerBuildReply{tiers[],resolved,missing,complete,found}</text>

  <!-- f6 thin-client verb drives the f5 RPC over a real gRPC round-trip -->
  <path class="arrw" d="M726,368 L726,412"/>
  <text x="734" y="392" class="wire">thin_client::call (gRPC round-trip + bearer)</text>

  <rect class="box" x="524" y="412" width="404" height="60"/>
  <text x="536" y="434" class="t">f6  dwarves holger-build --server &lt;addr&gt;</text>
  <text x="536" y="454" class="dim">same 3-tier report + exit code as f4, resolved on the server.</text>

  <text x="12" y="452" class="acc">ONE resolution, THREE doors —</text>
  <text x="12" y="470" class="acc">local CLI (f4) · server RPC (f5) · thin-client verb (f6).</text>
  <text x="12" y="490" class="dim">Same resolve_against_repo + shared nornir-service connect/serve + bearer (no twin). Forge PLANS/WIRES; build-thing BUILDS.</text>
</svg>