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 @@
# 대체 설명
메인 세션이 작업을 fan-out하고 스트리밍·폴링 프로세스를 실행하며 monitor의 알림을 구독하는 구조.
전역 제목·부제·footer는 보이는 캔버스에 포함하지 않는다. 접근성용 SVG `<title>``<desc>`는 보이지 않는 메타데이터로 유지한다.
@@ -0,0 +1,31 @@
{
"id": "mission-workers",
"visual_grammar": "orchestrator_workers",
"reader_question": "메인 세션이 서브 에이전트와 백그라운드 프로세스를 어떻게 조정하는가?",
"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": [
"hierarchy",
"worker group",
"bidirectional control",
"stdout routes"
]
}
@@ -0,0 +1,5 @@
# Context
독자가 확인해야 할 질문: **메인 세션이 서브 에이전트와 백그라운드 프로세스를 어떻게 조정하는가?**
이 fixture는 문서 본문이 이미 문제와 결론을 설명한다고 가정한다. 따라서 SVG에는 다이어그램 관계를 해독하는 데 필요한 기술 레이블만 둔다.
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="680" viewBox="0 0 1440 680" role="img" aria-labelledby="title desc">
<title id="title">Orchestrator and workers</title>
<desc id="desc">메인 세션이 작업을 fan-out하고 스트리밍·폴링 프로세스를 실행하며 monitor의 알림을 구독하는 구조.</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="680" fill="#FFFFFF"/>
<rect x="160" y="35" width="1120" height="108" fill="#FCFCFC" stroke="#555B63" stroke-width="1.6" rx="8" />
<text x="720" y="57" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#667085" text-anchor="middle" letter-spacing="1.1">&lt;&lt;orchestrator&gt;&gt;</text>
<text x="720" y="87" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">MAIN SESSION</text>
<text x="720" y="114" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">context + log</text>
<rect x="60" y="245" width="380" height="350" fill="none" stroke="#A7ADB5" stroke-width="1.3" rx="10" stroke-dasharray="7 5" />
<rect x="67" y="237" width="175.3" height="20" fill="#FFFFFF" rx="2" />
<text x="74" y="250" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#667085" text-anchor="start">&lt;&lt;workers&gt;&gt; × N · fan-out</text>
<text x="250" y="282" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="18" font-weight="700" fill="#24272B" text-anchor="middle">SUBAGENTS</text>
<rect x="100" y="305" width="300" height="38" fill="#FFFFFF" stroke="#B6BBC2" stroke-width="1.2" rx="5" />
<text x="118" y="329" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#8A919A" text-anchor="start">SA</text>
<text x="250" y="329" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="600" fill="#24272B" text-anchor="middle">Client RPS · latency</text>
<rect x="100" y="355" width="300" height="38" fill="#FFFFFF" stroke="#B6BBC2" stroke-width="1.2" rx="5" />
<text x="118" y="379" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#8A919A" text-anchor="start">SA</text>
<text x="250" y="379" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="600" fill="#24272B" text-anchor="middle">Server RPS · latency</text>
<rect x="100" y="405" width="300" height="38" fill="#FFFFFF" stroke="#B6BBC2" stroke-width="1.2" rx="5" />
<text x="118" y="429" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#8A919A" text-anchor="start">SA</text>
<text x="250" y="429" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="600" fill="#24272B" text-anchor="middle">JVM heap · GC</text>
<rect x="100" y="455" width="300" height="38" fill="#FFFFFF" stroke="#B6BBC2" stroke-width="1.2" rx="5" />
<text x="118" y="479" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#8A919A" text-anchor="start">SA</text>
<text x="250" y="479" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="600" fill="#24272B" text-anchor="middle">Client pool</text>
<rect x="100" y="505" width="300" height="38" fill="#FFFFFF" stroke="#B6BBC2" stroke-width="1.2" rx="5" />
<text x="118" y="529" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#8A919A" text-anchor="start">SA</text>
<text x="250" y="529" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="13" font-weight="600" fill="#24272B" text-anchor="middle">system resources</text>
<text x="250" y="575" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="450" fill="#667085" text-anchor="middle" font-style="italic">완료 결과를 main session으로 반환</text>
<rect x="520" y="245" width="370" height="160" fill="#FCFCFC" stroke="#555B63" stroke-width="1.6" rx="8" />
<text x="705" y="267" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#667085" text-anchor="middle" letter-spacing="1.1">&lt;&lt;streaming&gt;&gt;</text>
<text x="705" y="323" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">BACKGROUND BASH</text>
<text x="705" y="350" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">tail -f -</text>
<text x="705" y="375" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="450" fill="#667085" text-anchor="middle" font-style="italic">새 stdout 라인을 이벤트로 전달</text>
<rect x="520" y="435" width="370" height="160" fill="#FCFCFC" stroke="#555B63" stroke-width="1.6" rx="8" />
<text x="705" y="457" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#667085" text-anchor="middle" letter-spacing="1.1">&lt;&lt;polling&gt;&gt;</text>
<text x="705" y="513" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">BACKGROUND BASH</text>
<text x="705" y="540" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">until &lt;cond&gt;; do sleep N; done</text>
<text x="705" y="565" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="450" fill="#667085" text-anchor="middle" font-style="italic">조건 충족까지 주기적으로 확인</text>
<rect x="1010" y="245" width="340" height="350" fill="#FCFCFC" stroke="#555B63" stroke-width="1.6" rx="8" />
<text x="1180" y="267" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="10" font-weight="500" fill="#667085" text-anchor="middle" letter-spacing="1.1">&lt;&lt;built-in tool&gt;&gt;</text>
<text x="1180" y="418" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="17" font-weight="700" fill="#24272B" text-anchor="middle">MONITOR</text>
<text x="1180" y="445" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="12" font-weight="450" fill="#667085" text-anchor="middle">stdout 수신 · 이벤트 발생 시 알림</text>
<text x="1180" y="565" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="450" fill="#667085" text-anchor="middle" font-style="italic">main session으로 notification</text>
<path d="M 260 143 L 260 185 L 250 185 L 250 245" fill="none" stroke="#24272B" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-ink)" />
<rect x="178.8" y="165" width="62.4" height="20" fill="#FFFFFF" stroke="#C5C9CE" stroke-width="1" rx="2" />
<text x="210" y="178" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#24272B" text-anchor="middle">dispatch</text>
<path d="M 290 245 L 290 205 L 300 205 L 300 143" fill="none" stroke="#667085" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="5 4" marker-end="url(#arrow-muted)" />
<rect x="298.1" y="190" width="87.8" height="20" fill="#FFFFFF" stroke="#C5C9CE" stroke-width="1" rx="2" />
<text x="342" y="203" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#667085" text-anchor="middle">완료 결과 × N</text>
<path d="M 705 143 L 705 245" fill="none" stroke="#24272B" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-ink)" />
<rect x="670.5" y="185" width="69" height="20" fill="#FFFFFF" stroke="#C5C9CE" stroke-width="1" rx="2" />
<text x="705" y="198" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#24272B" text-anchor="middle">spawn × 2</text>
<path d="M 1180 143 L 1180 190 L 1180 190 L 1180 245" fill="none" stroke="#24272B" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-ink)" />
<rect x="1100.8" y="165" width="68.4" height="20" fill="#FFFFFF" stroke="#C5C9CE" stroke-width="1" rx="2" />
<text x="1135" y="178" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#24272B" text-anchor="middle">subscribe</text>
<path d="M 1220 245 L 1220 205 L 1220 205 L 1220 143" fill="none" stroke="#667085" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="5 4" marker-end="url(#arrow-muted)" />
<rect x="1231.7" y="190" width="86.6" height="20" fill="#FFFFFF" stroke="#C5C9CE" stroke-width="1" rx="2" />
<text x="1275" y="203" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#667085" text-anchor="middle">notification</text>
<path d="M 890 320 L 1010 320" fill="none" stroke="#24272B" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-ink)" />
<rect x="924.9" y="297" width="50.3" height="20" fill="#FFFFFF" stroke="#C5C9CE" stroke-width="1" rx="2" />
<text x="950" y="310" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#24272B" text-anchor="middle">stdout</text>
<path d="M 890 510 L 1010 510" fill="none" stroke="#24272B" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" marker-end="url(#arrow-ink)" />
<rect x="924.9" y="487" width="50.3" height="20" fill="#FFFFFF" stroke="#C5C9CE" stroke-width="1" rx="2" />
<text x="950" y="500" font-family='&quot;Noto Sans CJK KR&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif' font-size="11" font-weight="600" fill="#24272B" text-anchor="middle">stdout</text>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB