.nornir/assets/warehouse-seam.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 380" font-family="-apple-system,Segoe UI,Roboto,sans-serif" font-size="14">
<defs>
<marker id="a" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto">
<path d="M0,0 L7,3 L0,6 Z" fill="#555"/>
</marker>
</defs>
<text x="30" y="30" font-weight="700" font-size="16">Warehouse seam — modgunn → skade (Iceberg), never nornir</text>
<!-- modgunn -->
<rect x="30" y="70" width="180" height="90" rx="8" fill="#fdf2ec" stroke="#c26a2b" stroke-width="1.5"/>
<text x="120" y="98" text-anchor="middle" font-weight="600">Warehouse</text>
<text x="120" y="118" text-anchor="middle" fill="#555" font-size="12">open / open_read_only</text>
<text x="120" y="138" text-anchor="middle" fill="#555" font-size="12">ensure_modgunn_tables</text>
<!-- skade -->
<rect x="30" y="230" width="180" height="90" rx="8" fill="#f2f6ee" stroke="#5c8a2f" stroke-width="1.5"/>
<text x="120" y="258" text-anchor="middle" font-weight="600">skade</text>
<text x="120" y="278" text-anchor="middle" fill="#555" font-size="12">embedded Iceberg</text>
<text x="120" y="298" text-anchor="middle" fill="#555" font-size="12">catalog.redb + warehouse/</text>
<!-- OWN tables -->
<rect x="300" y="60" width="230" height="120" rx="8" fill="#eefaf0" stroke="#2f8f4e" stroke-width="1.5"/>
<text x="415" y="84" text-anchor="middle" font-weight="600">OWNs (writes)</text>
<text x="415" y="106" text-anchor="middle" fill="#555" font-size="12">cve_advisories</text>
<text x="415" y="126" text-anchor="middle" fill="#555" font-size="12">world_snapshots · dep_edges</text>
<text x="415" y="146" text-anchor="middle" fill="#555" font-size="12">scip_symbols · behavior_deltas</text>
<text x="415" y="166" text-anchor="middle" fill="#555" font-size="12">tripwire_events · scorecard</text>
<!-- READ tables -->
<rect x="300" y="210" width="230" height="70" rx="8" fill="#eef3fb" stroke="#2b5fb3" stroke-width="1.5"/>
<text x="415" y="238" text-anchor="middle" font-weight="600">READs (nornir's)</text>
<text x="415" y="258" text-anchor="middle" fill="#555" font-size="12">sbom_components</text>
<!-- CDC -->
<rect x="600" y="130" width="190" height="120" rx="8" fill="#f6eefb" stroke="#7a3fb3" stroke-width="1.5"/>
<text x="695" y="154" text-anchor="middle" font-weight="600">CDC seam</text>
<text x="695" y="176" text-anchor="middle" fill="#555" font-size="12">commit_seq() poll</text>
<text x="695" y="196" text-anchor="middle" fill="#555" font-size="12">table_delta(from)</text>
<text x="695" y="216" text-anchor="middle" fill="#555" font-size="12">scan_sbom_delta</text>
<text x="695" y="236" text-anchor="middle" fill="#888" font-size="11">off skade read_delta</text>
<path d="M120,160 L120,230" fill="none" stroke="#555" stroke-width="1.4" marker-end="url(#a)"/>
<text x="128" y="200" fill="#5c8a2f" font-size="11">via skade only</text>
<path d="M210,110 L300,110" fill="none" stroke="#2f8f4e" stroke-width="1.4" marker-end="url(#a)"/>
<text x="222" y="102" fill="#2f8f4e" font-size="11">append</text>
<path d="M210,245 L300,245" fill="none" stroke="#2b5fb3" stroke-width="1.4" marker-end="url(#a)"/>
<text x="228" y="237" fill="#2b5fb3" font-size="11">read</text>
<path d="M530,150 C560,150 575,175 600,180" fill="none" stroke="#555" stroke-width="1.4" marker-end="url(#a)"/>
<path d="M530,245 C560,245 575,215 600,205" fill="none" stroke="#555" stroke-width="1.4" marker-end="url(#a)"/>
<text x="300" y="330" fill="#888" font-size="12">same physical catalog / `nornir` namespace — single-writer coordinated; reader copies aside when locked</text>
</svg>