crates/nornir-testmatrix/.nornir/assets/functional_status_flow.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1060 470" font-family="ui-monospace,'JetBrains Mono',Menlo,monospace">
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0b1c2e"/>
<stop offset="1" stop-color="#06111d"/>
</linearGradient>
<marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
<path d="M0 0 L10 5 L0 10 z" fill="#4fd6e0"/>
</marker>
<filter id="g"><feGaussianBlur stdDeviation="2.2" result="b"/><feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter>
</defs>
<rect width="1060" height="470" fill="url(#bg)"/>
<rect x="8" y="8" width="1044" height="454" rx="10" fill="none" stroke="#1c3a4f"/>
<text x="30" y="44" fill="#9fe8f0" font-size="20" font-weight="700">nornir test-matrix · functional-status flow</text>
<text x="30" y="68" fill="#6f93a0" font-size="13">green ⟺ the function emitted ok=true from the inside — never a claim, never an outside assert. no consultant-green.</text>
<!-- FUNCTION -->
<g>
<rect x="34" y="120" width="300" height="150" rx="9" fill="#0e2436" stroke="#4fd6e0" stroke-width="1.5"/>
<text x="50" y="148" fill="#4fd6e0" font-size="14" font-weight="700">① FUNCTION UNDER TEST</text>
<text x="50" y="174" fill="#cfe9f0" font-size="12">computes its REAL state, e.g.</text>
<text x="50" y="194" fill="#9fe8f0" font-size="12">ok = ways > 0 && lit_px > 0</text>
<text x="50" y="220" fill="#cfe9f0" font-size="12">emits it from the inside:</text>
<text x="50" y="240" fill="#9fe8f0" font-size="12">functional_status(</text>
<text x="62" y="258" fill="#9fe8f0" font-size="12">component, check, ok, detail)</text>
<rect x="50" y="100" width="246" height="20" rx="5" fill="#11202b" stroke="#54d98c" stroke-opacity="0.7"/>
<text x="58" y="114" fill="#54d98c" font-size="11">#[cfg(feature = "testmatrix")] ← gated</text>
</g>
<!-- WAREHOUSE -->
<g>
<rect x="396" y="120" width="262" height="150" rx="9" fill="#0e2436" stroke="#4fd6e0" stroke-width="1.5"/>
<text x="412" y="148" fill="#4fd6e0" font-size="14" font-weight="700">② WAREHOUSE</text>
<text x="412" y="176" fill="#cfe9f0" font-size="12">test_results table</text>
<text x="412" y="196" fill="#cfe9f0" font-size="12">aspect = "functional"</text>
<text x="412" y="216" fill="#cfe9f0" font-size="12">status = pass | fail</text>
<text x="412" y="244" fill="#6f93a0" font-size="11.5">persisted · queryable · durable</text>
<text x="412" y="261" fill="#6f93a0" font-size="11.5">(the only source of truth)</text>
</g>
<!-- MATRIX -->
<g>
<rect x="720" y="120" width="306" height="150" rx="9" fill="#0e2436" stroke="#4fd6e0" stroke-width="1.5"/>
<text x="736" y="148" fill="#4fd6e0" font-size="14" font-weight="700">③ TEST MATRIX</text>
<text x="736" y="176" fill="#cfe9f0" font-size="12">reads the emitted status back</text>
<text x="736" y="204" fill="#54d98c" font-size="12.5">GREEN ⟺ emitted ok = true</text>
<text x="736" y="226" fill="#e06666" font-size="12.5">RED ⟺ emitted ok = false</text>
<text x="736" y="252" fill="#6f93a0" font-size="11.5">nobody types "green" — the matrix</text>
<text x="736" y="268" fill="#6f93a0" font-size="11.5">reads what the function emitted</text>
</g>
<!-- flow arrows -->
<line x1="334" y1="195" x2="394" y2="195" stroke="#4fd6e0" stroke-width="2" marker-end="url(#arr)" filter="url(#g)"/>
<line x1="658" y1="195" x2="718" y2="195" stroke="#4fd6e0" stroke-width="2" marker-end="url(#arr)" filter="url(#g)"/>
<text x="338" y="186" fill="#6f93a0" font-size="10.5">write</text>
<text x="662" y="186" fill="#6f93a0" font-size="10.5">read</text>
<!-- RELEASE strip -->
<g>
<rect x="34" y="320" width="624" height="92" rx="9" fill="#0e2436" stroke="#e0a85a" stroke-width="1.5" stroke-dasharray="6 4"/>
<text x="50" y="348" fill="#e0a85a" font-size="14" font-weight="700">RELEASE BUILD (no testmatrix feature)</text>
<text x="50" y="374" fill="#cfe9f0" font-size="12">functional_status() = #[inline] no-op stub — the emit code is NOT COMPILED.</text>
<text x="50" y="396" fill="#6f93a0" font-size="12">zero cost · nothing written · the matrix instrumentation ships nowhere.</text>
</g>
<!-- loop note -->
<g>
<rect x="720" y="320" width="306" height="92" rx="9" fill="#0e2436" stroke="#4fd6e0" stroke-width="1.5"/>
<text x="736" y="348" fill="#4fd6e0" font-size="13" font-weight="700">AUTONOMOUS LOOP</text>
<text x="736" y="372" fill="#cfe9f0" font-size="11.5">build → emit → read status →</text>
<text x="736" y="390" fill="#cfe9f0" font-size="11.5">fix → repeat UNTIL GREEN.</text>
<text x="736" y="406" fill="#6f93a0" font-size="11">no asking. the matrix is the judge.</text>
</g>
<text x="30" y="446" fill="#3f5b68" font-size="10.5">Skíðblaðnir house style · the function proves itself from the inside · warehouse records · matrix reads · stripped in release</text>
</svg>