.nornir/assets/common-framework.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1180 660" font-family="'DejaVu Sans', 'Segoe UI', sans-serif">
<defs>
<linearGradient id="board" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0b1c2e"/>
<stop offset="1" stop-color="#06111d"/>
</linearGradient>
<linearGradient id="chip" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#14384f"/>
<stop offset="1" stop-color="#0e2a3e"/>
</linearGradient>
<linearGradient id="rail" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#173d57"/>
<stop offset="1" stop-color="#0c2438"/>
</linearGradient>
<marker id="arr" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto">
<path d="M0 0 L7 3 L0 6 Z" fill="#6fd3f5"/>
</marker>
</defs>
<rect x="0" y="0" width="1180" height="660" fill="url(#board)"/>
<text x="40" y="46" fill="#bfe6f7" font-size="24" font-weight="700">holger on the shared nordisk common framework — consume, never twin</text>
<text x="40" y="72" fill="#6f9bb5" font-size="14">Every suite app (nornir · dwarves · korp · holger) reuses ONE toolbox: lifecycle · serve loop · job manager · UI (JetBrains-style).</text>
<!-- holger app (left) -->
<rect x="40" y="120" width="300" height="470" rx="12" fill="url(#chip)" stroke="#2b6c93"/>
<text x="60" y="152" fill="#bfe6f7" font-size="18" font-weight="700">holger (the artifact registry)</text>
<rect x="60" y="176" width="260" height="70" rx="8" fill="url(#rail)" stroke="#2b6c93"/>
<text x="76" y="204" fill="#cfeefc" font-size="14" font-weight="700">server/cli — the ship</text>
<text x="76" y="226" fill="#8fbcd4" font-size="12">install / start / status / health · holger user</text>
<rect x="60" y="258" width="260" height="70" rx="8" fill="url(#rail)" stroke="#2b6c93"/>
<text x="76" y="286" fill="#cfeefc" font-size="14" font-weight="700">server/lib — serve + jobs</text>
<text x="76" y="308" fill="#8fbcd4" font-size="12">tonic serve loop · promote / GC job ledger</text>
<rect x="60" y="340" width="260" height="92" rx="8" fill="url(#rail)" stroke="#2b6c93"/>
<text x="76" y="368" fill="#cfeefc" font-size="14" font-weight="700">server/ui — the operator GUI</text>
<text x="76" y="390" fill="#8fbcd4" font-size="12">About (identity) · Tools menu · look/table/3D</text>
<text x="76" y="410" fill="#8fbcd4" font-size="12">Tools · Demo appliance → a jera container job</text>
<rect x="60" y="444" width="260" height="60" rx="8" fill="url(#rail)" stroke="#2b6c93"/>
<text x="76" y="470" fill="#cfeefc" font-size="14" font-weight="700">holger-demo / holger-embed</text>
<text x="76" y="490" fill="#8fbcd4" font-size="12">wasm demo · native Box<dyn Facet> panel</text>
<!-- arrows to the toolbox -->
<line x1="340" y1="211" x2="820" y2="200" stroke="#6fd3f5" stroke-width="2" marker-end="url(#arr)"/>
<line x1="340" y1="293" x2="820" y2="330" stroke="#6fd3f5" stroke-width="2" marker-end="url(#arr)"/>
<line x1="340" y1="386" x2="820" y2="330" stroke="#6fd3f5" stroke-width="2" marker-end="url(#arr)"/>
<line x1="340" y1="386" x2="820" y2="460" stroke="#6fd3f5" stroke-width="2" marker-end="url(#arr)"/>
<line x1="340" y1="410" x2="820" y2="590" stroke="#6fd3f5" stroke-width="2" marker-end="url(#arr)"/>
<!-- shared toolbox (right) -->
<text x="820" y="150" fill="#8fd0ea" font-size="16" font-weight="700">the SHARED toolbox (edda / Skidbladnir / facett)</text>
<rect x="820" y="176" width="320" height="60" rx="8" fill="url(#chip)" stroke="#2b6c93"/>
<text x="838" y="202" fill="#cfeefc" font-size="14" font-weight="700">skidbladnir::service</text>
<text x="838" y="223" fill="#8fbcd4" font-size="12">ServiceSpec · Lifecycle · ensure_system_user</text>
<rect x="820" y="300" width="320" height="60" rx="8" fill="url(#chip)" stroke="#2b6c93"/>
<text x="838" y="326" fill="#cfeefc" font-size="14" font-weight="700">edda/nornir-service</text>
<text x="838" y="347" fill="#8fbcd4" font-size="12">the ONE tonic serve loop + auth interceptor</text>
<rect x="820" y="430" width="320" height="60" rx="8" fill="url(#chip)" stroke="#2b6c93"/>
<text x="838" y="456" fill="#cfeefc" font-size="14" font-weight="700">facett</text>
<text x="838" y="477" fill="#8fbcd4" font-size="12">look · menu · table · graph3d · helix</text>
<rect x="820" y="560" width="320" height="60" rx="8" fill="url(#chip)" stroke="#2b6c93"/>
<text x="838" y="586" fill="#cfeefc" font-size="14" font-weight="700">edda/jera → draupnir</text>
<text x="838" y="607" fill="#8fbcd4" font-size="12">jobs ledger · ContainerSpec (ONE OCI engine)</text>
<text x="40" y="628" fill="#6f9bb5" font-size="12">Two brains over one toolbox: nornir governs the workspace, dwarves runs CI; holger consumes the toolbox and stays the registry.</text>
</svg>