This commit is contained in:
IndyDevDan
2026-07-19 20:30:34 -05:00
commit 5852f2ed4f
59 changed files with 6056 additions and 0 deletions
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

+59
View File
@@ -0,0 +1,59 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 400" font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace" role="img" aria-label="Fable 5 architect and GPT-5.6 Sol builder fusing into one attributed result — AND, not OR">
<style>
.flow { fill: none; stroke-width: 2; stroke-dasharray: 6 10; stroke-linecap: round; animation: march 1.1s linear infinite; }
.flow-b { animation-delay: -0.55s; }
@keyframes march { to { stroke-dashoffset: -16; } }
.glow { animation: pulse 2.8s ease-in-out infinite; }
@keyframes pulse { 0%,100% { opacity: 0.15; } 50% { opacity: 0.55; } }
.breathe { animation: breathe 2.8s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes breathe { 0%,100% { transform: scale(1); } 50% { transform: scale(1.035); } }
@media (prefers-reduced-motion: reduce) { .flow, .flow-b, .glow, .breathe { animation: none; } }
</style>
<defs>
<marker id="arr-a" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M0,0 L10,5 L0,10 z" fill="#a78bfa"/>
</marker>
<marker id="arr-b" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M0,0 L10,5 L0,10 z" fill="#f0b429"/>
</marker>
</defs>
<rect x="0" y="0" width="900" height="400" rx="14" fill="#0d1117"/>
<rect x="0.75" y="0.75" width="898.5" height="398.5" rx="13.5" fill="none" stroke="#30363d" stroke-width="1.5"/>
<!-- title -->
<text x="450" y="48" text-anchor="middle" fill="#e6edf3" font-size="21" font-weight="700" letter-spacing="3">FUSE FRONTIER MODELS</text>
<text x="450" y="74" text-anchor="middle" fill="#8b949e" font-size="13">AND, not OR — combine compute instead of selecting it</text>
<!-- architect panel -->
<g>
<rect x="70" y="110" width="250" height="100" rx="10" fill="#161b22" stroke="#a78bfa" stroke-width="1.5"/>
<text x="95" y="143" fill="#a78bfa" font-size="16" font-weight="700">&#9670; ARCHITECT</text>
<text x="95" y="166" fill="#8b949e" font-size="12">anthropic/claude-fable-5</text>
<text x="95" y="190" fill="#e6edf3" font-size="12">plans &#183; fuses &#183; validates</text>
</g>
<!-- builder panel -->
<g>
<rect x="580" y="110" width="250" height="100" rx="10" fill="#161b22" stroke="#f0b429" stroke-width="1.5"/>
<text x="605" y="143" fill="#f0b429" font-size="16" font-weight="700">&#9650; BUILDER</text>
<text x="605" y="166" fill="#8b949e" font-size="12">openai/gpt-5.6-sol</text>
<text x="605" y="190" fill="#e6edf3" font-size="12">builds &#183; ships working diffs</text>
</g>
<!-- fusion streams -->
<path class="flow" d="M195,210 C195,256 340,244 408,266" stroke="#a78bfa" marker-end="url(#arr-a)"/>
<path class="flow flow-b" d="M705,210 C705,256 560,244 492,266" stroke="#f0b429" marker-end="url(#arr-b)"/>
<!-- fused result -->
<g class="breathe">
<rect class="glow" x="252" y="262" width="396" height="96" rx="12" fill="none" stroke="#22d3ee" stroke-width="6" opacity="0.2"/>
<rect x="260" y="270" width="380" height="80" rx="10" fill="#0f1a1e" stroke="#22d3ee" stroke-width="1.5"/>
<text x="450" y="303" text-anchor="middle" fill="#22d3ee" font-size="16" font-weight="700">&#10697; FUSED RESULT</text>
<text x="450" y="328" text-anchor="middle" fill="#8b949e" font-size="10">[ARCHITECT]/[BUILDER] attribution &#183; consensus &amp; divergence</text>
</g>
<!-- footer tag -->
<text x="450" y="386" text-anchor="middle" fill="#484f58" font-size="11">fusion-harness &#183; a Pi extension for two-model agentic engineering</text>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

+71
View File
@@ -0,0 +1,71 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 840 340" font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace" role="img" aria-label="Three commands: /opinion compares two agents side by side, /fusion merges three agents with attribution, /auto-validate runs a gate-first loop">
<rect x="0" y="0" width="840" height="340" rx="14" fill="#0d1117"/>
<rect x="0.75" y="0.75" width="838.5" height="338.5" rx="13.5" fill="none" stroke="#30363d" stroke-width="1.5"/>
<text x="420" y="42" text-anchor="middle" fill="#e6edf3" font-size="16" font-weight="700" letter-spacing="2">ONE EXTENSION &#183; THREE COMMANDS</text>
<!-- /opinion -->
<g>
<rect x="40" y="66" width="240" height="230" rx="10" fill="#161b22" stroke="#30363d" stroke-width="1.5"/>
<text x="60" y="98" fill="#e6edf3" font-size="15" font-weight="700">/opinion</text>
<rect x="60" y="118" width="90" height="70" rx="8" fill="#0d1117" stroke="#a78bfa" stroke-width="1.25"/>
<text x="105" y="148" text-anchor="middle" fill="#a78bfa" font-size="15" font-weight="700">&#9670;</text>
<text x="105" y="170" text-anchor="middle" fill="#8b949e" font-size="10">answer</text>
<rect x="170" y="118" width="90" height="70" rx="8" fill="#0d1117" stroke="#f0b429" stroke-width="1.25"/>
<text x="215" y="148" text-anchor="middle" fill="#f0b429" font-size="15" font-weight="700">&#9650;</text>
<text x="215" y="170" text-anchor="middle" fill="#8b949e" font-size="10">answer</text>
<rect x="60" y="202" width="200" height="18" rx="4" fill="#0d1117" stroke="#30363d"/>
<text x="160" y="215" text-anchor="middle" fill="#8b949e" font-size="10">model &#183; latency &#183; tokens &#183; cost</text>
<text x="160" y="252" text-anchor="middle" fill="#e6edf3" font-size="11">2 agents &#183; independent answers</text>
<text x="160" y="272" text-anchor="middle" fill="#8b949e" font-size="11">a pure side-by-side A/B read</text>
</g>
<!-- /fusion -->
<g>
<rect x="300" y="66" width="240" height="230" rx="10" fill="#161b22" stroke="#22d3ee" stroke-width="1.5"/>
<text x="320" y="98" fill="#e6edf3" font-size="15" font-weight="700">/fusion</text>
<rect x="320" y="118" width="80" height="48" rx="8" fill="#0d1117" stroke="#a78bfa" stroke-width="1.25"/>
<text x="360" y="147" text-anchor="middle" fill="#a78bfa" font-size="14" font-weight="700">&#9670;</text>
<rect x="440" y="118" width="80" height="48" rx="8" fill="#0d1117" stroke="#f0b429" stroke-width="1.25"/>
<text x="480" y="147" text-anchor="middle" fill="#f0b429" font-size="14" font-weight="700">&#9650;</text>
<path d="M360,166 C360,190 396,196 410,204" fill="none" stroke="#a78bfa" stroke-width="1.75"/>
<path d="M480,166 C480,190 444,196 430,204" fill="none" stroke="#f0b429" stroke-width="1.75"/>
<rect x="345" y="200" width="150" height="42" rx="8" fill="#0f1a1e" stroke="#22d3ee" stroke-width="1.5"/>
<text x="420" y="220" text-anchor="middle" fill="#22d3ee" font-size="13" font-weight="700">&#10697; FUSION</text>
<text x="420" y="235" text-anchor="middle" fill="#8b949e" font-size="9">fresh session &#183; full tools</text>
<text x="420" y="266" text-anchor="middle" fill="#e6edf3" font-size="11">3 agents &#183; critical merge</text>
<text x="420" y="284" text-anchor="middle" fill="#8b949e" font-size="11">[ARCHITECT]/[BUILDER] attribution</text>
</g>
<!-- /auto-validate -->
<g>
<rect x="560" y="66" width="240" height="230" rx="10" fill="#161b22" stroke="#3fb950" stroke-width="1.5"/>
<text x="580" y="98" fill="#e6edf3" font-size="15" font-weight="700">/auto-validate</text>
<rect x="580" y="122" width="94" height="48" rx="8" fill="#0d1117" stroke="#3fb950" stroke-width="1.25"/>
<text x="627" y="142" text-anchor="middle" fill="#3fb950" font-size="12" font-weight="700">&#10003; GATE</text>
<text x="627" y="158" text-anchor="middle" fill="#8b949e" font-size="9">designed first</text>
<line x1="674" y1="146" x2="694" y2="146" stroke="#8b949e" stroke-width="1.75"/>
<path d="M694,146 l-6,-4 v8 z" fill="#8b949e"/>
<rect x="696" y="122" width="84" height="48" rx="8" fill="#0d1117" stroke="#f0b429" stroke-width="1.25"/>
<text x="738" y="142" text-anchor="middle" fill="#f0b429" font-size="12" font-weight="700">&#9650; BUILD</text>
<text x="738" y="158" text-anchor="middle" fill="#8b949e" font-size="9">gate immutable</text>
<path d="M738,170 C738,208 627,208 627,174" fill="none" stroke="#f85149" stroke-width="1.75" stroke-dasharray="5 5"/>
<path d="M627,174 l-4,7 h8 z" fill="#f85149"/>
<text x="683" y="222" text-anchor="middle" fill="#f85149" font-size="10">FAIL feeds back verbatim</text>
<text x="680" y="252" text-anchor="middle" fill="#e6edf3" font-size="11">red &#8594; green, or a loud halt</text>
<text x="680" y="270" text-anchor="middle" fill="#8b949e" font-size="11">the builder never grades</text>
<text x="680" y="286" text-anchor="middle" fill="#8b949e" font-size="11">its own homework</text>
</g>
<text x="420" y="322" text-anchor="middle" fill="#484f58" font-size="11">every agent: a clean-room pi subprocess &#183; artifacts in /tmp/fusion-harness-* &#183; never inside the repo</text>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

+59
View File
@@ -0,0 +1,59 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 840 380" font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace" role="img" aria-label="The Pi host runs on the builder model and slash commands fork it; the architect stays a separate persistent brain pinned per project and per model">
<rect x="0" y="0" width="840" height="380" rx="14" fill="#0d1117"/>
<rect x="0.75" y="0.75" width="838.5" height="378.5" rx="13.5" fill="none" stroke="#30363d" stroke-width="1.5"/>
<text x="420" y="40" text-anchor="middle" fill="#e6edf3" font-size="16" font-weight="700" letter-spacing="2">RAW CHAT IS THE BUILDER</text>
<!-- host panel -->
<g>
<rect x="40" y="66" width="440" height="128" rx="10" fill="#161b22" stroke="#f0b429" stroke-width="1.5"/>
<text x="62" y="96" fill="#f0b429" font-size="14" font-weight="700">&#9650; PI HOST &#183; BUILDER MODEL</text>
<text x="62" y="118" fill="#8b949e" font-size="11">openai/gpt-5.6-sol &#183; your skills &amp; context load here</text>
<rect x="62" y="132" width="396" height="44" rx="7" fill="#0d1117" stroke="#30363d"/>
<text x="76" y="152" fill="#e6edf3" font-size="11">&gt; plain messages = the untouched native pi experience</text>
<text x="76" y="168" fill="#8b949e" font-size="11">raw chat and slash commands are the same agent</text>
</g>
<!-- fork arrows -->
<path d="M170,194 C170,224 150,232 144,252" fill="none" stroke="#f0b429" stroke-width="1.75"/>
<path d="M144,252 l-2,-8 l7,3 z" fill="#f0b429"/>
<path d="M350,194 C350,224 370,232 376,252" fill="none" stroke="#f0b429" stroke-width="1.75"/>
<path d="M376,252 l-5,-6 l8,-1 z" fill="#f0b429"/>
<text x="260" y="232" text-anchor="middle" fill="#f0b429" font-size="11" font-weight="700">fork</text>
<!-- builder children -->
<g>
<rect x="52" y="254" width="180" height="72" rx="9" fill="#0d1117" stroke="#f0b429" stroke-width="1.25"/>
<text x="142" y="280" text-anchor="middle" fill="#f0b429" font-size="12" font-weight="700">&#9650; builder child</text>
<text x="142" y="298" text-anchor="middle" fill="#8b949e" font-size="10">inherits raw chat + panels</text>
<text x="142" y="313" text-anchor="middle" fill="#8b949e" font-size="10">clean-room spawn</text>
</g>
<g>
<rect x="288" y="254" width="180" height="72" rx="9" fill="#0d1117" stroke="#f0b429" stroke-width="1.25"/>
<text x="378" y="280" text-anchor="middle" fill="#f0b429" font-size="12" font-weight="700">&#9650; builder child</text>
<text x="378" y="298" text-anchor="middle" fill="#8b949e" font-size="10">auto-validate rounds</text>
<text x="378" y="313" text-anchor="middle" fill="#8b949e" font-size="10">resume the same fork</text>
</g>
<!-- divider -->
<line x1="520" y1="60" x2="520" y2="336" stroke="#30363d" stroke-width="1.5" stroke-dasharray="4 6"/>
<!-- architect brain -->
<g>
<rect x="556" y="66" width="244" height="260" rx="10" fill="#161b22" stroke="#a78bfa" stroke-width="1.5"/>
<text x="678" y="98" text-anchor="middle" fill="#a78bfa" font-size="14" font-weight="700">&#9670; ARCHITECT</text>
<text x="678" y="120" text-anchor="middle" fill="#8b949e" font-size="11">anthropic/claude-fable-5</text>
<rect x="576" y="138" width="204" height="94" rx="7" fill="#0d1117" stroke="#30363d"/>
<text x="678" y="162" text-anchor="middle" fill="#e6edf3" font-size="11">separate persistent brain</text>
<text x="678" y="182" text-anchor="middle" fill="#8b949e" font-size="10">pinned per project + per model</text>
<text x="678" y="200" text-anchor="middle" fill="#8b949e" font-size="10">/tmp/fusion-harness-sessions/</text>
<text x="678" y="218" text-anchor="middle" fill="#8b949e" font-size="10">restart-proof &#183; /fh-reset wipes</text>
<text x="678" y="264" text-anchor="middle" fill="#e6edf3" font-size="11">never forks the host:</text>
<text x="678" y="284" text-anchor="middle" fill="#8b949e" font-size="10">an architect that inherited every</text>
<text x="678" y="300" text-anchor="middle" fill="#8b949e" font-size="10">builder assumption is just an echo</text>
</g>
<text x="420" y="360" text-anchor="middle" fill="#8b949e" font-size="12">two independent perspectives is the point of fusion</text>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

@@ -0,0 +1,86 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 440" font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace" role="img" aria-label="Auto-validation loop: validator designs the gate first, baseline must fail red, builder builds, the gate runs — pass ends the loop, fail feeds back verbatim until green or halt">
<style>
.flow { fill: none; stroke-width: 2; stroke-dasharray: 5 8; stroke-linecap: round; animation: march 1.1s linear infinite; }
@keyframes march { to { stroke-dashoffset: -13; } }
.lag1 { animation-delay: -0.3s; } .lag2 { animation-delay: -0.6s; } .lag3 { animation-delay: -0.9s; }
.blink-red { animation: blinkr 1.6s ease-in-out infinite; }
@keyframes blinkr { 0%,100% { fill: #f85149; opacity: 1; } 50% { opacity: 0.25; } }
.glow-green { animation: glowg 2.4s ease-in-out infinite; }
@keyframes glowg { 0%,100% { opacity: 0.15; } 50% { opacity: 0.6; } }
@media (prefers-reduced-motion: reduce) { .flow, .blink-red, .glow-green { animation: none; } }
</style>
<rect x="0" y="0" width="900" height="440" rx="14" fill="#0d1117"/>
<rect x="0.75" y="0.75" width="898.5" height="438.5" rx="13.5" fill="none" stroke="#30363d" stroke-width="1.5"/>
<text x="450" y="44" text-anchor="middle" fill="#e6edf3" font-size="16" font-weight="700" letter-spacing="2">THE AUTO-VALIDATION LOOP</text>
<text x="450" y="68" text-anchor="middle" fill="#8b949e" font-size="12">the gate is designed BEFORE the build &#183; red &#8594; green</text>
<!-- 1 validator designs gate -->
<g>
<rect x="40" y="100" width="180" height="96" rx="10" fill="#161b22" stroke="#3fb950" stroke-width="1.5"/>
<text x="56" y="126" fill="#3fb950" font-size="13" font-weight="700">1 &#10003; VALIDATOR</text>
<text x="56" y="148" fill="#e6edf3" font-size="11">designs gate.py</text>
<text x="56" y="166" fill="#8b949e" font-size="10">read-only &#183; uv / PEP 723</text>
<text x="56" y="182" fill="#8b949e" font-size="9.5">every requirement &#8594; a check</text>
</g>
<path class="flow" d="M220,148 L258,148" stroke="#8b949e"/>
<path d="M262,148 l-7,-4.5 v9 z" fill="#8b949e"/>
<!-- 2 baseline red -->
<g>
<rect x="264" y="100" width="180" height="96" rx="10" fill="#161b22" stroke="#f85149" stroke-width="1.5"/>
<circle class="blink-red" cx="416" cy="122" r="6"/>
<text x="280" y="126" fill="#f85149" font-size="13" font-weight="700">2 BASELINE RUN</text>
<text x="280" y="148" fill="#e6edf3" font-size="11">must fail RED</text>
<text x="280" y="166" fill="#8b949e" font-size="10">a passing baseline means</text>
<text x="280" y="182" fill="#8b949e" font-size="10">a weak gate — said loudly</text>
</g>
<path class="flow lag1" d="M444,148 L482,148" stroke="#8b949e"/>
<path d="M486,148 l-7,-4.5 v9 z" fill="#8b949e"/>
<!-- 3 builder builds -->
<g>
<rect x="488" y="100" width="180" height="96" rx="10" fill="#161b22" stroke="#f0b429" stroke-width="1.5"/>
<text x="504" y="126" fill="#f0b429" font-size="13" font-weight="700">3 &#9650; BUILDER</text>
<text x="504" y="148" fill="#e6edf3" font-size="11">builds with full tools</text>
<text x="504" y="166" fill="#8b949e" font-size="10">gate visible but immutable</text>
<text x="504" y="182" fill="#8b949e" font-size="10">persistent session</text>
</g>
<path class="flow lag2" d="M668,148 L706,148" stroke="#8b949e"/>
<path d="M710,148 l-7,-4.5 v9 z" fill="#8b949e"/>
<!-- 4 gate runs -->
<g>
<rect x="712" y="100" width="150" height="96" rx="10" fill="#161b22" stroke="#e6edf3" stroke-width="1.5"/>
<text x="728" y="126" fill="#e6edf3" font-size="13" font-weight="700">4 GATE RUNS</text>
<text x="728" y="148" fill="#8b949e" font-size="11">uv run gate.py</text>
<text x="728" y="166" fill="#8b949e" font-size="10">exit 0 iff what you</text>
<text x="728" y="182" fill="#8b949e" font-size="10">asked for got built</text>
</g>
<!-- PASS branch -->
<path class="flow lag3" d="M810,196 L810,254" stroke="#3fb950"/>
<path d="M810,258 l-4.5,-7 h9 z" fill="#3fb950"/>
<g>
<rect class="glow-green" x="694" y="256" width="180" height="54" rx="27" fill="none" stroke="#3fb950" stroke-width="5" opacity="0.2"/>
<rect x="700" y="262" width="168" height="42" rx="21" fill="#0f1a14" stroke="#3fb950" stroke-width="1.5"/>
<text x="784" y="288" text-anchor="middle" fill="#3fb950" font-size="13" font-weight="700">PASS &#183; loop ends &#10003;</text>
</g>
<!-- FAIL feedback loop -->
<path class="flow" d="M740,196 C740,330 578,336 578,204" stroke="#f85149"/>
<path d="M578,200 l-4.5,7 h9 z" fill="#f85149"/>
<text x="560" y="330" text-anchor="middle" fill="#f85149" font-size="12" font-weight="700">FAIL lines feed back verbatim</text>
<text x="560" y="348" text-anchor="middle" fill="#8b949e" font-size="10">expected X &#183; found Y &#183; at PATH &#183; fix</text>
<!-- escalation + halt notes -->
<rect x="40" y="236" width="380" height="130" rx="10" fill="#161b22" stroke="#30363d" stroke-width="1.25"/>
<text x="60" y="264" fill="#e6edf3" font-size="12" font-weight="700">escalation ladder</text>
<text x="60" y="290" fill="#8b949e" font-size="10.5">&#8226; failure N (default 3): VALIDATOR triages the work —</text>
<text x="72" y="306" fill="#8b949e" font-size="11">its brief rides with the next correction</text>
<text x="60" y="326" fill="#8b949e" font-size="11">&#8226; GATE DEFECT diagnosed: one gate repair, free re-run</text>
<text x="60" y="346" fill="#8b949e" font-size="10">&#8226; --max-validations (default 5): loud halt, never silent</text>
<text x="450" y="416" text-anchor="middle" fill="#484f58" font-size="11">the builder never grades its own homework &#183; the grader never touches the code</text>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

+61
View File
@@ -0,0 +1,61 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 440" font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace" role="img" aria-label="Two-column terminal DX: architect column left, builder column right, a full-width fusion row, and an aligned two-cell footer with thinking level and context bars">
<rect x="0" y="0" width="800" height="440" rx="14" fill="#0d1117"/>
<rect x="0.75" y="0.75" width="798.5" height="438.5" rx="13.5" fill="none" stroke="#30363d" stroke-width="1.5"/>
<!-- terminal window -->
<rect x="30" y="26" width="740" height="366" rx="10" fill="#010409" stroke="#30363d" stroke-width="1.5"/>
<circle cx="52" cy="46" r="5" fill="#f85149"/>
<circle cx="70" cy="46" r="5" fill="#f0b429"/>
<circle cx="88" cy="46" r="5" fill="#3fb950"/>
<text x="400" y="50" text-anchor="middle" fill="#484f58" font-size="11">pi &#183; fusion-harness</text>
<!-- column headers -->
<text x="50" y="86" fill="#a78bfa" font-size="12" font-weight="700">&#9670; ARCHITECT &#183; claude-fable-5</text>
<text x="410" y="86" fill="#f0b429" font-size="12" font-weight="700">&#9650; BUILDER &#183; gpt-5.6-sol</text>
<!-- column divider -->
<line x1="400" y1="96" x2="400" y2="226" stroke="#21262d" stroke-width="1.5"/>
<!-- architect column: tool lines + text bars -->
<g>
<rect x="50" y="100" width="8" height="8" rx="2" fill="#a78bfa"/>
<rect x="66" y="101" width="200" height="6" rx="3" fill="#30363d"/>
<rect x="50" y="118" width="300" height="6" rx="3" fill="#21262d"/>
<rect x="50" y="134" width="270" height="6" rx="3" fill="#21262d"/>
<rect x="50" y="150" width="310" height="6" rx="3" fill="#21262d"/>
<rect x="50" y="170" width="8" height="8" rx="2" fill="#a78bfa"/>
<rect x="66" y="171" width="160" height="6" rx="3" fill="#30363d"/>
<rect x="50" y="188" width="290" height="6" rx="3" fill="#21262d"/>
<rect x="50" y="204" width="230" height="6" rx="3" fill="#21262d"/>
</g>
<!-- builder column: tool lines + text bars -->
<g>
<rect x="410" y="100" width="8" height="8" rx="2" fill="#f0b429"/>
<rect x="426" y="101" width="230" height="6" rx="3" fill="#30363d"/>
<rect x="410" y="118" width="310" height="6" rx="3" fill="#21262d"/>
<rect x="410" y="134" width="250" height="6" rx="3" fill="#21262d"/>
<rect x="410" y="152" width="8" height="8" rx="2" fill="#f0b429"/>
<rect x="426" y="153" width="180" height="6" rx="3" fill="#30363d"/>
<rect x="410" y="170" width="330" height="6" rx="3" fill="#21262d"/>
<rect x="410" y="188" width="300" height="6" rx="3" fill="#21262d"/>
<rect x="410" y="204" width="190" height="6" rx="3" fill="#21262d"/>
</g>
<!-- full-width fusion row -->
<rect x="50" y="240" width="700" height="74" rx="8" fill="#0f1a1e" stroke="#22d3ee" stroke-width="1.5"/>
<text x="66" y="264" fill="#22d3ee" font-size="12" font-weight="700">&#10697; FUSION &#183; full-width row</text>
<rect x="66" y="278" width="560" height="6" rx="3" fill="#173b44"/>
<rect x="66" y="294" width="640" height="6" rx="3" fill="#173b44"/>
<!-- scrollback note -->
<text x="400" y="336" text-anchor="middle" fill="#484f58" font-size="10">panels render full-height into scrollback &#8212; no lines hidden behind a toggle</text>
<!-- footer: two aligned cells -->
<rect x="30" y="352" width="740" height="40" rx="0" fill="#0d1117"/>
<line x1="30" y1="352" x2="770" y2="352" stroke="#30363d" stroke-width="1.5"/>
<text x="50" y="377" fill="#a78bfa" font-size="12">&#9670; ARCHITECT | fable-5 (med) | [&#9608;&#9608;--------] 12%</text>
<text x="410" y="377" fill="#f0b429" font-size="12">&#9650; BUILDER | gpt-5.6-sol (med) | [&#9608;&#9608;&#9608;-------] 31%</text>
<text x="400" y="422" text-anchor="middle" fill="#8b949e" font-size="12">ARCHITECT-family left &#183; BUILDER right &#8212; live widget, final panels, footer, all aligned</text>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB