This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="720" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Решение для escape hatch командного шаблона</title>
|
||||
<desc id="desc">Запрос сначала сравнивается с базовым контрактом. Полное совпадение ведёт в golden path, одно именованное расширение с владельцем и rollback ведёт в review, а изменение инварианта останавливает шаблон.</desc>
|
||||
<rect width="1200" height="720" fill="#111827"/>
|
||||
<rect x="48" y="40" width="1104" height="84" rx="20" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
|
||||
<text x="82" y="80" fill="#f8fafc" font-family="Arial, sans-serif" font-size="31" font-weight="700">Escape hatch: расширение имеет границу, owner и обратный ход</text>
|
||||
<text x="82" y="106" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="17">Свободный параметр создаёт fork; контролируемая развилка делает различие видимым до генерации.</text>
|
||||
|
||||
<rect x="68" y="258" width="242" height="142" rx="18" fill="#172554" stroke="#60a5fa" stroke-width="3"/>
|
||||
<text x="96" y="300" fill="#dbeafe" font-family="Arial, sans-serif" font-size="23" font-weight="700">Запрос</text>
|
||||
<text x="96" y="334" fill="#eff6ff" font-family="Arial, sans-serif" font-size="17">type, owner, runtime,</text>
|
||||
<text x="96" y="360" fill="#eff6ff" font-family="Arial, sans-serif" font-size="17">data class, policy</text>
|
||||
<text x="96" y="386" fill="#93c5fd" font-family="Arial, sans-serif" font-size="16">не произвольный объект</text>
|
||||
<path d="M310 329 H412" fill="none" stroke="#60a5fa" stroke-width="5"/>
|
||||
<path d="M402 317 L426 329 L402 341" fill="none" stroke="#60a5fa" stroke-width="5"/>
|
||||
|
||||
<path d="M532 178 L662 329 L532 480 L402 329 Z" fill="#312e81" stroke="#a5b4fc" stroke-width="4"/>
|
||||
<text x="468" y="312" fill="#eef2ff" font-family="Arial, sans-serif" font-size="22" font-weight="700">Сверка с</text>
|
||||
<text x="454" y="342" fill="#eef2ff" font-family="Arial, sans-serif" font-size="22" font-weight="700">base contract</text>
|
||||
<text x="465" y="374" fill="#c7d2fe" font-family="Arial, sans-serif" font-size="16">invariants не меняются?</text>
|
||||
|
||||
<path d="M662 329 H730 V208 H778" fill="none" stroke="#4ade80" stroke-width="5"/>
|
||||
<path d="M768 196 L792 208 L768 220" fill="none" stroke="#4ade80" stroke-width="5"/>
|
||||
<path d="M662 329 H730" fill="none" stroke="#fbbf24" stroke-width="5"/>
|
||||
<path d="M720 317 L744 329 L720 341" fill="none" stroke="#fbbf24" stroke-width="5"/>
|
||||
<path d="M662 329 H730 V510 H778" fill="none" stroke="#fb7185" stroke-width="5"/>
|
||||
<path d="M768 498 L792 510 L768 522" fill="none" stroke="#fb7185" stroke-width="5"/>
|
||||
|
||||
<rect x="792" y="128" width="338" height="160" rx="18" fill="#052e16" stroke="#4ade80" stroke-width="3"/>
|
||||
<text x="822" y="170" fill="#dcfce7" font-family="Arial, sans-serif" font-size="23" font-weight="700">1. Golden path</text>
|
||||
<text x="822" y="204" fill="#d1fae5" font-family="Arial, sans-serif" font-size="17">Все base facts совпали</text>
|
||||
<text x="822" y="232" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="16">Действие: draft + human review</text>
|
||||
<text x="822" y="258" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="16">Rollback: убрать draft</text>
|
||||
|
||||
<rect x="792" y="250" width="338" height="160" rx="18" fill="#422006" stroke="#fbbf24" stroke-width="3"/>
|
||||
<text x="822" y="292" fill="#fef3c7" font-family="Arial, sans-serif" font-size="23" font-weight="700">2. Named extension</text>
|
||||
<text x="822" y="326" fill="#fde68a" font-family="Arial, sans-serif" font-size="17">Один adapter, owner известен</text>
|
||||
<text x="822" y="354" fill="#fde68a" font-family="Arial, sans-serif" font-size="16">Boundary: base policy без замены</text>
|
||||
<text x="822" y="380" fill="#fde68a" font-family="Arial, sans-serif" font-size="16">Действие: extension review</text>
|
||||
|
||||
<rect x="792" y="454" width="338" height="160" rx="18" fill="#4c0519" stroke="#fb7185" stroke-width="3"/>
|
||||
<text x="822" y="496" fill="#ffe4e6" font-family="Arial, sans-serif" font-size="23" font-weight="700">3. Decline template</text>
|
||||
<text x="822" y="530" fill="#fecdd3" font-family="Arial, sans-serif" font-size="17">Новый owner, runtime или policy</text>
|
||||
<text x="822" y="558" fill="#fecdd3" font-family="Arial, sans-serif" font-size="16">Не подгонять через checkbox</text>
|
||||
<text x="822" y="584" fill="#fecdd3" font-family="Arial, sans-serif" font-size="16">Действие: design path</text>
|
||||
|
||||
<text x="68" y="669" fill="#94a3b8" font-family="Arial, sans-serif" font-size="16">Ветка extension не даёт право менять base runtime, ownership, data class или delivery policy.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
Reference in New Issue
Block a user