revise January 2026 platform API articles
Build and deploy / deploy (push) Successful in 18s

This commit is contained in:
2026-07-31 18:49:24 +03:00
parent 50d783d0d5
commit fd381cd2f5
7 changed files with 898 additions and 1 deletions
@@ -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