init: technical-visualization-haness 하네스 설계

This commit is contained in:
DongHyeonka
2026-07-24 14:02:50 +09:00
parent 09d7c594da
commit f43e909162
117 changed files with 10150 additions and 1 deletions
+5
View File
@@ -0,0 +1,5 @@
# 대체 설명
VM Custom Resource를 감시하는 VM Operator가 VM을 생성하고 실패 시 재생성하며 상태를 관찰하는 조정 루프.
전역 제목·부제·footer는 보이는 캔버스에 포함하지 않는다. 접근성용 SVG `<title>``<desc>`는 보이지 않는 메타데이터로 유지한다.
@@ -0,0 +1,31 @@
{
"id": "declarative-vm",
"visual_grammar": "reconciliation_loop",
"reader_question": "선언 상태와 실제 VM 상태가 다를 때 컨트롤러는 무엇을 하는가?",
"diagram_only": true,
"visible_text_scope": [
"node labels",
"boundary labels",
"edge labels",
"state/time annotations required to decode the relation"
],
"forbidden_visible_elements": [
"global title",
"subtitle paragraph",
"footer",
"takeaway band",
"pattern number",
"generator watermark",
"decorative metric card",
"gradient",
"drop shadow",
"glow"
],
"palette_policy": "grayscale plus one primary accent; status colors only when semantic",
"required_renderer_capabilities": [
"document shape",
"controller",
"failure marker",
"status feedback"
]
}
@@ -0,0 +1,5 @@
# Context
독자가 확인해야 할 질문: **선언 상태와 실제 VM 상태가 다를 때 컨트롤러는 무엇을 하는가?**
이 fixture는 문서 본문이 이미 문제와 결론을 설명한다고 가정한다. 따라서 SVG에는 다이어그램 관계를 해독하는 데 필요한 기술 레이블만 둔다.
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="720" viewBox="0 0 1440 720" role="img" aria-labelledby="title desc">
<title id="title">Declarative reconciliation</title>
<desc id="desc">VM Custom Resource를 감시하는 VM Operator가 VM을 생성하고 실패 시 재생성하며 상태를 관찰하는 조정 루프.</desc>
<metadata>{&quot;generator&quot;:&quot;examples/build_examples.py&quot;,&quot;version&quot;:&quot;0.3.0&quot;,&quot;canvas_policy&quot;:&quot;diagram-only&quot;,&quot;decorative_effects&quot;:false}</metadata>
<defs>
<marker id="arrow-ink" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#24272B"/></marker>
<marker id="arrow-muted" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#667085"/></marker>
<marker id="arrow-blue" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#1677FF"/></marker>
<marker id="arrow-green" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#00A86B"/></marker>
<marker id="arrow-red" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#D94B4B"/></marker>
<marker id="arrow-purple" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#7556D8"/></marker>
<marker id="arrow-white" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#FFFFFF"/></marker>
<marker id="arrow-yellow" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto" markerUnits="strokeWidth"><path d="M 0 0 L 10 4 L 0 8 z" fill="#E7C51D"/></marker>
</defs>
<rect width="1440" height="720" fill="#000000"/>
<polygon points="70,145 320,145 390,215 390,535 70,535" fill="#000000" stroke="#1F75FF" stroke-width="4" />
<path d="M 320 145 L 320 215 L 390 215" fill="none" stroke="#1F75FF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
<text x="110" y="255" font-family='&quot;Noto Sans Mono CJK KR&quot;, &quot;D2Coding&quot;, monospace' font-size="21" font-weight="650" fill="#FFFFFF" text-anchor="start">
<tspan x="110" dy="0">kind: VM</tspan>
<tspan x="110" dy="26.9">spec:</tspan>
<tspan x="110" dy="26.9"> vCPU: 2</tspan>
<tspan x="110" dy="26.9"> memory: 8GB</tspan>
<tspan x="110" dy="26.9"> process:</tspan>
<tspan x="110" dy="26.9"> - dbaas-agent</tspan>
<tspan x="110" dy="26.9">status:</tspan>
<tspan x="110" dy="26.9"> dbaas-agent: ok</tspan>
</text>
<text x="230" y="585" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="22" font-weight="650" fill="#FFFFFF" text-anchor="middle">VM Custom Resource</text>
<rect x="620" y="235" width="240" height="250" fill="#000000" stroke="#1F75FF" stroke-width="4" rx="2" />
<path d="M 620 318.3 L 860 318.3" fill="none" stroke="#1F75FF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
<path d="M 620 401.7 L 860 401.7" fill="none" stroke="#1F75FF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
<rect x="640" y="271.7" width="10" height="10" fill="#1F75FF" />
<rect x="640" y="355" width="10" height="10" fill="#1F75FF" />
<rect x="640" y="438.3" width="10" height="10" fill="#1F75FF" />
<text x="740" y="535" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="24" font-weight="650" fill="#FFFFFF" text-anchor="middle">VM Operator</text>
<rect x="1120" y="170" width="245" height="370" fill="#000000" stroke="#1F75FF" stroke-width="4" />
<polygon points="1200,260 1285,260 1305,290 1180,290" fill="#1F75FF" />
<rect x="1190" y="290" width="105" height="95" fill="#1F75FF" />
<text x="1242" y="347" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="17" font-weight="650" fill="#FFFFFF" text-anchor="middle">dbaas-agent</text>
<text x="1242" y="590" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="22" font-weight="650" fill="#FFFFFF" text-anchor="middle">VM</text>
<path d="M 620 360 L 390 360" fill="none" stroke="#1F75FF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
<rect x="476.9" y="329" width="66.2" height="28" fill="#000000" rx="2" />
<text x="510" y="350" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="19" font-weight="650" fill="#FFFFFF" text-anchor="middle">watch</text>
<path d="M 860 360 L 1000 360" fill="none" stroke="#1F75FF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" />
<rect x="873.3" y="325" width="103.5" height="27" fill="#000000" rx="2" />
<text x="925" y="345" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="18" font-weight="650" fill="#FFFFFF" text-anchor="middle">create VM</text>
<path d="M 977 312 L 1073 408" fill="none" stroke="#FF3B45" stroke-width="11" stroke-linecap="round" stroke-linejoin="round" />
<path d="M 1073 312 L 977 408" fill="none" stroke="#FF3B45" stroke-width="11" stroke-linecap="round" stroke-linejoin="round" />
<path d="M 1080 360 L 1120 360" fill="none" stroke="#1F75FF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-blue)" />
<text x="1025" y="255" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="19" font-weight="650" fill="#FF3B45" text-anchor="middle">실패 시 recreate</text>
<path d="M 1240 540 L 1240 640 L 740 640 L 740 485" fill="none" stroke="#1F75FF" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="8 7" marker-end="url(#arrow-blue)" />
<rect x="926.8" y="611" width="126.5" height="24" fill="#000000" rx="2" />
<text x="990" y="628" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="15" font-weight="600" fill="#FFFFFF" text-anchor="middle">observe status</text>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB