This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="1180" viewBox="0 0 900 1180" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Контрактная поверхность платформенного API</title>
|
||||
<desc id="desc">Вертикальная схема показывает путь от сигнала потребителя к именованной операции, поверхности запроса и ответа, гарантии, документированному escape hatch и compatibility gate. Скрытый обход останавливается.</desc>
|
||||
<defs>
|
||||
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#246B5A"/>
|
||||
</marker>
|
||||
<marker id="stopArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#B7443E"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="900" height="1180" fill="#F7FAFC"/>
|
||||
<rect x="34" y="28" width="832" height="92" rx="20" fill="#173B4D"/>
|
||||
<text x="70" y="71" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="34" font-weight="700">Контрактная поверхность</text>
|
||||
<text x="70" y="101" fill="#C8E8E2" font-family="Arial, sans-serif" font-size="24">ожидание имеет имя, версию и предел</text>
|
||||
|
||||
<rect x="78" y="156" width="744" height="116" rx="18" fill="#EAF4F1" stroke="#246B5A" stroke-width="3"/>
|
||||
<text x="112" y="202" fill="#173B4D" font-family="Arial, sans-serif" font-size="30" font-weight="700">1. Сигнал consumer</text>
|
||||
<text x="112" y="238" fill="#315366" font-family="Arial, sans-serif" font-size="25">Нужен state? Нужен raw envelope? Назвать решение.</text>
|
||||
<path d="M450 272 L450 314" stroke="#246B5A" stroke-width="5" marker-end="url(#arrow)"/>
|
||||
|
||||
<rect x="78" y="330" width="744" height="116" rx="18" fill="#FFF6DD" stroke="#A66E12" stroke-width="3"/>
|
||||
<text x="112" y="376" fill="#5B4210" font-family="Arial, sans-serif" font-size="30" font-weight="700">2. Public contract</text>
|
||||
<text x="112" y="412" fill="#5B4210" font-family="Arial, sans-serif" font-size="25">readFixedRecord · family read-v1 · version 1.3.0</text>
|
||||
<path d="M450 446 L450 488" stroke="#246B5A" stroke-width="5" marker-end="url(#arrow)"/>
|
||||
|
||||
<rect x="52" y="508" width="246" height="154" rx="18" fill="#FFFFFF" stroke="#6F8DA0" stroke-width="3"/>
|
||||
<text x="78" y="555" fill="#173B4D" font-family="Arial, sans-serif" font-size="29" font-weight="700">Request</text>
|
||||
<text x="78" y="593" fill="#315366" font-family="Arial, sans-serif" font-size="25">required:</text>
|
||||
<text x="78" y="626" fill="#315366" font-family="Arial, sans-serif" font-size="25">recordId</text>
|
||||
|
||||
<rect x="327" y="508" width="246" height="154" rx="18" fill="#FFFFFF" stroke="#6F8DA0" stroke-width="3"/>
|
||||
<text x="353" y="555" fill="#173B4D" font-family="Arial, sans-serif" font-size="29" font-weight="700">Response</text>
|
||||
<text x="353" y="593" fill="#315366" font-family="Arial, sans-serif" font-size="25">required:</text>
|
||||
<text x="353" y="626" fill="#315366" font-family="Arial, sans-serif" font-size="25">id · state</text>
|
||||
|
||||
<rect x="602" y="508" width="246" height="154" rx="18" fill="#FFFFFF" stroke="#6F8DA0" stroke-width="3"/>
|
||||
<text x="628" y="555" fill="#173B4D" font-family="Arial, sans-serif" font-size="29" font-weight="700">Errors</text>
|
||||
<text x="628" y="593" fill="#315366" font-family="Arial, sans-serif" font-size="25">listed:</text>
|
||||
<text x="628" y="626" fill="#315366" font-family="Arial, sans-serif" font-size="25">fixed-not-found</text>
|
||||
<path d="M450 662 L450 704" stroke="#246B5A" stroke-width="5" marker-end="url(#arrow)"/>
|
||||
|
||||
<rect x="78" y="722" width="744" height="108" rx="18" fill="#E9F0FF" stroke="#506FB5" stroke-width="3"/>
|
||||
<text x="112" y="766" fill="#173B4D" font-family="Arial, sans-serif" font-size="30" font-weight="700">3. Named guarantee</text>
|
||||
<text x="112" y="802" fill="#315366" font-family="Arial, sans-serif" font-size="25">state — fixed symbol; order and latency are not promised</text>
|
||||
<path d="M450 830 L450 872" stroke="#246B5A" stroke-width="5" marker-end="url(#arrow)"/>
|
||||
|
||||
<rect x="78" y="890" width="744" height="126" rx="18" fill="#EAF4F1" stroke="#246B5A" stroke-width="3"/>
|
||||
<text x="112" y="936" fill="#173B4D" font-family="Arial, sans-serif" font-size="30" font-weight="700">4. Documented escape hatch</text>
|
||||
<text x="112" y="972" fill="#315366" font-family="Arial, sans-serif" font-size="25">raw-envelope-v1: one representation, no hidden promises</text>
|
||||
<path d="M450 1016 L450 1054" stroke="#246B5A" stroke-width="5" marker-end="url(#arrow)"/>
|
||||
|
||||
<rect x="78" y="1062" width="744" height="88" rx="18" fill="#173B4D"/>
|
||||
<text x="112" y="1098" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="27" font-weight="700">5. Gate: family + version + fields</text>
|
||||
<text x="112" y="1130" fill="#C8E8E2" font-family="Arial, sans-serif" font-size="26">→ synthetic hand-off</text>
|
||||
|
||||
<path d="M78 214 L34 214 L34 913 L52 913" stroke="#B7443E" stroke-width="5" stroke-dasharray="11 10" fill="none" marker-end="url(#stopArrow)"/>
|
||||
<rect x="56" y="840" width="238" height="72" rx="14" fill="#FFF0EE" stroke="#B7443E" stroke-width="3"/>
|
||||
<text x="78" y="871" fill="#8B2C27" font-family="Arial, sans-serif" font-size="23" font-weight="700">secret flag</text>
|
||||
<text x="78" y="899" fill="#8B2C27" font-family="Arial, sans-serif" font-size="22">STOP: no boundary</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.5 KiB |
Reference in New Issue
Block a user