.nornir/assets/msi-oci-routing.svg
<svg xmlns="http://www.w3.org/2000/svg" width="760" height="330" font-family="monospace" font-size="13">
<style>
.box{fill:#12303a;stroke:#6fd3f5;stroke-width:1.5;rx:6}
.old{fill:#3a1c1c;stroke:#e0785a}
.eng{fill:#123a24;stroke:#6fe0a0}
.t{fill:#dceffa}.d{fill:#8fb8c8}.k{fill:#6fe0a0}.x{fill:#e0785a}
.arr{stroke:#6fd3f5;stroke-width:1.5;fill:none;marker-end:url(#a)}
</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></defs>
<text x="16" y="24" class="t" font-size="15">Skidbladnir MSI build — one OCI engine (draupnir), no podman shell</text>
<rect class="box" x="16" y="44" width="220" height="52"/>
<text x="28" y="68" class="t">WXS render + harvest</text>
<text x="28" y="86" class="d">staged workdir (always real)</text>
<path class="arr" d="M126,96 L126,120"/>
<rect class="box eng" x="16" y="120" width="360" height="96"/>
<text x="28" y="142" class="k">#[cfg(feature = "msi-oci")] → ZERO-SHELL</text>
<text x="28" y="162" class="t">BootSpec::container(image).with_cmd(</text>
<text x="40" y="178" class="d">wine wix.exe build /work/Product.wxs -o /work/out.msi)</text>
<text x="28" y="198" class="t">ContainerBoot::run_to_completion_with_binds(</text>
<text x="40" y="212" class="d">spec, RunOptions::default(), ["work:/work"]) ← draupnir</text>
<rect class="box old" x="396" y="120" width="348" height="96"/>
<text x="408" y="142" class="x">#[cfg(not(feature = "msi-oci"))] lean fallback</text>
<text x="408" y="162" class="d">podman_available() ?</text>
<text x="408" y="178" class="d"> Command::new("podman") run (kept, honest)</text>
<text x="408" y="196" class="d"> : bail("needs podman / --features msi-oci")</text>
<text x="408" y="212" class="x">exit != 0 → honest bail, never a fake MSI</text>
<path class="arr" d="M196,216 L196,244"/>
<rect class="box" x="16" y="244" width="360" height="46"/>
<text x="28" y="272" class="t">/work/out.msi ──(bind)──▶ work/out.msi ──▶ copy to out</text>
<rect class="box old" x="396" y="244" width="348" height="46"/>
<text x="408" y="266" class="x">pack.rs: podman build + create + cp — NOT routed</text>
<text x="408" y="283" class="d">(draupnir has no image-build/cp — tracked follow-up)</text>
</svg>