.nornir/assets/build-space-executables.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 880 520" font-family="'Segoe UI',Roboto,Helvetica,Arial,sans-serif" role="img" aria-label="holger build-space: one source, three named executables via nornir-build-thing">
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M0,0 L10,5 L0,10 z" fill="#5b6b7b"/>
</marker>
<style>
.title{font-size:22px;font-weight:700;fill:#1d2733}
.sub{font-size:13px;fill:#5b6b7b}
.box{fill:#ffffff;stroke:#c3ccd6;stroke-width:1.5;rx:10}
.lbl{font-size:14px;font-weight:600;fill:#1d2733}
.mono{font-family:'JetBrains Mono',Consolas,monospace;font-size:11px;fill:#3a4652}
.pill{font-size:11px;font-weight:600}
.cap{font-size:11px;fill:#5b6b7b}
.edge{stroke:#5b6b7b;stroke-width:1.6;fill:none}
</style>
</defs>
<text x="32" y="42" class="title">holger build-space — one source, three named executables</text>
<text x="32" y="64" class="sub">task #36 · declared as data · the first consumer of nornir-build-thing</text>
<!-- source data -->
<rect x="32" y="96" width="230" height="118" class="box" rx="10"/>
<text x="48" y="122" class="lbl">.nornir/build-variants.toml</text>
<text x="48" y="144" class="mono">[build] offers = […]</text>
<text x="48" y="160" class="mono">exclusive = [[embedded,</text>
<text x="48" y="174" class="mono"> mini, full]]</text>
<text x="48" y="190" class="mono">[[build.variant]] ×3</text>
<text x="48" y="206" class="cap">= server/cli via include_str!</text>
<!-- build-thing engine -->
<rect x="320" y="96" width="220" height="118" class="box" rx="10"/>
<text x="336" y="122" class="lbl">nornir-build-thing</text>
<text x="336" y="146" class="mono">BuildVariantSet::validate</text>
<text x="336" y="162" class="mono">·offers ·exclusive</text>
<text x="336" y="178" class="mono">·required-features</text>
<text x="336" y="196" class="mono">→ materialize cargo argv</text>
<text x="336" y="208" class="cap">+ build-provenance attest (seal)</text>
<line x1="262" y1="155" x2="320" y2="155" class="edge" marker-end="url(#arrow)"/>
<!-- three executables -->
<!-- embedded -->
<rect x="600" y="88" width="250" height="112" class="box" rx="10"/>
<rect x="600" y="88" width="7" height="112" fill="#3f9d6b" rx="3"/>
<text x="620" y="114" class="lbl">holger-embedded</text>
<rect x="620" y="124" width="94" height="18" rx="9" fill="#e4f3ea" stroke="#3f9d6b"/>
<text x="628" y="137" class="pill" fill="#2c7a51">embedded · sign</text>
<text x="620" y="162" class="cap">tiniest airgap/edge build</text>
<text x="620" y="180" class="cap">no federation (proven by</text>
<text x="620" y="193" class="cap">cargo tree: no reqwest)</text>
<!-- mikro -->
<rect x="600" y="212" width="250" height="96" class="box" rx="10"/>
<rect x="600" y="212" width="7" height="96" fill="#3f7f9d" rx="3"/>
<text x="620" y="238" class="lbl">holger-mikro</text>
<rect x="620" y="248" width="52" height="18" rx="9" fill="#e4eef5" stroke="#3f7f9d"/>
<text x="628" y="261" class="pill" fill="#2c5f7a">mini</text>
<text x="620" y="286" class="cap">stripped read-only server</text>
<text x="620" y="299" class="cap">airgap / red-zone · no federation</text>
<!-- full -->
<rect x="600" y="320" width="250" height="112" class="box" rx="10"/>
<rect x="600" y="320" width="7" height="112" fill="#b06b2c" rx="3"/>
<text x="620" y="346" class="lbl">holger-full</text>
<rect x="620" y="356" width="120" height="18" rx="9" fill="#f6ebe0" stroke="#b06b2c"/>
<text x="628" y="369" class="pill" fill="#8a4e18">full = federation ✓</text>
<text x="620" y="394" class="cap">writable · proxy · import</text>
<text x="620" y="407" class="cap">Skidbladnir ship: Artifactory /</text>
<text x="620" y="420" class="cap">Nexus / Azure / AWS</text>
<path d="M540,150 C570,150 575,144 596,144" class="edge" marker-end="url(#arrow)"/>
<path d="M540,158 C572,200 575,258 596,258" class="edge" marker-end="url(#arrow)"/>
<path d="M540,166 C574,300 575,372 596,372" class="edge" marker-end="url(#arrow)"/>
<!-- footer -->
<rect x="32" y="300" width="508" height="150" class="box" rx="10"/>
<text x="48" y="326" class="lbl">shared source · distinct fatness</text>
<text x="48" y="350" class="mono">server/cli/src/main.rs → 3 [[bin]] (required-features)</text>
<text x="48" y="372" class="cap">one source tree; each binary's NAME states its fatness and its linked</text>
<text x="48" y="386" class="cap">dependency closure PROVES it. Mutually-exclusive mode features.</text>
<text x="48" y="410" class="mono">cargo run -p xtask build --list # reflect the 3 tiers</text>
<text x="48" y="426" class="mono">cargo run -p xtask build --variant full # press + attest</text>
<text x="48" y="444" class="cap">legacy holger-server bin stays for the Skidbladnir systemd service spec.</text>
</svg>